Compare commits

..

No commits in common. 'master' and 'liweidong' have entirely different histories.

  1. 33
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/CalculateCoatingMaterialProcessor.java
  2. 30
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/produce/ReworkNoProcessProcessor.java
  3. 11
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IOrderClient.java
  4. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/feign/IDisTaskingClient.java
  5. 55
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java
  6. 34
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java
  7. 3
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/dto/ReworkProcessDTO.java
  8. 115
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/MesRbRedoVO.java
  9. 185
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/PpmReportDetailModelVO.java
  10. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/CraftAbilityController.java
  11. 14
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/WorkTankController.java
  12. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/excel/WorkTankExcel.java
  13. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/ICraftAbilityService.java
  14. 33
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/CraftAbilityServiceImpl.java
  15. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/CertificateMaintenanceMapper.xml
  16. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/EquipmentMaintenanceMapper.xml
  17. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/mapper/PostHandleMapper.xml
  18. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/jobtransfer/service/impl/PostHandleServiceImpl.java
  19. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java
  20. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/OrderClient.java
  21. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java
  22. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml
  23. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  24. 65
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  25. 75
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/ReworkProcessController.java
  26. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/feign/DisTaskingClient.java
  27. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.java
  28. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderMapper.xml
  29. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPdaSaveService.java
  30. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  31. 304
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PdaSaveServiceImpl.java
  32. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  33. BIN
      blade-service/blade-desk/src/main/resources/Excel/QA/作业槽.xls
  34. BIN
      blade-service/blade-desk/src/main/resources/Excel/QA/分派规则维护.xls
  35. 34
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java
  36. 11
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java
  37. 72
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml
  38. 5
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml
  39. 17
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java
  40. 112
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java
  41. 2
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java
  42. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkOrderController.java
  43. 2
      blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/WorkPlanController.java

@ -1,33 +0,0 @@
package org.springblade.job.processor.dashboard;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.order.feign.IOrderClient;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
import java.util.concurrent.CompletableFuture;
/**
* 工艺模块-返工任务
* @author liweidong
*/
@Component
@Data
@Slf4j
public class CalculateCoatingMaterialProcessor implements BasicProcessor {
@Resource
private IOrderClient client;
@Override
public ProcessResult process(TaskContext context) throws Exception {
log.info("镀层物料需求任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()->client.calculateCoatingMaterial());
log.info("镀层物料需求任务结束");
return new ProcessResult(true);
}
}

@ -1,30 +0,0 @@
package org.springblade.job.processor.produce;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.produce.feign.IDisTaskingClient;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
/**
* 返工无工艺接收
*
* @author litao
*/
@Component
@Data
@Slf4j
public class ReworkNoProcessProcessor implements BasicProcessor {
@Resource
private IDisTaskingClient client;
@Override
public ProcessResult process(TaskContext context) throws Exception {
log.info("返工无工艺定时接收");
return new ProcessResult(client.receiveOrder());
}
}

@ -15,10 +15,9 @@ import org.springframework.web.bind.annotation.GetMapping;
)
public interface IOrderClient {
String API_PREFIX = "/feign/client/order/";
String API_PREFIX = "/feign/order/";
String SAVE_GLASS_CAKE = API_PREFIX + "/saveGlassCake";
String CALCULATE_COATING_MATERIAL = API_PREFIX + "/calculateCoatingMaterial";
/**
@ -30,12 +29,4 @@ public interface IOrderClient {
@GetMapping(SAVE_GLASS_CAKE)
Boolean saveGlassCake(YieldPlan yieldPlan);
/**
* 镀层物料需求
*
* @return
*/
@GetMapping(CALCULATE_COATING_MATERIAL)
void calculateCoatingMaterial();
}

@ -17,7 +17,6 @@ public interface IDisTaskingClient {
String API_PREFIX = "/feign/client/disTasking";
String SYNC_DIS_TASKING = API_PREFIX + "/syncDisTasking";
String RECEIVE_ORDER = API_PREFIX + "/receiveOrder";
/**
@ -27,9 +26,4 @@ public interface IDisTaskingClient {
@GetMapping(SYNC_DIS_TASKING)
boolean syncDisTasking();
/**
* 返工无工艺接收
*/
@GetMapping(RECEIVE_ORDER)
boolean receiveOrder();
}

@ -3,9 +3,6 @@ package org.springblade.erpdata.feign;
import org.springblade.common.constant.LauncherConstant;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import org.springframework.cloud.openfeign.FeignClient;
@ -34,12 +31,6 @@ public interface IErpDataProduceClient {
String CUSTODIAN = API_PREFIX + "/getCustodian";
String CHK_SJJD = API_PREFIX + "/chkSjjd";
String CHK_SHJH = API_PREFIX + "/chkShjh";
String REVIEW_FORM_MESS = API_PREFIX + "/reviewFormMess";
String LOAD_REWORK_PLAN = API_PREFIX + "/loadReworkPlan";
String LOAD_REWORK_PLAN_SIZE = API_PREFIX + "/loadReworkPlanSize";
String COMPLETE_ORDER = API_PREFIX + "/completeOrder";
String RECEIVE_ORDER = API_PREFIX + "/receiveOrder";
String LOAD_REWORK_NO_PROCESS = API_PREFIX + "/loadReworkNoProcess";
/**
* 缺件申报-通过零件号获取批次号
@ -64,7 +55,6 @@ public interface IErpDataProduceClient {
R<Integer> loadReworkOrderSize(@RequestParam(value = "reworkCode", required = false) String reworkCode,
@RequestParam(value = "partCode", required = false) String partCode,
@RequestParam(value = "batchNo", required = false) String batchNo);
/**
* 获取产品区域
*/
@ -94,49 +84,4 @@ public interface IErpDataProduceClient {
*/
@GetMapping(CHK_SHJH)
R<String> chkShjh(@RequestParam("woCode") String woCode, @RequestParam("ypCode") String ypCode, @RequestParam("partCode") String partCode, @RequestParam("productIdent") String productIdent, @RequestParam("makeQty") Double makeQty, @RequestParam("memo") String memo);
/**
* 查询erp审理单
*/
@GetMapping(REVIEW_FORM_MESS)
R<List<PpmReportDetailModelVO>> reviewFormMess(@RequestParam(value = "queryType") Boolean queryType,
@RequestParam(value = "reworkCode", required = false) String reworkCode,
@RequestParam(value = "partCode", required = false) String partCode,
@RequestParam(value = "batchNo", required = false) String batchNo);
/**
* 返工计划查询
*/
@GetMapping(LOAD_REWORK_PLAN)
R<List<MesRbRedoVO>> loadReworkPlan(@RequestParam(value = "reworkCode", required = false) String reworkCode,
@RequestParam(value = "partCode", required = false) String partCode,
@RequestParam(value = "batchNo", required = false) String batchNo,
@RequestParam(value = "current") Integer current,
@RequestParam(value = "size") Integer size);
/**
* 返工计划数量
*/
@GetMapping(LOAD_REWORK_PLAN_SIZE)
R<Integer> loadReworkPlanSize(@RequestParam(value = "reworkCode", required = false) String reworkCode,
@RequestParam(value = "partCode", required = false) String partCode,
@RequestParam(value = "batchNo", required = false) String batchNo);
/**
* 返工订单完成
*/
@GetMapping(COMPLETE_ORDER)
R<Boolean> completeOrder(@RequestParam(value = "redono") String redono, @RequestParam(value = "seqno") Integer seqno, @RequestParam(value = "prtno") String prtno, @RequestParam(value = "splcode") String splcode, @RequestParam(value = "amount") Double amount, @RequestParam(value = "bfqty") Integer bfqty, @RequestParam(value = "userName") String userName);
/**
* 返工无工艺
*/
@GetMapping(RECEIVE_ORDER)
R<Boolean> receiveOrder(@RequestParam(value = "redono") String redono, @RequestParam(value = "seqno") Integer seqno, @RequestParam(value = "prtno") String prtno, @RequestParam(value = "splcode") String splcode, @RequestParam(value = "amount") Double amount, @RequestParam(value = "reqqty") String reqqty, @RequestParam(value = "userName") String userName, @RequestParam(value = "reworkgyFlag") int reworkgyFlag);
/**
* 查询返工无工艺订单
*/
@GetMapping(LOAD_REWORK_NO_PROCESS)
R<List<MesRbRedoRoutDTO>> loadReworkNoProcess();
}

@ -1,9 +1,7 @@
package org.springblade.erpdata.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import org.springframework.stereotype.Component;
@ -59,34 +57,4 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient {
public R<String> chkShjh(String woCode, String ypCode, String partCode, String productIdent, Double makeQty, String memo) {
return R.fail("获取数据失败");
}
@Override
public R<List<PpmReportDetailModelVO>> reviewFormMess(Boolean queryType, String reworkCode, String partCode, String batchNo) {
return R.fail("获取数据失败");
}
@Override
public R<List<MesRbRedoVO>> loadReworkPlan(String reworkCode, String partCode, String batchNo, Integer current, Integer size) {
return R.fail("获取数据失败");
}
@Override
public R<Integer> loadReworkPlanSize(String reworkCode, String partCode, String batchNo) {
return R.fail("获取数据失败");
}
@Override
public R<Boolean> completeOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, Integer bfqty, String userName) {
return R.fail("获取数据失败");
}
@Override
public R<Boolean> receiveOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, String reqqty, String userName, int reworkgyFlag) {
return R.fail("获取数据失败");
}
@Override
public R<List<MesRbRedoRoutDTO>> loadReworkNoProcess() {
return R.fail("获取数据失败");
}
}

@ -22,7 +22,4 @@ public class ReworkProcessDTO {
private Query query;
@Schema(description = "查询类型")
private Boolean queryType;
}

@ -1,115 +0,0 @@
package org.springblade.erpdata.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 返工计划 视图实体类
*
* @author litao
*/
@Data
public class MesRbRedoVO {
/**
* 返修单号
*/
@Schema(description = "返修单号")
private String redono;
/**
* 发生单位
*/
@Schema(description = "发生单位")
private String usedept;
/**
* 物料号
*/
@Schema(description = "物料号")
private String prtno;
/**
* 数量
*/
@Schema(description = "数量")
private String amount;
/**
* 处理意见
*/
@Schema(description = "处理意见")
private String detail;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
/**
* 需求日期
*/
@Schema(description = "需求日期")
private String reqdate;
/**
* 批次号
*/
@Schema(description = "批次号")
private String splcode;
/**
* 生产标识
*/
@Schema(description = "生产标识")
private String prtlotno;
/**
* 审理员
*/
@Schema(description = "审理员")
private String cogncer;
/**
* 审理时间
*/
@Schema(description = "审理时间")
private String cogncdat;
/**
* 型号
*/
@Schema(description = "型号")
private String mtltmrk;
/**
* 承修部门
*/
@Schema(description = "承修部门")
private String prtmdept;
/**
* 完成时间
*/
@Schema(description = "完成时间")
private String udenddat;
/**
* 完成数量
*/
@Schema(description = "完成数量")
private String udtotqty;
/**
* 报废数
*/
@Schema(description = "报废数")
private String udwasqty;
/**
* 返工状态 0:等待1:进行2:完成
*/
@Schema(description = "返工状态 0:等待,1:进行,2:完成")
private Short redostatus;
/**
* 工艺路线生成人
*/
@Schema(description = "工艺路线生成人")
private String routgenman;
/**
* 工艺路线生成时间
*/
@Schema(description = "工艺路线生成时间")
private String routgendat;
/**
* 工艺路线
*/
@Schema(description = "工艺路线")
private String deptcode;
}

@ -1,185 +0,0 @@
package org.springblade.erpdata.pojo.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* erp审理单 视图实体类
*
* @author litao
*/
@Data
public class PpmReportDetailModelVO {
/**
* 班组
*/
@Schema(description = "班组")
private String tsName;
/**
* 审理单号
*/
@Schema(description = "审理单号")
private String sheetNo;
/**
* 审理单类型
*/
@Schema(description = "审理单类型")
private String billmodel;
/**
* 审理单状态
*/
@Schema(description = "审理单状态")
private String status;
/**
* 发生单位
*/
@Schema(description = "发生单位")
private String deptcode;
/**
* 物料号
*/
@Schema(description = "物料号")
private String prtno;
/**
* 物料名称
*/
@Schema(description = "物料名称")
private String name;
/**
* 型号
*/
@Schema(description = "型号")
private String type;
/**
* 质量等级
*/
@Schema(description = "质量等级")
private String qstandno;
/**
* 批次号
*/
@Schema(description = "批次号")
private String lotno;
/**
* 总数量
*/
@Schema(description = "总数量")
private String cntt;
/**
* 不合格数
*/
@Schema(description = "不合格数")
private String cntn;
/**
* 检验员
*/
@Schema(description = "检验员")
private String checker;
/**
* 检验日期
*/
@Schema(description = "检验日期")
private String checkdate;
/**
* 归档日期
*/
@Schema(description = "归档日期")
private String finishdate;
/**
* 责任部门
*/
@Schema(description = "责任部门")
private String layer1;
/**
* 审理单开始时间
*/
@Schema(description = "审理单开始时间")
private String judgestart;
/**
*
*/
@Schema(description = "")
private String opinion;
/**
* 审理级别
*/
@Schema(description = "审理级别")
private String userlevel;
/**
* 审理意见
*/
@Schema(description = "审理意见")
private String dispose;
/**
* 审理人
*/
@Schema(description = "审理人")
private String usercode;
/**
* 返修数
*/
@Schema(description = "返修数")
private String p6layer3;
/**
* 返工数
*/
@Schema(description = "返工数")
private String p6layer4;
/**
* 报废数
*/
@Schema(description = "报废数")
private String p6layer5;
/**
* 订单号
*/
@Schema(description = "订单号")
private String sono;
/**
* 完工数
*/
@Schema(description = "完工数")
private String avlqty;
/**
* 完工日期
*/
@Schema(description = "完工日期")
private String date1;
/**
* 责任零件
*/
@Schema(description = "责任零件")
private String p5layer1;
/**
* 责任批次
*/
@Schema(description = "责任批次")
private String p5layer3;
/**
* 发生工序
*/
@Schema(description = "发生工序")
private String process;
/**
* 发生工序名称
*/
@Schema(description = "发生工序名称")
private String processName;
/**
* 上级编号
*/
@Schema(description = "上级编号")
private String precode;
/**
* 返修路线
*/
@Schema(description = "返修路线")
private String reworkLine;
/**
* 故障描述
*/
@Schema(description = "故障描述")
private String memo;
}

@ -304,8 +304,8 @@ public class CraftAbilityController extends BladeController {
@GetMapping("/findList")
@ApiOperationSupport(order = 2)
@Operation(summary = "列表", description = "传入CraftAbility")
public R<List<CraftAbilityEntity>> findList(@RequestParam(required = false ,name = "supplierId") String supplierId) {
List<CraftAbilityEntity> list = craftAbilityService.listByParams(supplierId);
public R<List<CraftAbilityEntity>> findList() {
List<CraftAbilityEntity> list = craftAbilityService.list();
return R.data(list);
}

@ -5,7 +5,6 @@ package org.springblade.desk.basic.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -31,10 +30,8 @@ import org.springblade.desk.basic.excel.PlatingSmallExcel;
import org.springblade.desk.basic.excel.WorkTankExcel;
import org.springblade.desk.basic.pojo.entity.Plating;
import org.springblade.desk.basic.pojo.entity.PlatingSmall;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.pojo.entity.WorkTank;
import org.springblade.desk.basic.pojo.vo.WorkTankVO;
import org.springblade.desk.basic.service.IWorkCenterService;
import org.springblade.desk.basic.service.IWorkTankService;
import org.springblade.desk.basic.util.ExcelExtUtil;
import org.springblade.desk.basic.wrapper.WorkTankWrapper;
@ -67,8 +64,7 @@ public class WorkTankController extends BladeController {
private IWorkTankService service;
@Resource
private IUserClient iUserClient;
@Resource
private IWorkCenterService workCenterservice;
/**
* [作业槽] 详情
*/
@ -293,13 +289,7 @@ public class WorkTankController extends BladeController {
List<WorkTank> noticeList = new ArrayList<>();
List<WorkTankExcel> list = ExcelUtil.read(file, WorkTankExcel.class);
list.forEach(noticeExcel -> {
//查询作业中心 设置作业中心ID
WorkCenter workCenter = workCenterservice.getOne(Wrappers.lambdaQuery(WorkCenter.class)
.eq(WorkCenter::getWcName, noticeExcel.getWorkstationName()));
if (cn.hutool.core.bean.BeanUtil.isEmpty(workCenter)){
throw new ArithmeticException("作业槽编码:" + noticeExcel.getWorkTankCode() + "数据," + "未找到作业中心");
}
noticeExcel.setWorkstationId(workCenter.getId());
WorkTank notice = BeanUtil.copy(noticeExcel, WorkTank.class);
List<User> userLeaders = iUserClient.listByNameNolike(noticeExcel.getOpUserName());
if(null != userLeaders && userLeaders.size() > 0){

@ -71,11 +71,7 @@ public class WorkTankExcel implements Serializable {
*/
@ColumnWidth(20)
@ExcelProperty("[作业中心]id")
private Long workstationId;
@ColumnWidth(20)
@ExcelProperty("作业中心")
private String workstationName;
private BigDecimal workstationId;
/**
* 描述
*/

@ -73,6 +73,4 @@ public interface ICraftAbilityService extends BaseService<CraftAbilityEntity> {
* @return
*/
CraftAbilityEntity selectByCaCode(String caCode);
List<CraftAbilityEntity> listByParams(String supplierId);
}

@ -25,25 +25,18 @@
*/
package org.springblade.desk.basic.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.basic.excel.CraftAbilityExcel;
import org.springblade.desk.basic.mapper.CraftAbilityMapper;
import org.springblade.desk.basic.pojo.entity.Oem;
import org.springblade.desk.basic.pojo.vo.CraftAbilityVO;
import org.springblade.desk.basic.service.ICraftAbilityService;
import org.springblade.desk.basic.service.IOemService;
import org.springblade.scheduling.pojo.entity.CraftAbilityEntity;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
import java.util.List;
/**
* 工艺能力 服务实现类
@ -53,9 +46,7 @@ import java.util.stream.Collectors;
*/
@Service
public class CraftAbilityServiceImpl extends BaseServiceImpl<CraftAbilityMapper, CraftAbilityEntity> implements ICraftAbilityService {
@Lazy
@Resource
private IOemService oemService;
@Override
public IPage<CraftAbilityVO> selectCraftAbilityPage(IPage<CraftAbilityVO> page, CraftAbilityVO craftAbility) {
return page.setRecords(baseMapper.selectCraftAbilityPage(page, craftAbility));
@ -81,24 +72,4 @@ public class CraftAbilityServiceImpl extends BaseServiceImpl<CraftAbilityMapper,
return baseMapper.selectByCaCode(caCode);
}
@Override
public List<CraftAbilityEntity> listByParams(String supplierId) {
//供应商id 非必传 根据供应商id查询供应商信息获取工艺能力id字段 工艺能力id以逗号分割 若为空 直接返回
if (StrUtil.isNotEmpty(supplierId)) {
Oem supplier = oemService.getById(supplierId);
if (BeanUtil.isEmpty(supplier) || Objects.isNull(supplier.getCraftAbilityId())) {
return new ArrayList<>();
}
Set<String> craftAbilityIds = Arrays.stream(supplier.getCraftAbilityId().split(","))
.map(String::trim)
.filter(cn.hutool.core.util.StrUtil::isNotEmpty)
.collect(Collectors.toSet());
if (craftAbilityIds.isEmpty()) {
return new ArrayList<>();
}
return listByIds(craftAbilityIds);
}
return list();
}
}

@ -113,7 +113,7 @@
SELECT
ph.ID as ph_id,
ph.*,
bd.DEPT_NAME as DEPT_NAME,
bd.TS_NAME as DEPT_NAME,
cm.id as cm_id,
cm.ph_id as cm_ph_id,
cm.create_time as cm_create_time,
@ -130,7 +130,7 @@
ct.astronaut_validity_period as astronaut_validity_period
FROM MES_POST_HANDLE ph
LEFT JOIN BLADE_USER bu ON ph.USER_ID = bu.ID
LEFT JOIN BLADE_DEPT bd ON ph.DEPT_ID = bd.ID
LEFT JOIN BS_TEAM_SET bd ON ph.DEPT_ID = bd.ID
LEFT JOIN MES_CERTIFICATE_MAINTENANCE cm ON ph.id = cm.ph_id AND cm.is_deleted = 0
LEFT JOIN MES_CERTIFICATE_TYPE ct ON cm.certificate_id = ct.id AND ct.is_deleted = 0
WHERE ph.is_deleted = 0 and ph.staff_type != 1

@ -97,7 +97,7 @@
SELECT
ph.ID as ph_id,
ph.*,
bd.DEPT_NAME as DEPT_NAME,
bd.TS_NAME as DEPT_NAME,
em.id as em_id,
em.ph_id as em_ph_id,
em.equipment_id,
@ -109,7 +109,7 @@
equipment.mac_spec
FROM MES_POST_HANDLE ph
LEFT JOIN BLADE_USER bu ON ph.USER_ID = bu.ID
LEFT JOIN BLADE_DEPT bd ON ph.DEPT_ID = bd.ID
LEFT JOIN BS_TEAM_SET bd ON ph.DEPT_ID = bd.ID
LEFT JOIN MES_EQUIPMENT_MAINTENANCE em ON ph.id = em.ph_id AND em.is_deleted = 0
LEFT JOIN MES_EQUIPMENT equipment ON em.equipment_id = equipment.id AND equipment.is_deleted = 0
WHERE ph.is_deleted = 0 and ph.staff_type != 1

@ -102,10 +102,10 @@
mph.*, -- 主表所有字段
bu.REAL_NAME as USER_NAME, -- 用户姓名
bu.CODE as USER_CODE, -- 用户工号
bd.DEPT_NAME as DEPT_NAME -- 班组名称
bd.TS_NAME as DEPT_NAME -- 班组名称
FROM MES_POST_HANDLE mph
LEFT JOIN BLADE_USER bu ON mph.USER_ID = bu.ID -- 关联用户表
LEFT JOIN BLADE_DEPT bd ON mph.DEPT_ID = bd.ID -- 关联部门表
LEFT JOIN BS_TEAM_SET bd ON mph.DEPT_ID = bd.ID -- 关联部门表
WHERE mph.IS_DELETED = 0
<if test="postHandle.userCode != null and postHandle.userCode != ''">
AND bu.CODE = #{postHandle.userCode}

@ -232,11 +232,9 @@ public class PostHandleServiceImpl extends BaseServiceImpl<PostHandleMapper, Pos
return R.fail("导入数据中存在重复的工号:" + duplicateCodes);
}
//获取用户与班组对应关系
List<PostHandleEntity> list = postHandleImports.stream().map(this::convertSingle).collect(Collectors.toList());
// List<RelTeamSetUser> relTeamSetUsers = relTeamSetUserService.list();
// Map<Long, Long> relTeamSetUserMap = relTeamSetUsers.stream().collect(Collectors.toMap(item -> item.getUserId(), item -> item.getTeamSetId()));
// List<PostHandleEntity> list = postHandleImports.stream().map((PostHandleImport excel) -> convertSingle(excel, relTeamSetUserMap)).collect(Collectors.toList());
List<RelTeamSetUser> relTeamSetUsers = relTeamSetUserService.list();
Map<Long, Long> relTeamSetUserMap = relTeamSetUsers.stream().collect(Collectors.toMap(item -> item.getUserId(), item -> item.getTeamSetId()));
List<PostHandleEntity> list = postHandleImports.stream().map((PostHandleImport excel) -> convertSingle(excel, relTeamSetUserMap)).collect(Collectors.toList());
//获取全部用户id,对比PostHandleEntity已有数据,不允许重复添加
List<Long> ids = list.stream().map(PostHandleEntity::getUserId)
.collect(Collectors.toList());
@ -300,7 +298,7 @@ public class PostHandleServiceImpl extends BaseServiceImpl<PostHandleMapper, Pos
/**
* 转换单个对象
*/
private PostHandleEntity convertSingle(PostHandleImport excel) {
private PostHandleEntity convertSingle(PostHandleImport excel, Map<Long, Long> map) {
PostHandleEntity entity = new PostHandleEntity();
// 核心:属性拷贝,两个类的字段名和类型必须一致
BeanUtils.copyProperties(excel, entity);
@ -315,7 +313,7 @@ public class PostHandleServiceImpl extends BaseServiceImpl<PostHandleMapper, Pos
}
entity.setUserId(userByCode.getUser().getId());
entity.setName(userByCode.getUser().getRealName());
entity.setDeptId(Long.valueOf(userByCode.getUser().getDeptId()));
entity.setDeptId(map.get(userByCode.getUser().getId()));
//技能等级
entity.setSkill(SkillEnum.of(excel.getSkillName()).getCode().shortValue());
//婚姻状态

@ -1,5 +1,6 @@
package org.springblade.desk.order.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Operation;
@ -259,8 +260,8 @@ public class YieldOrderController extends BladeController {
@PostMapping(value = "/receiveOrderFromOldMes")
@Operation(summary = "保存旧mes传过来的生产订单", description = "")
public R receiveOrderFromOldMes(@RequestBody JSONObject dataObject) {
// JSONArray dataList = dataObject.getJSONArray("dataList");
// yieldOrderService.receiveOrderFromOldMes(dataList);
JSONArray dataList = dataObject.getJSONArray("dataList");
yieldOrderService.receiveOrderFromOldMes(dataList);
return R.success();
}
@ -273,7 +274,7 @@ public class YieldOrderController extends BladeController {
@PostMapping(value = "/receiveOrderStatusFromOldMes")
@Operation(summary = "保存旧mes传过来的生产订单状态数据", description = "")
public R receiveOrderStatusFromOldMes(@RequestBody JSONObject entity) {
// yieldOrderService.receiveOrderStatusFromOldMes(entity.getString("cardNo"), entity.getInteger("status"));
yieldOrderService.receiveOrderStatusFromOldMes(entity.getString("cardNo"), entity.getInteger("status"));
return R.success();
}

@ -29,7 +29,6 @@ import io.swagger.v3.oas.annotations.Hidden;
import lombok.RequiredArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.order.service.IYieldPlanService;
import org.springframework.web.bind.annotation.RestController;
@ -45,16 +44,10 @@ import org.springframework.web.bind.annotation.RestController;
public class OrderClient implements IOrderClient {
private final IYieldPlanService yieldPlanService;
private final IYieldOrderService orderService;
@Override
public Boolean saveGlassCake(YieldPlan yieldPlan) {
yieldPlanService.saveGlassCake(yieldPlan);
return null;
}
@Override
public void calculateCoatingMaterial() {
orderService.calculateCoatingMaterial();
}
}

@ -40,6 +40,4 @@ public interface YieldOrderMapper extends BaseMapper<YieldOrder> {
List<YieldOrderEnum> yieldTypeList, List<YieldOrderEnum> yieldStatusList);
Long getWcId(Long orderId);
YieldOrder getMaxByCodePattern(String codePattern);
}

@ -112,14 +112,4 @@
WHERE yo.ID = #{orderId}
AND ROWNUM = 1;
</select>
<select id="getMaxByCodePattern" resultType="org.springblade.desk.order.pojo.entity.YieldOrder">
SELECT *
FROM(
SELECT *
FROM MES_YIELD_ORDER
WHERE IS_DELETED = 0 AND YO_CODE LIKE CONCAT(#{codePattern}, '%')
ORDER BY YO_CODE DESC
)
WHERE ROWNUM = 1
</select>
</mapper>

@ -278,13 +278,5 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
*/
void saveOrder(List<YieldOrder> yieldOrderList);
String nextBatchNo();
String nextCardNo();
String nextCode(Object obj);
List<String> getToolByPartCode(String partCode);
void calculateCoatingMaterial();
}

@ -35,7 +35,10 @@ import org.springblade.desk.order.constant.YieldOrderConst;
import org.springblade.desk.order.mapper.MoldDemandMapper;
import org.springblade.desk.order.mapper.YieldOrderMapper;
import org.springblade.desk.order.mapper.YieldPlanMapper;
import org.springblade.desk.order.pojo.entity.*;
import org.springblade.desk.order.pojo.entity.MoldDemand;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.entity.YieldOrderCraft;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.order.pojo.enums.MoldDemandEnum;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.pojo.vo.LineMemoVo;
@ -51,9 +54,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.MessageFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@ -374,6 +374,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
DsCraftEntity craft = craftVO.getCraft();
DsPartEntity part = dsPartService.getById(craft.getPartId());
//石墨模不参与验证
if (YieldOrderEnum.YIELD_TYPE_2.getCode() != yieldOrder.getYieldType()
&& YieldOrderEnum.YIELD_TYPE_6.getCode() != yieldOrder.getYieldType() && ObjectUtil.isEmpty(part.getArea())) {
@ -1016,23 +1017,6 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
return list;
}
@Override
public void calculateCoatingMaterial() {
LocalDate today = LocalDate.now();
LocalDateTime startOfDay = today.atStartOfDay();
LocalDateTime endOfDay = today.atTime(LocalTime.MAX);
LambdaQueryWrapper<YieldOrder> wrapper = Wrappers.<YieldOrder>query().lambda()
.between(YieldOrder::getReceiveTime,
DateUtil.toDate(startOfDay),
DateUtil.toDate(endOfDay)).isNull(YieldOrder::getGoodsDemand);
List<YieldOrder> list = this.list(wrapper);
if(CollectionUtils.isNotEmpty(list)){
for(YieldOrder yieldOrder : list){
plateGoodsRecordService.calculateCoatingMaterial(yieldOrder);
}
}
}
/**
* 验证零件子件信息
*
@ -1166,8 +1150,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len);
}
@Override
public String nextCardNo() {
private String nextCardNo() {
// 自增总长度
int len = 5;
String codePattern = "R" + DateUtil.today() + StringPrefixUtils.prefix(String.valueOf(new Random().nextInt(10000)), "0", len);
@ -1197,9 +1180,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
num++;
return num;
}
@Override
public String nextBatchNo() {
private String nextBatchNo() {
// 自增总长度
int len = 3;
@ -1246,11 +1227,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
private Integer judgeRank(YieldOrder yieldOrder) {
DsPartEntity part = dsPartService.selectDsPartByPatCodeAndVersion(yieldOrder.getPartCode(), yieldOrder.getPartVersion());
if(part == null){
yieldOrder.setValidationResult(YieldOrderEnum.VALIDATION_RESULT_LESS_CRAFT.getCode());
yieldOrder.setValidationTime(DateUtil.now());
yieldOrder.setValidationMomo("未查询到零件信息!");
this.updateById(yieldOrder);
return null;
throw new ServiceException("未查询到零件信息!");
}
// 工作订单备注中包含大小写的HTBY时,执行二级工艺
if (yieldOrder.getYpMemo() != null && yieldOrder.getYpMemo().toLowerCase(Locale.ROOT).contains("htby")) {
@ -1297,30 +1274,4 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
return null;
}
@Override
public String nextCode(Object obj) {
// 自增总长度
int len = 2;
// 自增值
Integer num = null;
// 编码模式
String codePattern = obj.toString() + "-B";
// 当前模式下最大编码
YieldOrder yieldOrder = baseMapper.getMaxByCodePattern(codePattern);
if (yieldOrder != null) {
num = Integer.parseInt(yieldOrder.getYoCode().substring(codePattern.length()));
}
if (num == null) {
num = 0;
}
num++;
// 下个编码
return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len);
}
}

@ -5,6 +5,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
@ -15,8 +16,6 @@ import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springblade.erpdata.feign.IErpDataProduceClient;
import org.springblade.erpdata.pojo.dto.ReworkProcessDTO;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import org.springframework.web.bind.annotation.*;
@ -40,8 +39,38 @@ public class ReworkProcessController extends BladeController {
@GetMapping("/loadReworkOrder")
@ApiOperationSupport(order = 1)
@Operation(summary = "erp查询返工订单", description = "传入ReworkProcessDTO")
@Operation(summary = "erp查询返工订单", description = "传入ReworkProcessDTO")
public R<IPage<ReworkProcessVO>> page(ReworkProcessDTO prReworkProcess, Query query) {
// prReworkProcess.setQuery(query);
// IPage<ReworkProcessVO> page = Condition.getPage(query);
// List<ReworkProcessVO> records = new ArrayList<>();
// ReworkProcessVO reworkProcessVO = new ReworkProcessVO();
// reworkProcessVO.setRedono("返修单号");
// reworkProcessVO.setSeqno(1);
// reworkProcessVO.setSeqdept("处理单位");
// reworkProcessVO.setPrtno("物料号");
// reworkProcessVO.setExcstatus(1);
// reworkProcessVO.setAmount(1.0);
// reworkProcessVO.setReqdate("2026-02-04");
// reworkProcessVO.setReqqty("需求数量");
// reworkProcessVO.setRecdate("2026-02-04");
// reworkProcessVO.setRecman("接收人");
// reworkProcessVO.setRecqty("接收数量");
// reworkProcessVO.setEnddat("2026-02-04");
// reworkProcessVO.setEndman("完成人");
// reworkProcessVO.setEndqty("完成数量");
// reworkProcessVO.setSplcode("批次号");
// reworkProcessVO.setRemark("备注");
// reworkProcessVO.setHrecdate("2026-02-04");
// reworkProcessVO.setBfqty(1);
// reworkProcessVO.setUsedept("发生单位");
// reworkProcessVO.setDetail("处理意见");
// reworkProcessVO.setPrtlotno("生产标识");
// reworkProcessVO.setDeptcode("工艺路线");
// reworkProcessVO.setSono("开单车间订单号");
// records.add(reworkProcessVO);
// page.setRecords(records);
// return R.data(page);
IPage<ReworkProcessVO> iPage = Condition.getPage(query);
List<ReworkProcessVO> process = erpDataProduceClient.loadReworkOrder(prReworkProcess.getReworkCode(), prReworkProcess.getPartCode(), prReworkProcess.getBatchNo(), query.getCurrent(), query.getSize()).getData();
iPage.setRecords(process);
@ -50,37 +79,27 @@ public class ReworkProcessController extends BladeController {
return R.data(iPage);
}
// @GetMapping("/treeProcess")
// @ApiOperationSupport(order = 2)
// @Operation(summary = "查询返工工序树", description = "")
// public R taskComplete(@RequestBody ReworkProcessDTO prReworkProcess) {
// return R.data(reworkProcessService.treeProcess(prReworkProcess));
// }
@PostMapping("/receiveOrder")
@ApiOperationSupport(order = 2)
@Operation(summary = "订单接收", description = "传入prReworkProcess")
public R receiveOrder(@RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) {
return R.status(pdaSaveService.receiveOrder(mesRbRedoRoutDTO));
@Operation(summary = "订单接收", description = "传入prReworkProcess")
public R receiveOrder(@Valid @RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) {
pdaSaveService.receiveOrder(mesRbRedoRoutDTO);
return R.success();
}
@PostMapping("/completeOrder")
@ApiOperationSupport(order = 3)
@Operation(summary = "订单完成", description = "传入mesRbRedoRoutDTO")
public R completeOrder(@RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) {
return R.status(pdaSaveService.completeOrder(mesRbRedoRoutDTO, AuthUtil.getUserName()));
}
@GetMapping("/reviewFormMess")
@ApiOperationSupport(order = 4)
@Operation(summary = "查询erp审理单")
public R<List<PpmReportDetailModelVO>> reviewFormMess(ReworkProcessDTO prReworkProcess) {
return erpDataProduceClient.reviewFormMess(prReworkProcess.getQueryType(), prReworkProcess.getReworkCode(), prReworkProcess.getPartCode(), prReworkProcess.getBatchNo());
}
@GetMapping("/loadReworkPlan")
@ApiOperationSupport(order = 5)
@Operation(summary = "返工计划查询")
public R<IPage<MesRbRedoVO>> loadReworkPlan(ReworkProcessDTO prReworkProcess, Query query) {
IPage<MesRbRedoVO> iPage = Condition.getPage(query);
List<MesRbRedoVO> process = erpDataProduceClient.loadReworkPlan(prReworkProcess.getReworkCode(), prReworkProcess.getPartCode(), prReworkProcess.getBatchNo(), query.getCurrent(), query.getSize()).getData();
iPage.setRecords(process);
int size = erpDataProduceClient.loadReworkPlanSize(prReworkProcess.getReworkCode(), prReworkProcess.getPartCode(), prReworkProcess.getBatchNo()).getData();
iPage.setTotal(size);
return R.data(iPage);
@Operation(summary = "订单完成", description = "传入mesRbRedoRoutDTO")
public R completeOrder(@Valid @RequestBody MesRbRedoRoutDTO mesRbRedoRoutDTO) {
pdaSaveService.completeOrder(mesRbRedoRoutDTO, AuthUtil.getUser().getUserName());
return R.success();
}
}

@ -4,7 +4,6 @@ import io.swagger.v3.oas.annotations.Hidden;
import lombok.RequiredArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.desk.produce.service.IDisTaskingService;
import org.springblade.desk.produce.service.IPdaSaveService;
import org.springframework.web.bind.annotation.RestController;
/**
@ -20,15 +19,8 @@ public class DisTaskingClient implements IDisTaskingClient {
private final IDisTaskingService disTaskingService;
private final IPdaSaveService pdaSaveServiceImpl;
@Override
public boolean syncDisTasking() {
return disTaskingService.syncDisTasking(false);
}
@Override
public boolean receiveOrder() {
return pdaSaveServiceImpl.receiveNoProcessOrder();
}
}

@ -60,6 +60,4 @@ public interface WorkOrderMapper extends BaseMapper<WorkOrder> {
List<WorkOrder> listByYoId(Long fatherYoId);
List<WorkInProcessVO> getWorkInProcessByPartCode(Set<String> partCodes);
WorkOrder getWorkOrderUniqueRec(String prtno, String splcode, String sono);
}

@ -235,29 +235,5 @@
AND a.last_instore_time IS NULL
AND a.run_status &lt; 19;
</select>
<select id="getWorkOrderUniqueRec" resultType="org.springblade.desk.produce.pojo.entity.WorkOrder">
SELECT
*
FROM
(SELECT
mwo.*
FROM
MES_WORK_ORDER mwo
INNER JOIN MES_YIELD_ORDER myo ON mwo.YO_ID = myo.ID
INNER JOIN MES_WORK_ORDER_RUN mwor ON mwo.WOR_ID = mwor.ID
WHERE
myo.PART_CODE = #{prtno} AND myo.BATCH_NO = #{splcode}
<choose>
<when test="sono != null and sono != ''">
AND mwor.WO_CODE = #{sono}
</when>
<otherwise>
AND mwo.REWORK_CODE IS NULL
</otherwise>
</choose>
AND mwo.RUN_STATUS != 15 AND mwo.RUN_STATUS != 17
ORDER BY mwo.CREATE_TIME DESC )
WHERE ROWNUM = 1
</select>
</mapper>

@ -4,6 +4,7 @@ import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.produce.pojo.dto.DeviceBindDTO;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.dto.ShiftTransferDTO;
import org.springblade.desk.produce.pojo.entity.MacToolUse;
import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.MacToolUseVO;
import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo;
@ -54,13 +55,11 @@ public interface IPdaSaveService extends BaseService<WorkPlan> {
*/
void sjDeviceUnBind(UnBingDeviceVo unBingDeviceVo);
boolean receiveOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO);
void receiveOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO);
boolean completeOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO, String user);
void completeOrder(MesRbRedoRoutDTO mesRbRedoRoutDTO, String user);
void uploadPlan(List<WorkPlan> workPlanList);
void shiftTransfer(ShiftTransferDTO shiftTransferDTO);
boolean receiveNoProcessOrder();
}

@ -232,8 +232,4 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
void addWorkOrder(WorkOrder newWo);
Map<String, List<WorkInProcessVO>> getWorkInProcessByPartCode(Set<String> partCodes);
WorkOrder getWorkOrderUniqueRec(String prtno, String splcode, String sono);
List<WorkOrder> findCubByYoId(Long yoId);
}

@ -6,16 +6,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.pojo.entity.BsTeamSetEntity;
import org.springblade.desk.dashboard.pojo.entity.PrReworkProcessEntity;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.pojo.entity.FeiBaSetEntity;
@ -24,9 +24,6 @@ import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.device.service.IFeiBaSetService;
import org.springblade.desk.device.service.IRackSetService;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.entity.YieldOrderCraft;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.service.IYieldOrderCraftService;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.dto.DeviceBindDTO;
@ -39,21 +36,12 @@ import org.springblade.desk.produce.pojo.vo.SjEcBingCardVo;
import org.springblade.desk.produce.pojo.vo.UnBingDeviceVo;
import org.springblade.desk.produce.pojo.vo.UnBingVo;
import org.springblade.desk.produce.service.*;
import org.springblade.desk.quality.pojo.entity.InspectionTask;
import org.springblade.desk.quality.pojo.entity.ReviewSheet;
import org.springblade.desk.quality.service.IInspectionTaskService;
import org.springblade.desk.quality.service.IReviewSheetService;
import org.springblade.erpdata.feign.IErpDataProduceClient;
import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@ -67,8 +55,6 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan> implements IPdaSaveService {
private static DateTimeFormatter defaultDateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
private final IBsProcedureTeamService bsProcedureTeamService;
private final IBsProcessSetService bsProcessSetService;
@ -93,18 +79,6 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
private final IDsPartService dsPartService;
private final IReviewSheetService reviewSheetService;
private final IInspectionTaskService inspectionTaskService;
@Resource
private IErpDataProduceClient erpDataProduceClient;
@Resource
private IUserClient userClient;
private final IYieldOrderCraftService yieldOrderCraftService;
@Override
@Transactional(rollbackFor = Exception.class)
public void bindingCard(DeviceBindDTO deviceBindDTO) {
@ -512,114 +486,161 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean receiveOrder(MesRbRedoRoutDTO rr) {
// 如果路线编号为1,自动完成订单
public void receiveOrder(MesRbRedoRoutDTO rr) {
// 如果路线编号为 1 ,自动完成订单
if ("1".equals(rr.getSeqno().toString())) {
this.completeOrder(rr, AuthUtil.getUserName());
}
String memo = "";
List<PrReworkProcessEntity> rpList = dsPartService.selectReworkPartCraft(rr.getPrtno(), rr.getRedono(), rr.getSplcode(), String.valueOf(rr.getSeqno()));
if (CollectionUtils.isEmpty(rpList)) {
if (rpList == null && rpList.isEmpty()) {
//修改erp返工单工艺状态为无工艺
return erpDataProduceClient.receiveOrder(rr.getRedono(), rr.getSeqno(), rr.getPrtno(), rr.getSplcode(), rr.getAmount(), rr.getReqqty(), AuthUtil.getUserName(), 0).getData();
//prReworkProcessDao.receiveOrder(rr, user.getLdapName(), 0);
} else {
return this.receiveOrderAndSave(rr, rpList);
//查询原订单
WorkOrder wo = workOrderService.getOne(Wrappers.<WorkOrder>lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode()));
if (wo == null) {
wo = workOrderService.getOne(Wrappers.<WorkOrder>lambdaQuery().eq(WorkOrder::getBatchNo, rr.getSplcode()));
}
memo = memo + "物料号:" + rr.getPrtno() + "批次号:" + rr.getSplcode() + " 订单号:" + rr.getSono() + " ---- ";
YieldOrder yieldOrder;
WorkOrder newWo = new WorkOrder();
//zxh 20250820 返修发现部门为3400的才进行原单覆盖
if (wo != null && "3400".equals(rr.getUsedept())) {
memo = memo + "找到原单,woId:" + wo.getId() + " ---- ";
yieldOrder = yieldOrderService.getById(wo.getYoId());
List<WorkPlan> wpList = null;
//返工路线是3400-3400内部返工的,需要COPY原订单且不更新上账时间和上账人,反之则走非车间内部返工处理
if (StringUtils.isNotBlank(rr.getDeptcode()) && "3400-3400".equals(rr.getDeptcode().trim())) {
//顺延原WO号
newWo.setWoCode(workOrderService.nextCode(yieldOrder.getYpCode()));
newWo.setWpId(wo.getWpId());
//zxh 20250520 返修路线为3400-3400的返修订单在车间订单级记录返修订单接收人
newWo.setMemo("返工路线是3400-3400,记录返修接收人为" + rr.getRecman());
//非3400返工
memo = memo + "返工路线是3400-3400 ---- ";
log.info("3400-3400新车间订单:woCode:{},oldYoCode:{}", newWo.getWoCode(), yieldOrder.getYoCode());
} else {
//copy原生产订单,更新单号和关键信息
YieldOrder newYieldOrder = new YieldOrder();
BeanUtils.copyProperties(yieldOrder, newYieldOrder);
newYieldOrder.setId(null);
// newYieldOrder.setDemandDate(rr.getReqdate());
//如果接收人不为空,则默认此接收人和接收时间
if (StringUtils.isNotBlank(rr.getRecman())) {
//user = epDosingRecDao.getUserByLdapName(rr.getRecman().trim());
}
//zxh 20241128 接收人赋值为返修订单接收人
newYieldOrder.setReceiveUser(Long.valueOf(rr.getRecman()));
// newYieldOrder.setFailureTime(StringUtils.isNotBlank(rr.getRecdate()) ?
// DateTime.parse(rr.getRecdate()) : new Date());
newYieldOrder.setMemo(rr.getRemark());
newYieldOrder.setReworkMemo(rr.getDetail());
newYieldOrder.setYpQty(rr.getAmount());
newYieldOrder.setPrimaryCraft(rr.getDeptcode());
newYieldOrder.setReworkCode(rr.getRedono());
newYieldOrder.setReworkNo(Long.valueOf(rr.getSeqno()));
newYieldOrder.setYoCode(rr.getRedono());
//zxh 20250522 找到原单,非3400-3400,复制pj后不再更改pocode
//newYieldOrder.setPoCode(rr.getRedono());
newYieldOrder.setProduceBool(Boolean.TRUE);
newYieldOrder.setStatus(YieldOrder.CUR_STATUS_PROCESSING);
//周新昊 20240912 返修订单找到原单复制pj后为使用部门代码赋值
newYieldOrder.setUseDeptCode(rr.getUsedept());
yieldOrderService.save(newYieldOrder);
log.info("不是厂内,保存新生产订单:yoId{},yoCode{}", newYieldOrder.getId(), newYieldOrder.getYoCode());
//原订单已经入库,则更新接收人、接收时间并且车间订单号不顺延原订单号,反之则需要顺延原订单号
if (wo.getPutStoreTime() != null) {
newWo.setWoCode(workOrderService.nextCode(rr.getRedono()));
newWo.setReInStore("1");
newYieldOrder.setYpCode(rr.getRedono());
} else {
newWo.setWoCode(workOrderService.nextCode(yieldOrder.getYpCode()));
}
//绑定新车间订单的接收信息
newWo.setYoId(newYieldOrder.getId());
//更新原生产订单状态为已关闭
YieldOrder oldYo = yieldOrderService.getById(yieldOrder.getId());
if (oldYo != null) {
oldYo.setStatus(YieldOrder.CUR_STATUS_VOIDED);
yieldOrderService.updateById(oldYo);
}
memo = memo + "新生产订单,yoId:" + newYieldOrder.getId() + " ---- ";
}
//返工订单流程卡号重新生成
newWo.setCardNo(workOrderService.nextCardNo(yieldOrder.getYpCode(), wo.getCardNo()));
newWo.setBatchNo(rr.getSplcode());
newWo.setMakeQty(rr.getAmount());
newWo.setRunStatus(WorkOrder.RUN_STATUS_NORMAL);
newWo.setPriority(wo.getPriority());
newWo.setReworkCode(rr.getRedono());
newWo.setReworkNo(rr.getSeqno());
newWo.setOem("0");
newWo.setOemOut("1");
newWo.setOemType(-1);
newWo.setPlanner(wo.getPlanner());
newWo.setDispatcher(wo.getDispatcher());
newWo.setReworkMemo(rr.getDetail());
// newWo.setDemandDate(rr.getReqdate());
workOrderService.addWorkOrder(newWo);
log.info("保存新车间订单:woId{},woCode{}", newWo.getId(), newWo.getWoCode());
//组装生产工序
wpList = new ArrayList<>(rpList.size());
WorkPlan wp;
for (PrReworkProcessEntity rp : rpList) {
wp = new WorkPlan();
wp.setOrders(rp.getProcessNo());
wp.setHourQuota(rp.getHourQuota());
wp.setMakeMemo(rp.getMakeMemo());
wp.setStatus(WorkPlan.STATUS_NO_START);
wp.setPlanStartTime(rp.getStartTime().toInstant()
.atZone(ZoneId.systemDefault()) // 指定时区(通常用系统默认)
.toLocalDateTime());
wp.setPlanEndTime(rp.getEndTime().toInstant()
.atZone(ZoneId.systemDefault()) // 指定时区(通常用系统默认)
.toLocalDateTime());
wp.setRpId(rp.getId());
if (rp.getMakeTeam() != null) {
wp.setMakeTeam(rp.getMakeTeam());
wp.setOem("0");
} else {
wp.setOem(rp.getOcName());
wp.setOem("1");
}
wpList.add(wp);
}
}
}
}
public boolean receiveOrderAndSave(MesRbRedoRoutDTO rr, List<PrReworkProcessEntity> rpList) {
YieldOrder yieldOrder = new YieldOrder();
String batchNo = rr.getSplcode();
if (batchNo == null) {
batchNo = yieldOrderService.nextBatchNo();
}
DsPartEntity part = dsPartService.selectDsPartByPatCodeAndVersion(rr.getPrtno().trim(), null);
if (part == null) {
throw new ServiceException("零件信息【" + rr.getPrtno() + "】不存在!");
}
DsPartVersionEntity newPartVersion = dsPartService.getNewPartVersion(rr.getPrtno().trim());
if (newPartVersion != null) {
throw new ServiceException("零件【" + rr.getPrtno() + "】的版本不存在!");
}
yieldOrder.setPartVersion(newPartVersion.getPartVersion());
yieldOrder.setRank("2");
yieldOrder.setBatchNo(batchNo);
yieldOrder.setCardNo(yieldOrderService.nextCardNo());
yieldOrder.setYoCode(yieldOrderService.nextCode(rr.getRedono()));
yieldOrder.setYpCode(rr.getRedono());
yieldOrder.setPartCode(part.getPartCode());
yieldOrder.setProductType(part.getProductType());
yieldOrder.setPartName(part.getPartName());
yieldOrder.setPlate(part.getPlate());
yieldOrder.setProductIdent(rr.getPrtlotno());
yieldOrder.setUseDept(rr.getUsedept());
yieldOrder.setYpArea(part.getCraftWay().indexOf("封接") > 0 ? 0.0000000000 : part.getArea());
if (ObjectUtils.isEmpty(yieldOrder.getYpArea())) {
throw new ServiceException("零件面积不能为空,请联系工艺");
}
yieldOrder.setDemandDate(this.dateParse(rr.getReqdate()));
yieldOrder.setPlanUser(rr.getRecman());
yieldOrder.setReleaseDate(this.dateParse(rr.getRecdate()));
yieldOrder.setMemo(rr.getRemark());
yieldOrder.setReworkMemo(rr.getDetail());
yieldOrder.setYieldType("1".equals(part.getIsSintering()) ? YieldOrder.YIELD_TYPE_2 : YieldOrder.YIELD_TYPE_1);
yieldOrder.setYpQty(rr.getAmount());
yieldOrder.setSiteWork(Boolean.FALSE);
yieldOrder.setPrimaryCraft(rr.getDeptcode());
yieldOrder.setStatus(YieldOrderEnum.STATUS_APS.getCode());
List<User> users = userClient.listByNameNolike(rr.getRecman());
yieldOrder.setReceiveUser(CollectionUtils.isNotEmpty(users) ? users.get(0).getId() : AuthUtil.getUserId());
yieldOrder.setReceiveTime(new Date());
yieldOrder.setReworkCode(rr.getRedono());
yieldOrder.setReworkNo((long) rr.getSeqno());
yieldOrder.setBusinessType(Integer.valueOf("-1"));
yieldOrderService.save(yieldOrder);
//生产订单工艺
List<YieldOrderCraft> ycList = new ArrayList<>(rpList.size());
YieldOrderCraft yc;
for (PrReworkProcessEntity rp : rpList) {
yc = new YieldOrderCraft();
yc.setYoId(yieldOrder.getId());
yc.setMakeTeam(rp.getMakeTeam());
yc.setOcId(rp.getOcId());
yc.setCaId(rp.getCaId());
yc.setPpsId(rp.getPpsId());
yc.setHourQuota(rp.getHourQuota().doubleValue());
yc.setMakeMemo(rp.getMakeMemo());
yc.setStartTime(rp.getStartTime());
yc.setEndTime(rp.getEndTime());
yc.setProcessNo(rp.getProcessNo());
yc.setRpId(rp.getId());
ycList.add(yc);
}
boolean saveResult = yieldOrderCraftService.saveBatch(ycList);
if (saveResult) {
// 修改erp返工单状态
erpDataProduceClient.receiveOrder(rr.getRedono(), rr.getSeqno(), rr.getPrtno(), rr.getSplcode(), rr.getAmount(), rr.getReqqty(), AuthUtil.getUserName(), 1).getData();
}
return saveResult;
private List<PrReworkProcessEntity> listByReworkCode(String redono, Integer seqno, String prtno, String splcode) {
List<PrReworkProcessEntity> prReworkProcessList = new ArrayList<>();
// 首先根据返工单号+零件号——批次号去查
prReworkProcessList = null; //prReworkProcessDao.listByReworkCode(reworkCode, reworkNo, partCode, batchNo);
if (prReworkProcessList != null && prReworkProcessList.size() > 0) {
return prReworkProcessList;
}
return prReworkProcessList;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean completeOrder(MesRbRedoRoutDTO rr, String userName) {
WorkOrder wo = workOrderService.getWorkOrderUniqueRec(rr.getPrtno(), rr.getSplcode(), rr.getSono());
public void completeOrder(MesRbRedoRoutDTO rr, String userName) {
WorkOrder wo = workOrderService.getOne(Wrappers.lambdaQuery(WorkOrder.class)
.eq(WorkOrder::getBatchNo, rr.getSplcode()));
if (wo != null) {
//记录返工单号
wo.setQcReworkCode(rr.getRedono());
//如果原车间订单状态小于已交接,就更改原订单状态为返工,否则不更改
if (wo.getRunStatus() < WorkOrder.RUN_STATUS_HANDOVER) {
//修改旧订单状态
workOrderService.updateStatus(Collections.singletonList(wo.getId()), WorkOrder.RUN_STATUS_REWORK, AuthUtil.getUserId(), null);
workOrderService.updateStatus(null, WorkOrder.RUN_STATUS_REWORK, wo.getId(), null);
}
// 如果有 FatherYoId 有值,则代表他是子件 修改部件状态为返工
YieldOrder pjYieldOrder = yieldOrderService.getById(wo.getYoId());
if (pjYieldOrder.getFatherYoId() != null) {
List<WorkOrder> fatherPrWorkOrderList = workOrderService.list(Wrappers.lambdaQuery(WorkOrder.class).eq(WorkOrder::getYoId, pjYieldOrder.getFatherYoId()));
if (fatherPrWorkOrderList != null && !fatherPrWorkOrderList.isEmpty()) {
if (fatherPrWorkOrderList != null && fatherPrWorkOrderList.size() > 0) {
for (WorkOrder fatherPrWorkOrder : fatherPrWorkOrderList) {
// 记录原状态
fatherPrWorkOrder.setOldRunStatus(fatherPrWorkOrder.getRunStatus());
@ -630,30 +651,9 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
}
} else {
// 通过返工单查询生产处置单 解决烧结通过装配模式返工的订单
ReviewSheet qcReviewSheet = reviewSheetService.getByRsCode(rr.getRedono());
if (qcReviewSheet != null) {
InspectionTask prWorkCheck = inspectionTaskService.getById(qcReviewSheet.getWcId());
if (prWorkCheck != null) {
WorkPlan workPlan = this.getById(prWorkCheck.getWpId());
WorkOrder prWorkOrder = workOrderService.getById(workPlan.getWoId());
// 关闭部件订单
prWorkOrder.setRunStatus(WorkOrder.RUN_STATUS_REWORK);
workOrderService.updateById(prWorkOrder);
// 关闭状态小于完工的子件订单
List<WorkOrder> workOrderSubList = workOrderService.findCubByYoId(prWorkOrder.getYoId());
if (workOrderSubList != null && !workOrderSubList.isEmpty()) {
for (WorkOrder workOrder : workOrderSubList) {
if (workOrder.getRunStatus() < WorkOrder.RUN_STATUS_COMPLETED) {
workOrder.setRunStatus(WorkOrder.RUN_STATUS_REWORK);
workOrderService.updateById(workOrder);
}
}
}
}
}
}
return erpDataProduceClient.completeOrder(rr.getRedono(), rr.getSeqno(), rr.getPrtno(), rr.getSplcode(), rr.getAmount(), rr.getBfqty(), userName).getData();
this.completeOrder(rr, userName);
}
@Override
@ -723,24 +723,6 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
// prWorkOrderService.updateHostWorkUnit(woId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean receiveNoProcessOrder() {
// 查询所有返工无工艺订单
List<MesRbRedoRoutDTO> reworkNoProcessList = erpDataProduceClient.loadReworkNoProcess().getData();
if (CollectionUtils.isEmpty(reworkNoProcessList)) {
return false;
}
for (MesRbRedoRoutDTO rr : reworkNoProcessList) {
List<PrReworkProcessEntity> rpList = dsPartService.selectReworkPartCraft(rr.getPrtno(), rr.getRedono(), rr.getSplcode(), String.valueOf(rr.getSeqno()));
if (CollectionUtils.isEmpty(rpList)) {
continue;
}
this.receiveOrderAndSave(rr, rpList);
}
return true;
}
private void unBindBsRackSet(RackSetEntity bsRackSet) {
if (bsRackSet != null) {
bsRackSet.setBindQty((short) 0);
@ -794,17 +776,5 @@ public class PdaSaveServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPlan
}
}
private Date dateParse(String d) {
if (d != null && !d.trim().isEmpty()) {
if (d.length() < 19) {
d = d + "0000-00-00 00:00:00".substring(d.length());
}
return Date.from(LocalDateTime.parse(d, defaultDateTimeFormat).atZone(ZoneId.systemDefault()).toInstant());
} else {
return null;
}
}
}

@ -58,6 +58,7 @@ import org.springblade.system.cache.DictCache;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -729,8 +730,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return baseMapper.findByPartCodeAndMemo(partCode, ypCode);
}
@Override
public List<WorkOrder> findCubByYoId(Long id) {
private List<WorkOrder> findCubByYoId(Long id) {
return baseMapper.findCubByYoId(id);
}
@ -889,11 +889,6 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return workInProcess.stream().collect(Collectors.groupingBy(WorkInProcessVO::getPartCode));
}
@Override
public WorkOrder getWorkOrderUniqueRec(String prtno, String splcode, String sono) {
return baseMapper.getWorkOrderUniqueRec(prtno, splcode, sono);
}
private String cardNextCode() {
String codePattern = "RBMES" + getRand("YYMM", 0);
int randNum1 = (int) (Math.random() * (1000 - 100 + 1) + 100);

@ -1,12 +1,10 @@
package org.springblade.erpdata.feign;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Hidden;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import org.springblade.erpdata.service.IErpDataProduceService;
@ -72,34 +70,4 @@ public class ErpDataProduceClient implements IErpDataProduceClient {
return R.data(erpDataProduceService.chkShjh(woCode, ypCode, partCode, productIdent, makeQty, memo));
}
@Override
public R<List<PpmReportDetailModelVO>> reviewFormMess(Boolean queryType, String reworkCode, String partCode, String batchNo) {
return R.data(erpDataProduceService.reviewFormMess(queryType, reworkCode, partCode, batchNo));
}
@Override
public R<List<MesRbRedoVO>> loadReworkPlan(String reworkCode, String partCode, String batchNo, Integer current, Integer size) {
return R.data(erpDataProduceService.loadReworkPlan(reworkCode, partCode, batchNo, current, size));
}
@Override
public R<Integer> loadReworkPlanSize(String reworkCode, String partCode, String batchNo) {
return R.data(erpDataProduceService.loadReworkPlanSize(reworkCode, partCode, batchNo));
}
@Override
public R<Boolean> completeOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, Integer bfqty, String userName) {
return R.status(erpDataProduceService.completeOrder(redono, seqno, prtno, splcode, amount, bfqty, userName));
}
@Override
public R<Boolean> receiveOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, String reqqty, String userName, int reworkgyFlag) {
return R.status(erpDataProduceService.receiveOrder(redono, seqno, prtno, splcode, amount, reqqty, userName, reworkgyFlag));
}
@Override
public R<List<MesRbRedoRoutDTO>> loadReworkNoProcess() {
return R.data(erpDataProduceService.loadReworkNoProcess());
}
}

@ -2,10 +2,7 @@ package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.Mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.erpdata.pojo.dto.ReworkProcessDTO;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
@ -30,12 +27,4 @@ public interface ErpDataProduceMapper extends Mapper {
String getCustodianByRecDept(String partCode, String recDept);
int loadReworkOrderSize(String reworkCode, String partCode, String batchNo);
List<PpmReportDetailModelVO> reviewFormMess(Boolean queryType, String reworkCode, String partCode, String batchNo);
List<MesRbRedoVO> loadReworkPlan(String reworkCode, String partCode, String batchNo, Integer current, Integer size);
Integer loadReworkPlanSize(String reworkCode, String partCode, String batchNo);
List<MesRbRedoRoutDTO> loadReworkNoProcess();
}

@ -104,76 +104,4 @@
</if>
</where>
</select>
<select id="reviewFormMess" resultType="org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO">
select a.code,
a.p5layer1,
a.p5layer3,
a.useproc,
a.useseq,
a.precode,
a.redodeptcode,
a.p1remark,
a.disposename,
a.deptcode,
a.p2layer1,
a.chker,
a.prtno,
a.lotno
from dba_mgr.v_mes_rb_qisbillqry a
<where>
<if test="queryType">
AND code = #{reworkCode}
</if>
<if test="!queryType">
AND prtno = #{partCode} AND lotno = #{batchNo}
</if>
</where>
</select>
<select id="loadReworkPlan" resultType="org.springblade.erpdata.pojo.vo.MesRbRedoVO">
SELECT *
FROM (
SELECT row_.*, ROWNUM rownum_
FROM (
SELECT
*
FROM
dba_mgr.v_mes_rb_redo
<where>
<if test="reworkCode != null and reworkCode != ''">
AND redono LIKE concat(concat('%', #{reworkCode}),'%')
</if>
<if test="partCode != null and partCode != ''">
AND prtno LIKE concat(concat('%', #{partCode}),'%')
</if>
<if test="batchNo != null and batchNo != ''">
AND splcode LIKE concat(concat('%', #{batchNo}),'%')
</if>
</where>
ORDER BY reqdate DESC
) row_
WHERE ROWNUM &lt;= (#{current} * #{size})
)
WHERE rownum_ &gt; (#{current} - 1) * #{size}
</select>
<select id="loadReworkPlanSize" resultType="java.lang.Integer">
SELECT
count(*)
FROM
dba_mgr.v_mes_rb_redo a
<where>
1 = 1
<if test="reworkCode != null and reworkCode != ''">
AND a.redono LIKE concat(concat('%', #{reworkCode}),'%')
</if>
<if test="partCode != null and partCode != ''">
AND a.prtno LIKE concat(concat('%', #{partCode}),'%')
</if>
<if test="batchNo != null and batchNo != ''">
AND a.splcode LIKE concat(concat('%', #{batchNo}),'%')
</if>
</where>
</select>
<select id="loadReworkNoProcess" resultType="org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO">
select a.* from dba_mgr.v_mes_rb_redogynull a order by a.recdate asc
</select>
</mapper>

@ -23,11 +23,10 @@
a.prodline
FROM dba_mgr.v_mes_rb_wo a
<where>
a.processlinedesc like '%4%'
AND a.processline NOT IN (SELECT KEY FROM dba_mgr.t_listelement WHERE listname = 'SJZJPROCESSLINE')
and a.wopordat <![CDATA[ >= ]]> TO_DATE(#{newlevdateMax}, 'YYYY-MM-DD HH24:MI:SS')
a.wopordat <![CDATA[ >= ]]> TO_DATE(#{newlevdateMax}, 'YYYY-MM-DD HH24:MI:SS')
</where>
order by a.wopordat desc
</select>
<select id="getNewlevdateMax" resultType="java.lang.String">

@ -1,8 +1,7 @@
package org.springblade.erpdata.service;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.erpdata.pojo.dto.ReworkProcessDTO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
@ -32,16 +31,4 @@ public interface IErpDataProduceService {
String chkShjh(String woCode, String ypCode, String partCode, String productIdent, Double makeQty, String memo);
Integer loadReworkOrderSize(String reworkCode, String partCode, String batchNo);
List<PpmReportDetailModelVO> reviewFormMess(Boolean queryType, String reworkCode, String partCode, String batchNo);
List<MesRbRedoVO> loadReworkPlan(String reworkCode, String partCode, String batchNo, Integer current, Integer size);
Integer loadReworkPlanSize(String reworkCode, String partCode, String batchNo);
boolean completeOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, Integer bfqty, String userName);
boolean receiveOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, String reqqty, String userName, int reworkgyFlag);
List<MesRbRedoRoutDTO> loadReworkNoProcess();
}

@ -1,11 +1,12 @@
package org.springblade.erpdata.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.erpdata.mapper.ErpDataProduceMapper;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.dto.ReworkProcessDTO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import org.springblade.erpdata.service.IErpDataProduceService;
@ -16,7 +17,10 @@ import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.stereotype.Service;
import java.sql.Types;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author litao
@ -132,104 +136,4 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService {
public Integer loadReworkOrderSize(String reworkCode, String partCode, String batchNo) {
return erpDataProduceMapper.loadReworkOrderSize(reworkCode, partCode, batchNo);
}
@Override
public List<PpmReportDetailModelVO> reviewFormMess(Boolean queryType, String reworkCode, String partCode, String batchNo) {
return erpDataProduceMapper.reviewFormMess(queryType, reworkCode, partCode, batchNo);
}
@Override
public List<MesRbRedoVO> loadReworkPlan(String reworkCode, String partCode, String batchNo, Integer current, Integer size) {
return erpDataProduceMapper.loadReworkPlan(reworkCode, partCode, batchNo, current, size);
}
@Override
public Integer loadReworkPlanSize(String reworkCode, String partCode, String batchNo) {
return erpDataProduceMapper.loadReworkPlanSize(reworkCode, partCode, batchNo);
}
@Override
public boolean completeOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, Integer bfqty, String userName) {
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
// 指定存储过程名(包含 DB Link)
.withProcedureName("pro_rbmesredoend")
// 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题)
.withoutProcedureColumnMetaDataAccess()
// 显式声明参数
.declareParameters(
new SqlParameter("v_redono", Types.VARCHAR),
new SqlParameter("v_seqno", Types.VARCHAR),
new SqlParameter("v_prtno", Types.VARCHAR),
new SqlParameter("v_splcode", Types.VARCHAR),
new SqlParameter("v_endqty", Types.VARCHAR),
new SqlParameter("v_enddat", Types.VARCHAR),
new SqlParameter("v_endman", Types.VARCHAR),
new SqlParameter("v_bfqty", Types.VARCHAR),
new SqlOutParameter("v_excnote", Types.VARCHAR),
new SqlOutParameter("v_excflag", Types.VARCHAR)
);
// 2. 封装输入参数
Map<String, Object> inParams = new HashMap<>();
inParams.put("v_redono", redono);
inParams.put("v_seqno", seqno);
inParams.put("v_prtno", prtno);
inParams.put("v_splcode", splcode);
inParams.put("v_endqty", amount);
inParams.put("v_enddat", new Date());
inParams.put("v_endman", userName);
inParams.put("v_bfqty", bfqty);
// 3. 执行并获取结果 Map
Map<String, Object> resultMap = jdbcCall.execute(inParams);
// 4. 提取输出参数
String excflag = (String) resultMap.get("v_excflag");
String excnote = (String) resultMap.get("v_excnote");
return !"0".equals(excflag);
}
@Override
public boolean receiveOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, String reqqty, String userName, int reworkgyFlag) {
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
// 指定存储过程名(包含 DB Link)
.withProcedureName("pro_rbmesredoend")
// 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题)
.withoutProcedureColumnMetaDataAccess()
// 显式声明参数
.declareParameters(
new SqlParameter("v_redono", Types.VARCHAR),
new SqlParameter("v_seqno", Types.VARCHAR),
new SqlParameter("v_prtno", Types.VARCHAR),
new SqlParameter("v_splcode", Types.VARCHAR),
new SqlParameter("v_amount", Types.VARCHAR),
new SqlParameter("v_recqty", Types.VARCHAR),
new SqlParameter("v_recdate", Types.VARCHAR),
new SqlParameter("v_recman", Types.VARCHAR),
new SqlParameter("v_reworkgyflag", Types.VARCHAR),
new SqlOutParameter("v_excnote", Types.VARCHAR),
new SqlOutParameter("v_excflag", Types.VARCHAR)
);
// 2. 封装输入参数
Map<String, Object> inParams = new HashMap<>();
inParams.put("v_redono", redono);
inParams.put("v_seqno", seqno);
inParams.put("v_prtno", prtno);
inParams.put("v_splcode", splcode);
inParams.put("v_amount", amount);
inParams.put("v_recqty", Double.valueOf(reqqty));
inParams.put("v_recdate", new Date());
inParams.put("v_recman", userName);
inParams.put("v_reworkgyflag", reworkgyFlag);
// 3. 执行并获取结果 Map
Map<String, Object> resultMap = jdbcCall.execute(inParams);
// 4. 提取输出参数
String excflag = (String) resultMap.get("v_excflag");
String excnote = (String) resultMap.get("v_excnote");
return !"0".equals(excflag);
}
@Override
public List<MesRbRedoRoutDTO> loadReworkNoProcess() {
return erpDataProduceMapper.loadReworkNoProcess();
}
}

@ -162,7 +162,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
mesRbWoList.forEach(mesRbWo -> {
YieldPlan yieldPlan=new YieldPlan();
yieldPlan.setProductIdent(mesRbWo.getPrtlotno());
yieldPlan.setYpQty(Long.valueOf(Math.round(Double.parseDouble(mesRbWo.getWoporqty()))));
yieldPlan.setYpQty(Long.valueOf(mesRbWo.getWoporqty()));
DsPartEntity part = apsOrderClient.getDsCraftListByCode(mesRbWo.getPrtno());
if(part != null){
yieldPlan.setYpArea(part.getArea());

@ -250,7 +250,7 @@ public class WorkOrderController extends BladeController {
@PostMapping("/receiveDispatcherFromOldMes")
@Operation(summary = "更新调度人员", description = "")
public R receiveDispatcherFromOldMes(@RequestBody JSONObject entity) {
// workOrderService.receiveDispatcherFromOldMes(entity.getLong("id"), entity.getLong("dispatcher"));
workOrderService.receiveDispatcherFromOldMes(entity.getLong("id"), entity.getLong("dispatcher"));
return R.success();
}

@ -164,7 +164,7 @@ public class WorkPlanController extends BladeController {
@PostMapping("/updateWorkPlan")
@Operation(summary = "更新作业计划", description = "")
public R updateWorkPlan(@RequestBody JSONObject entity) {
// workPlanService.updateWorkPlan(entity.getLong("id"), entity.getDate("factStartTime"), entity.getDate("factEndTime"));
workPlanService.updateWorkPlan(entity.getLong("id"), entity.getDate("factStartTime"), entity.getDate("factEndTime"));
return R.success();
}
}

Loading…
Cancel
Save