diff --git a/op-modules/op-device/src/main/java/com/op/device/domain/dto/UpKeepOrderDTO.java b/op-modules/op-device/src/main/java/com/op/device/domain/dto/UpKeepOrderDTO.java index 2b33d50c2..937a65375 100644 --- a/op-modules/op-device/src/main/java/com/op/device/domain/dto/UpKeepOrderDTO.java +++ b/op-modules/op-device/src/main/java/com/op/device/domain/dto/UpKeepOrderDTO.java @@ -6,6 +6,8 @@ import java.util.List; public class UpKeepOrderDTO { private List ids; + private List orderCodes; + private String inspect; public String getInspect() { @@ -23,4 +25,12 @@ public class UpKeepOrderDTO { public void setIds(List ids) { this.ids = ids; } + + public List getOrderCodes() { + return orderCodes; + } + + public void setOrderCodes(List orderCodes) { + this.orderCodes = orderCodes; + } } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquUpkeepOrderServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquUpkeepOrderServiceImpl.java index 95d67e0f8..5c6c1069a 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquUpkeepOrderServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquUpkeepOrderServiceImpl.java @@ -1,24 +1,37 @@ package com.op.device.service.impl; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.context.SecurityContextHolder; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.StringUtils; import com.op.common.core.utils.uuid.IdUtils; import com.op.common.core.web.domain.AjaxResult; +import com.op.common.security.utils.SecurityUtils; import com.op.device.domain.*; import com.op.device.domain.dto.UpKeepOrderDTO; import com.op.device.mapper.*; import com.op.device.service.IEquUpkeepOrderService; +import com.op.system.api.RemoteOpenService; +import com.op.system.api.domain.SysNoticeGroup; import com.op.system.api.domain.SysUser; +import com.op.system.api.domain.dto.WechartDTO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; import static com.op.common.core.web.domain.AjaxResult.success; @@ -30,6 +43,7 @@ import static com.op.common.core.web.domain.AjaxResult.success; */ @Service public class EquUpkeepOrderServiceImpl implements IEquUpkeepOrderService { + protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private EquOrderMapper equOrderMapper; @Autowired @@ -45,6 +59,12 @@ public class EquUpkeepOrderServiceImpl implements IEquUpkeepOrderService { @Autowired private SparePartsLedgerMapper sparePartsLedgerMapper; + @Autowired + private RemoteOpenService remoteOpenService; + + @Autowired + private EquRepairOrderMapper equRepairOrderMapper; + /** * 查询保养工单 * @@ -249,6 +269,82 @@ public class EquUpkeepOrderServiceImpl implements IEquUpkeepOrderService { order.setOrderInspect(upKeepOrderDTO.getInspect()); equOrderMapper.updateEquOrder(order); } + + String orderCodes = ""; + List list = upKeepOrderDTO.getOrderCodes(); + for (String orderCode : list) { + orderCodes = orderCode + "、" + orderCodes ; + } + + String inspect = ""; + if(upKeepOrderDTO.getInspect().equals("noPass")){ + inspect = "不通过" ; + }else if(upKeepOrderDTO.getInspect().equals("pass")){ + inspect = "通过" ; + }else{ + inspect = "待检验" ; + } + + //PDA企业微信报修审核提醒 + //发企业微信--------------------开始(跟班组有关) + SimpleDateFormat myFmt=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); //规范时间格式 + SysNoticeGroup noticeQo = new SysNoticeGroup(); + noticeQo.setNoticeId(13L); + EquTeamUser equTeamUser = new EquTeamUser(); + equTeamUser.setUserName(SecurityUtils.getUsername()); + EquTeamUser equTeamUser1 = equRepairOrderMapper.getRepairPhoneNumber(equTeamUser); + Integer number = ids.size(); //个数 + List notices = equRepairOrderMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + List wecharts = new ArrayList<>(); + List userCodes = notices.stream() + .map(SysNoticeGroup::getUserCode) + .collect(Collectors.toList()); + for (SysNoticeGroup noticeDto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticeDto.getWxId()); + String contentInfo = noticeDto.getNoticeContent(); + contentInfo = contentInfo + .replace("${n}", "\n") + .replace("${number}", number.toString()) + .replace("${messageType}", "保养") + .replace("${result}", inspect + "\n") + .replace("${checkTime}", myFmt.format(DateUtils.getNowDate())+"\n") + ; + + //工单号 + if(StringUtils.isNotEmpty(orderCodes)){ + contentInfo = contentInfo.replace("${orderCodes}", orderCodes +"\n"); + }else{ + contentInfo = contentInfo.replace("${orderCodes}", "无"+"\n"); + } + + //检查人 + if(StringUtils.isNotEmpty(equTeamUser1.getNickName())){ + contentInfo = contentInfo.replace("${checkPeople}", equTeamUser1.getNickName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${checkPeople}", "无"+"\n"); + } + + Pattern p= Pattern.compile("<[^>]+>"); + Matcher m = p.matcher(contentInfo); + contentInfo = m.replaceAll(""); + System.out.println(contentInfo); + + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("保养结果检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + + new Thread(() -> { + AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("保养结果检验企业微信提醒结果:" + JSONObject.toJSONString(wxresult)); + + }).start(); + } + //发企业微信--------------------结束 + } return success(); } } diff --git a/op-modules/op-device/src/main/resources/mapper/device/DeviceTaskMapper.xml b/op-modules/op-device/src/main/resources/mapper/device/DeviceTaskMapper.xml index ace6103e3..038211833 100644 --- a/op-modules/op-device/src/main/resources/mapper/device/DeviceTaskMapper.xml +++ b/op-modules/op-device/src/main/resources/mapper/device/DeviceTaskMapper.xml @@ -38,14 +38,17 @@ diff --git a/op-modules/op-device/src/main/resources/mapper/device/EquRepairOrderMapper.xml b/op-modules/op-device/src/main/resources/mapper/device/EquRepairOrderMapper.xml index 832871983..40c7bc48f 100644 --- a/op-modules/op-device/src/main/resources/mapper/device/EquRepairOrderMapper.xml +++ b/op-modules/op-device/src/main/resources/mapper/device/EquRepairOrderMapper.xml @@ -352,7 +352,7 @@ from sys_notice_group sng left join sys_notice sn on sng.notice_id = sn.notice_id left join base_team_user btu on sng.group_code = btu.team_code - where sng.notice_id = #{noticeId} + where sng.notice_id = #{noticeId} and sng.del_flag = '0' diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java index 7f6dd6d61..02dca4703 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java @@ -358,9 +358,9 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { mesReportWork.setMachineCode(mesReportWork.getMachineCode()); MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); -// if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 -// sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); -// } + if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 + sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); + } if(sHzWorks==null){ return R.fail("未查询到一层报工单"); @@ -386,9 +386,9 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { mesReportWork.setMachineCode(mesReportWork.getMachineCode()); MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); -// if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 -// sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); -// } + if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 + sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); + } if(sHzWorks==null){ return R.fail("未查询到子报工单"); @@ -405,9 +405,9 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { mesReportWork.setMachineCode(mesReportWork.getMachineCode()); MesReportWork pHzWork = mesReportWorkMapper.getReportWorkHz(mesReportWork); -// if(pHzWork==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 -// pHzWork = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); -// } + if(pHzWork==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 + pHzWork = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); + } if(pHzWork==null){ return R.fail("未查询到母报工单"); @@ -444,9 +444,9 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { mesReportWork.setMachineCode(mesReportWork.getMachineCode()); MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); -// if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 -// sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); -// } + if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 + sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); + } if (sHzWorks == null) { return R.fail(workOrder.getWorkorderCode()+"未查询到报工单"); diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index 2b1ec9c0b..5a2fb1aa7 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml @@ -619,7 +619,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from mes_report_work where upload_status != #{uploadStatus} and prod_type = #{prodType} - and workorder_code = #{workorderCode} and del_flag='0' + and workorder_code = #{workorderCode} and del_flag='0' and (attr1 != '1' or attr1 is null) and machine_code = #{machineCode} diff --git a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java index bab4d9086..d413ab742 100644 --- a/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java +++ b/op-modules/op-open/src/main/java/com/op/open/controller/OpenController.java @@ -92,7 +92,7 @@ public class OpenController extends BaseController { } /** - * 创建生产过程(烘房 首检)检验 + * 创建生产过程(首检)检验 */ @PostMapping(value = "/createCheckProduceTask") public AjaxResult createCheckProduceTask(@RequestBody QcCheckTaskProduceDTO qcCheckTaskProduce) { @@ -116,6 +116,34 @@ public class OpenController extends BaseController { return toAjax(openService.insertQcCheckTaskProduce(qcCheckTaskProduce)); } + /** + * 创建批次成品检验 + */ + @PostMapping(value = "/createCheckProductTask") + public AjaxResult createCheckProductTask(@RequestBody QcCheckTaskProduceDTO qcCheckTaskProduce) { + + if (StringUtils.isBlank(qcCheckTaskProduce.getOrderNo())) { + return error("[orderNo]不能为空"); + } + if (StringUtils.isBlank(qcCheckTaskProduce.getIncomeBatchNo())) { + return error("[incomeBatchNo]不能为空"); + } + if (StringUtils.isBlank(qcCheckTaskProduce.getMaterialName())) { + return error("[materialName]不能为空"); + } + if (StringUtils.isBlank(qcCheckTaskProduce.getMaterialCode())) { + return error("[materialCode]不能为空"); + } + if (StringUtils.isBlank(qcCheckTaskProduce.getCheckType())) { + return error("[checkType]不能为空"); + } + if (StringUtils.isBlank(qcCheckTaskProduce.getFactoryCode())) { + return error("[factoryCode]不能为空"); + } + //添加检测任务 + return toAjax(openService.insertQcCheckTaskProduce(qcCheckTaskProduce)); + } + /** * ===============ZL0010-来料检验不合格控制流程提交 :"workflowId": 26235============= *

diff --git a/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java b/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java index fa441c9af..d73b7a564 100644 --- a/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java +++ b/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java @@ -91,5 +91,7 @@ public interface OpenMapper { List getNoticesGroup(SysNoticeGroup noticeQo); EquEquipmentDTO selectEquipmentDetailByEquipmentCode(String equipmentCode); + + List getNotices(SysNoticeGroup noticeQo); } diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index cd0fdf20a..4d49b5cca 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -75,8 +75,7 @@ public class OpenServiceImpl implements OpenService { @Autowired private OpenMapper openMapper; - @Autowired - private RemoteOpenService remoteOpenService; + private static Pattern p2= Pattern.compile("<[^>]+>"); /** * 下一工序机台集合获取 @@ -373,7 +372,7 @@ public class OpenServiceImpl implements OpenService { logger.info("上位机报修企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); if (!CollectionUtils.isEmpty(wecharts)) { new Thread(() -> { - AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts); + AjaxResult wxresult = this.sendWeChartMessage(wecharts); logger.info("上位机报修企业微信提醒结果:" + JSONObject.toJSONString(wxresult)); }).start(); @@ -391,7 +390,7 @@ public class OpenServiceImpl implements OpenService { // 1分钟不允许存在两条 Date lastData = openMapper.getLastTask(qcCheckTaskProduce); if(this.oneMinHas(lastData)){ - logger.info("【重复创建首检任务】orderNo:"+qcCheckTaskProduce.getOrderNo()+";"+"incomeBatchNo:"+qcCheckTaskProduce.getIncomeBatchNo()); + logger.info("【重复创建任务】orderNo:"+qcCheckTaskProduce.getOrderNo()+";"+"incomeBatchNo:"+qcCheckTaskProduce.getIncomeBatchNo()); return 0; } @@ -491,6 +490,37 @@ public class OpenServiceImpl implements OpenService { } int n = openMapper.addBatch(items); logger.info(qcCheckTaskProduce.getOrderNo()+":qc_check_task_detail新增" + n + "成功"); + + //发企业微信--------------------开始(跟班组有关) + SysNoticeGroup noticeQo = new SysNoticeGroup(); + if(qcCheckTaskProduce.getCheckType().equals("checkTypeCPPC")){ + noticeQo.setNoticeId(12L);//批次成品检验 + } + + List notices = openMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + + List wecharts = new ArrayList<>(); + for (SysNoticeGroup noticedto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticedto.getWxId()); + String contentInfo = noticedto.getNoticeContent(); + contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskProduce.getCheckNo()+"\n"); + Matcher matcher = p2.matcher(contentInfo); + contentInfo = matcher.replaceAll(""); + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + new Thread(() -> { + AjaxResult wxresult = this.sendWeChartMessage(wecharts); + logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(wxresult)); + + }).start(); + } + //发企业微信--------------------结束 + } return n; } diff --git a/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml index 97d1f0364..c6e8efcb0 100644 --- a/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml +++ b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml @@ -396,7 +396,7 @@ from sys_notice_group sng left join sys_notice sn on sng.notice_id = sn.notice_id left join base_team_user btu on sng.group_code = btu.team_code - where sng.notice_id = #{noticeId} + where sng.notice_id = #{noticeId} and sng.del_flag = '0' + diff --git a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java index 62a39335c..d2cfc77a3 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java @@ -7,9 +7,11 @@ import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson2.JSONObject; import com.op.common.core.exception.ServiceException; import com.op.plan.domain.ProOrder; +import com.op.plan.domain.ProOrderWorkorderBatch; import com.op.plan.domain.dto.SplitOrderDTO; import com.op.plan.service.IProWetMaterialPlanDetailService; import com.op.plan.service.IProWetMaterialPlanService; +import org.aspectj.weaver.loadtime.Aj; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; @@ -267,4 +269,37 @@ public class ProOrderWorkorderController extends BaseController { public List getUnReadComment(@RequestBody ProOrderWorkorder proOrderWorkorder) { return proOrderWorkorderService.getUnReadComment(proOrderWorkorder); } + + @RequiresPermissions("mes:pro:workorder:edit") + @Log(title = "批次编辑", businessType = BusinessType.OTHER) + @GetMapping("/getWorkOrderBatch/{workOrderCode}") + public TableDataInfo getWorkOrderBatch(@PathVariable String workOrderCode) { + List list = proOrderWorkorderService.getWorkOrderBatch(workOrderCode); + return getDataTable(list); + + } + @RequiresPermissions("mes:pro:workorder:edit") + @GetMapping("/getWorkOrderBatchInfo") + public AjaxResult getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch) { + return success(proOrderWorkorderService.getWorkOrderBatchInfo(proOrderWorkorderBatch)); + } + @RequiresPermissions("mes:pro:workorder:edit") + @PostMapping("/insertWorkOrderBatch") + public AjaxResult insertWorkOrderBatch(@RequestBody ProOrderWorkorderBatch proOrderWorkorderBatch) { + return toAjax(proOrderWorkorderService.insertWorkOrderBatch(proOrderWorkorderBatch)); + } + @RequiresPermissions("mes:pro:workorder:edit") + @PutMapping("/updateWorkOrderBatch") + public AjaxResult updateWorkOrderBatch(@RequestBody ProOrderWorkorderBatch proOrderWorkorderBatch) { + return toAjax(proOrderWorkorderService.updateWorkOrderBatch(proOrderWorkorderBatch)); + } + @RequiresPermissions("mes:pro:workorder:edit") + @DeleteMapping("/removeWorkOrderBatch/{batchCode}/{workOrderCode}") + public AjaxResult removeWorkOrderBatch(@PathVariable("batchCode") String batchCode, + @PathVariable("workOrderCode")String workorderCode) { + ProOrderWorkorderBatch newBatch = new ProOrderWorkorderBatch(); + newBatch.setBatchCode(batchCode); + newBatch.setWorkorderCode(workorderCode); + return toAjax(proOrderWorkorderService.deleteWorkOrderBatch(newBatch)); + } } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorderBatch.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorderBatch.java index 2fe0565d9..11b8c3d39 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorderBatch.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorderBatch.java @@ -79,6 +79,11 @@ public class ProOrderWorkorderBatch extends BaseEntity { @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String factoryCode; + private String workorderCode; + private String newBatchCode; + private Long newBatchQuantity; + + public void setBatchId(String batchId) { this.batchId = batchId; } @@ -167,6 +172,30 @@ public class ProOrderWorkorderBatch extends BaseEntity { return factoryCode; } + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getNewBatchCode() { + return newBatchCode; + } + + public void setNewBatchCode(String newBatchCode) { + this.newBatchCode = newBatchCode; + } + + public Long getNewBatchQuantity() { + return newBatchQuantity; + } + + public void setNewBatchQuantity(Long newBatchQuantity) { + this.newBatchQuantity = newBatchQuantity; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/CheckTaskBatchDTO.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/CheckTaskBatchDTO.java new file mode 100644 index 000000000..d2fa986ce --- /dev/null +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/CheckTaskBatchDTO.java @@ -0,0 +1,43 @@ +package com.op.plan.domain.dto; + +public class CheckTaskBatchDTO { + + private String incomeBatchNo; + + private String newIncomeBatchNo; + + private String orderNo; + + public CheckTaskBatchDTO(String incomeBatchNo, String newIncomeBatchNo, String orderNo) { + this.incomeBatchNo = incomeBatchNo; + this.newIncomeBatchNo = newIncomeBatchNo; + this.orderNo = orderNo; + } + public CheckTaskBatchDTO() { + + } + + public String getIncomeBatchNo() { + return incomeBatchNo; + } + + public void setIncomeBatchNo(String incomeBatchNo) { + this.incomeBatchNo = incomeBatchNo; + } + + public String getNewIncomeBatchNo() { + return newIncomeBatchNo; + } + + public void setNewIncomeBatchNo(String newIncomeBatchNo) { + this.newIncomeBatchNo = newIncomeBatchNo; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } +} diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/MesReportWorkBatchDTO.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/MesReportWorkBatchDTO.java new file mode 100644 index 000000000..392246a52 --- /dev/null +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/dto/MesReportWorkBatchDTO.java @@ -0,0 +1,50 @@ +package com.op.plan.domain.dto; + +public class MesReportWorkBatchDTO { + private String batch; + private String newBatch; + private String parentOrder; + private String workorderCode; + + public MesReportWorkBatchDTO(String batch, String newBatch, String parentOrder, String workorderCode) { + this.batch = batch; + this.newBatch = newBatch; + this.parentOrder = parentOrder; + this.workorderCode = workorderCode; + } + + public MesReportWorkBatchDTO() { + } + + public String getBatch() { + return batch; + } + + public void setBatch(String batch) { + this.batch = batch; + } + + public String getNewBatch() { + return newBatch; + } + + public void setNewBatch(String newBatch) { + this.newBatch = newBatch; + } + + public String getParentOrder() { + return parentOrder; + } + + public void setParentOrder(String parentOrder) { + this.parentOrder = parentOrder; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } +} diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java index 90a0cca42..7ba8bec1c 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java @@ -81,5 +81,9 @@ public interface ProOrderWorkorderBatchMapper { public int deleteBatch(String[] workorderIds); + int updateWorkorderBatch(ProOrderWorkorderBatch batch); + + int deleteWorkOrderBatch(@Param("batchCode") String batchCode,@Param("workOrderIds") String[] workOrderIds); + List checkBatchCodeByWorkOrderIds(@Param("workorderIds")String[] workorderIds,@Param("newbatchs") List newbatchs); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java index 4b687cab3..f4bd31643 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java @@ -1,9 +1,8 @@ package com.op.plan.mapper; -import com.op.plan.domain.Batch; -import com.op.plan.domain.ProOrder; -import com.op.plan.domain.ProOrderWorkorder; -import com.op.plan.domain.ProWetMaterialPlanDetail; +import com.op.plan.domain.*; +import com.op.plan.domain.dto.CheckTaskBatchDTO; +import com.op.plan.domain.dto.MesReportWorkBatchDTO; import com.op.system.api.domain.dto.BaseBomComponentDTO; import com.op.system.api.domain.dto.MesPrepareDTO; import com.op.system.api.domain.dto.MesPrepareDetailDTO; @@ -207,5 +206,15 @@ public interface ProOrderWorkorderMapper { int deleteWetMaterial(@Param("orderIds")String[] workorderIds); List getUnReadComment(ProOrderWorkorder proOrderWorkorder); + + List getWorkOrderBatch(@Param("workOrderCode") String workOrderCode); + + ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch); + + List selectWorkOrderIdByBatch(@Param("workorderCode") String workorderCode); + + int updateMesReportWorkBatch(MesReportWorkBatchDTO mesReportWorkBatchDTO); + + int updateCheckTaskBatch(CheckTaskBatchDTO checkTaskBatchDTO); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java index 1d83c0177..9706cbd28 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java @@ -3,6 +3,7 @@ package com.op.plan.service; import com.op.common.core.web.domain.AjaxResult; import com.op.plan.domain.ProOrderWorkorder; +import com.op.plan.domain.ProOrderWorkorderBatch; import com.op.plan.domain.dto.SplitOrderDTO; import java.util.List; @@ -137,4 +138,13 @@ public interface IProOrderWorkorderService { int deleteWetMaterial(String[] workorderIds); List getUnReadComment(ProOrderWorkorder proOrderWorkorder); + + List getWorkOrderBatch(String workOrderId); + + ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch); + + int insertWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch); + int updateWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch); + int deleteWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch); + } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index fc98bf43b..fcf98e0ee 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -13,6 +13,8 @@ import com.op.common.core.utils.uuid.IdUtils; import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.plan.domain.*; +import com.op.plan.domain.dto.CheckTaskBatchDTO; +import com.op.plan.domain.dto.MesReportWorkBatchDTO; import com.op.plan.domain.dto.ProOrderDTO; import com.op.plan.domain.dto.SplitOrderDTO; import com.op.plan.domain.vo.CascaderDTO; @@ -1133,6 +1135,147 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { return dtos; } + @Override + @DS("#header.poolName") + public List getWorkOrderBatch(String workOrderCode) { + List workOrderBatch = proOrderWorkorderMapper.getWorkOrderBatch(workOrderCode); + return workOrderBatch; + } + + @Override + @DS("#header.poolName") + public ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch) { + return proOrderWorkorderMapper.getWorkOrderBatchInfo(proOrderWorkorderBatch); + } + + @Override + @DS("#header.poolName") + public int insertWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch) { + String workOrderCode = proOrderWorkorderBatch.getWorkorderCode(); + String username = SecurityUtils.getUsername(); + + List workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode); + // 系数 + Long coefficient = 1L; + if(workOrders.size()==2){ + // 获取子母工单数量 + Optional pQuantity = workOrders.stream().filter(item -> "0".equals(item.getParentOrder())) + .findFirst().map(ProOrderWorkorder::getQuantitySplit); + Optional cQuantity = workOrders.stream().filter(item -> !"0".equals(item.getParentOrder())) + .findFirst().map(ProOrderWorkorder::getQuantitySplit); + + if (pQuantity.isPresent() && cQuantity.isPresent()) { + coefficient = cQuantity.get() / pQuantity.get(); + } + }else if(workOrders.size()==3){ + //TODO; + } + + int count = 0; + for (int m=0;m workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode); + + int count = 0; + for (int m=0;m workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode); + String[] workOrderIds = workOrders.stream().map(ProOrderWorkorder::getWorkorderId).toArray(String[]::new); + String batchCode = proOrderWorkorderBatch.getBatchCode(); + + return proOrderWorkorderBatchMapper.deleteWorkOrderBatch(batchCode,workOrderIds); + } + + + /** * 校验工单是否可以修改 * 如果工单已生成湿料计划则不允许修改 diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml index 239cd2c66..201166028 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml @@ -143,6 +143,28 @@ where workorder_id = #{workorderId} + + update pro_order_workorder_batch + + batch_id = #{batchId}, + batch_code = #{newBatchCode}, + batch_quantity = #{newBatchQuantity}, + status = #{status}, + remark = #{remark}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + attr4 = #{attr4}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + prod_type = #{prodType}, + factory_code = #{factoryCode}, + + where workorder_id = #{workorderId} and batch_code = #{batchCode} + and del_flag = '0' + update pro_order_workorder_batch @@ -169,5 +191,13 @@ #{workorderId} + + update pro_order_workorder_batch + set del_flag = '1' + where batch_code = #{batchCode} and workorder_id in + + #{workOrderId} + + diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml index ce24afe4e..cd2c3de29 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml @@ -603,6 +603,38 @@ order by pow.product_date desc + + + + + + insert into mes_prepare_detail ( @@ -827,4 +859,15 @@ #{orderId} + + update qc_check_task set income_batch_no = #{newIncomeBatchNo} + where income_batch_no = #{incomeBatchNo} and order_no = #{orderNo} + and del_flag = '0' + + + update mes_report_work set batch = #{newBatch} + where batch = #{batch} and (parent_order = #{parentOrder} or workorder_code = #{workorderCode}) + and del_flag = '0' + + diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckReportProductController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckReportProductController.java index b9d7741ff..d93a13a3d 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckReportProductController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckReportProductController.java @@ -43,15 +43,15 @@ public class QcCheckReportProductController extends BaseController { @GetMapping("/list") public TableDataInfo list(QcCheckReportIncome qcCheckReportIncome) { - //默认时间范围T 00:00:00~T+1 00:00:00 - if (StringUtils.isEmpty(qcCheckReportIncome.getCheckTimeStart())) { - qcCheckReportIncome.setCheckTimeStart(DateUtils.getDate() + " 00:00:00");//start - LocalDate date = LocalDate.now(); - LocalDate dateEnd = date.plusDays(1); - DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - String dateEndStr = dtf.format(dateEnd) + " 00:00:00"; - qcCheckReportIncome.setCheckTimeEnd(dateEndStr);//end - } +// //默认时间范围T 00:00:00~T+1 00:00:00 +// if (StringUtils.isEmpty(qcCheckReportIncome.getCheckTimeStart())) { +// qcCheckReportIncome.setCheckTimeStart(DateUtils.getDate() + " 00:00:00");//start +// LocalDate date = LocalDate.now(); +// LocalDate dateEnd = date.plusDays(1); +// DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); +// String dateEndStr = dtf.format(dateEnd) + " 00:00:00"; +// qcCheckReportIncome.setCheckTimeEnd(dateEndStr);//end +// } // if(StringUtils.isEmpty(qcCheckReportIncome.getCheckTimeStart())){ // qcCheckReportIncome.setCheckTimeStart(qcCheckReportIncome.getIncomeTimeStart());//start diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java index be1a4f805..e61a41608 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskIncomeController.java @@ -282,13 +282,23 @@ public class QcCheckTaskIncomeController extends BaseController { } /** - * 删除来料检验 + * 批量删除来料检验 + */ +// @RequiresPermissions("quality:qcIncome:remove") +// @Log(title = "来料检验", businessType = BusinessType.DELETE) +// @DeleteMapping("/{recordIds}") +// public AjaxResult remove(@PathVariable String[] recordIds) { +// return toAjax(qcCheckTaskIncomeService.deleteQcCheckTaskIncomeByRecordIds(recordIds)); +// } + + /** + * 单个删除来料检验 */ @RequiresPermissions("quality:qcIncome:remove") @Log(title = "来料检验", businessType = BusinessType.DELETE) - @DeleteMapping("/{recordIds}") - public AjaxResult remove(@PathVariable String[] recordIds) { - return toAjax(qcCheckTaskIncomeService.deleteQcCheckTaskIncomeByRecordIds(recordIds)); + @DeleteMapping("/{recordId}") + public AjaxResult remove(@PathVariable String recordId) { + return toAjax(qcCheckTaskIncomeService.deleteQcCheckTaskIncomeByRecordId(recordId)); } /** diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskInventoryController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskInventoryController.java index 3fd27733e..401986b0a 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskInventoryController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskInventoryController.java @@ -105,12 +105,22 @@ public class QcCheckTaskInventoryController extends BaseController { } /** - * 删除库存检验任务 + * 批量删除库存检验任务 + */ +// @RequiresPermissions("quality:qcInventory:remove") +//// @Log(title = "库存检验任务", businessType = BusinessType.DELETE) +//// @DeleteMapping("/{recordIds}") +//// public AjaxResult remove(@PathVariable String[] recordIds) { +//// return toAjax(qcCheckTaskInventoryService.deleteQcCheckTaskInventoryByRecordIds(recordIds)); +//// } + + /** + * 单个删除库存检验任务 */ @RequiresPermissions("quality:qcInventory:remove") @Log(title = "库存检验任务", businessType = BusinessType.DELETE) - @DeleteMapping("/{recordIds}") - public AjaxResult remove(@PathVariable String[] recordIds) { - return toAjax(qcCheckTaskInventoryService.deleteQcCheckTaskInventoryByRecordIds(recordIds)); + @DeleteMapping("/{recordId}") + public AjaxResult remove(@PathVariable String recordId) { + return toAjax(qcCheckTaskInventoryService.deleteQcCheckTaskInventoryByRecordId(recordId)); } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskProduceController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskProduceController.java index 0fcef0bbe..70cf1ae50 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskProduceController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskProduceController.java @@ -131,13 +131,23 @@ public class QcCheckTaskProduceController extends BaseController { } /** - * 删除生产过程检验任务 + * 批量删除生产过程检验任务 + */ +// @RequiresPermissions("quality:qcProduce:remove") +// @Log(title = "生产过程检验任务", businessType = BusinessType.DELETE) +// @DeleteMapping("/{recordIds}") +// public AjaxResult remove(@PathVariable String[] recordIds) { +// return toAjax(qcCheckTaskProduceService.deleteQcCheckTaskProduceByRecordIds(recordIds)); +// } + + /** + * 单个删除生产过程检验任务 */ @RequiresPermissions("quality:qcProduce:remove") @Log(title = "生产过程检验任务", businessType = BusinessType.DELETE) - @DeleteMapping("/{recordIds}") - public AjaxResult remove(@PathVariable String[] recordIds) { - return toAjax(qcCheckTaskProduceService.deleteQcCheckTaskProduceByRecordIds(recordIds)); + @DeleteMapping("/{recordId}") + public AjaxResult remove(@PathVariable String recordId) { + return toAjax(qcCheckTaskProduceService.deleteQcCheckTaskProduceByRecordId(recordId)); } /** diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskWarehousingController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskWarehousingController.java index 25462d042..213ea4506 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskWarehousingController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTaskWarehousingController.java @@ -157,7 +157,7 @@ public class QcCheckTaskWarehousingController extends BaseController { } /** - * 生产过程检验:巡检任务生产 + * 成品检验:成品检验任务 **/ @PostMapping("/createCPBatchTask") public R createCPBatchTask() { diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTypeProjectController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTypeProjectController.java index 0d9cd0416..fbbf3fdc8 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTypeProjectController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckTypeProjectController.java @@ -121,10 +121,9 @@ public class QcCheckTypeProjectController extends BaseController { return toAjax(qcCheckTypeProjectService.submitProjects(typeProjects)); } - //获取方案下拉 + //获取方案分页 @GetMapping("/getProjectOptions") public List getProjectOptions(QcCheckProject qcCheckProject) { - startPage(); List list = qcCheckTypeProjectService.getProjectOptions(qcCheckProject); return list; } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskWarehousing.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskWarehousing.java index d1497c146..04c3d0a1f 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskWarehousing.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskWarehousing.java @@ -177,6 +177,23 @@ public class QcCheckTaskWarehousing extends BaseEntity { private BigDecimal bNoOkquality; private BigDecimal cNoOkquality; private String workorderCode; + private String checkName; + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getCheckName() { + return checkName; + } + + public void setCheckName(String checkName) { + this.checkName = checkName; + } public BigDecimal getaNoOkquality() { return aNoOkquality; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskDetailMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskDetailMapper.java index 8b4daf3ea..6a78c32b4 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskDetailMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskDetailMapper.java @@ -66,4 +66,7 @@ public interface QcCheckTaskDetailMapper { public int addBatch(@Param("list") List items); List getProjectStatus(String belongTo); + + //逻辑删除详情表 + void deleteQcCheckTaskDetailByBelongTo(String recordId); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskProduceMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskProduceMapper.java index 0fd8942b5..fa3173796 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskProduceMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskProduceMapper.java @@ -86,4 +86,6 @@ public interface QcCheckTaskProduceMapper { public List getOrderWorksW2(ProOrderWorkorderDTO qoWork); public QcCheckTaskProduce getLastXJTask(QcCheckTaskProduce productTask); + + public List getOrderWorksW3(ProOrderWorkorderDTO qoWork); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskUserMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskUserMapper.java index c61983817..12175c6be 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskUserMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskUserMapper.java @@ -4,6 +4,7 @@ import java.util.List; import com.op.quality.domain.QcCheckTaskUser; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 来料检验任务--检查人Mapper接口 @@ -70,5 +71,7 @@ public interface QcCheckTaskUserMapper { public QcCheckTaskUser selectQcCheckTaskUserByBelongTo(String belongTo); - public int deleteQcCheckTaskUserByBelongTos(String[] belongToArray); + public int deleteQcCheckTaskUserByBelongTos(@Param("array") String[] belongToArray); + + public int deleteTaskDetailByBelongTos(@Param("array")String[] belongToArray); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskUserService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskUserService.java index 4daa64e31..f7aa7d9ad 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskUserService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskUserService.java @@ -72,4 +72,5 @@ public interface IQcCheckTaskUserService { public QcCheckTaskUser selectQcCheckTaskUserByBelongTo(String belongTo); public int insertQcCheckTaskUserPDA(List qcCheckTaskUserList); + } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportProductServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportProductServiceImpl.java index c37d15269..241495796 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportProductServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckReportProductServiceImpl.java @@ -70,6 +70,7 @@ public class QcCheckReportProductServiceImpl implements IQcCheckReportProductSer public List selectQcCheckReportIncomeList(QcCheckReportIncome qcCheckReportIncome) { qcCheckReportIncome.setDelFlag("0"); qcCheckReportIncome.setTypeCode("product"); + qcCheckReportIncome.setCheckType("checkTypeCP"); return qcCheckReportIncomeMapper.selectQcCheckReportIncomeList(qcCheckReportIncome); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java index 0137eb850..bf423908f 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java @@ -89,9 +89,15 @@ public class QcCheckTaskIncomeServiceImpl implements @Autowired private IQcCheckUnqualifiedService qcCheckUnqualifiedService; + @Autowired private QcProCheckService qcProCheckService; + @Autowired + private QcCheckTaskUserMapper qcCheckTaskUserMapper; + + private static Pattern p2= Pattern.compile("<[^>]+>"); + /** * 查询来料检验 * @@ -278,9 +284,9 @@ public class QcCheckTaskIncomeServiceImpl implements //发企业微信--------------------开始(跟班组无关) SysNoticeGroup noticeQo = new SysNoticeGroup(); noticeQo.setNoticeId(6L); - List notices = qcCheckTaskIncomeMapper.getNotices(noticeQo); + List notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo); if(!CollectionUtils.isEmpty(notices)) { - Pattern p0= Pattern.compile("<[^>]+>"); + List wecharts = new ArrayList<>(); //去主库查微信id DynamicDataSourceContextHolder.push("master");// 这是数据源的key @@ -293,7 +299,7 @@ public class QcCheckTaskIncomeServiceImpl implements wechart0.setUserId(wxid); String contentInfo = notices.get(0).getNoticeContent(); contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskIncome.getCheckNo()+"\n"); - Matcher m = p0.matcher(contentInfo); + Matcher m = p2.matcher(contentInfo); contentInfo = m.replaceAll(""); wechart0.setText(contentInfo); wecharts.add(wechart0); @@ -379,7 +385,13 @@ public class QcCheckTaskIncomeServiceImpl implements @Override @DS("#header.poolName") public int deleteQcCheckTaskIncomeByRecordId(String recordId) { - return qcCheckTaskIncomeMapper.deleteQcCheckTaskIncomeByRecordId(recordId); + //1.逻辑删除qc_check_task表 + qcCheckTaskIncomeMapper.deleteQcCheckTaskIncomeByRecordId(recordId); + //2.逻辑删除qc_check_task_detail表 + qcCheckTaskDetailMapper.deleteQcCheckTaskDetailByBelongTo(recordId); + //3.逻辑删除qc_check_task_user表 + qcCheckTaskUserMapper.deleteQcCheckTaskUserByBelongTo(recordId); + return 1; } @Override @@ -830,7 +842,6 @@ public class QcCheckTaskIncomeServiceImpl implements noticeQo.setNoticeId(9L); List notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo); if(!CollectionUtils.isEmpty(notices)) { - Pattern p= Pattern.compile("<[^>]+>"); List wecharts = new ArrayList<>(); for (SysNoticeGroup noticedto : notices) { WechartDTO wechart0 = new WechartDTO(); @@ -841,7 +852,7 @@ public class QcCheckTaskIncomeServiceImpl implements .replace("${checkNo}", qcCheckTaskIncome.getCheckNo()+"\n") .replace("${supplierName}", qcCheckTaskIncome.getSupplierName()+"\n") .replace("${quality}", qcCheckTaskIncome.getQuality()+"\n"); - Matcher m = p.matcher(contentInfo); + Matcher m = p2.matcher(contentInfo); contentInfo = m.replaceAll(""); wechart0.setText(contentInfo); wecharts.add(wechart0); diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskInventoryServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskInventoryServiceImpl.java index d85479b73..68512ce50 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskInventoryServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskInventoryServiceImpl.java @@ -59,6 +59,9 @@ public class QcCheckTaskInventoryServiceImpl implements IQcCheckTaskInventorySer @Autowired private QcSampleRuleMapper qcSampleRuleMapper; + @Autowired + private QcCheckTaskUserMapper qcCheckTaskUserMapper; + /** * 查询库存检验任务 * @@ -280,6 +283,12 @@ public class QcCheckTaskInventoryServiceImpl implements IQcCheckTaskInventorySer @Override @DS("#header.poolName") public int deleteQcCheckTaskInventoryByRecordId(String recordId) { - return qcCheckTaskInventoryMapper.deleteQcCheckTaskInventoryByRecordId(recordId); + //1.逻辑删除qc_check_task表 + qcCheckTaskInventoryMapper.deleteQcCheckTaskInventoryByRecordId(recordId); + //2.逻辑删除qc_check_task_detail表 + qcCheckTaskDetailMapper.deleteQcCheckTaskDetailByBelongTo(recordId); + //3.逻辑删除qc_check_task_user表 + qcCheckTaskUserMapper.deleteQcCheckTaskUserByBelongTo(recordId); + return 1; } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java index 0e4352ce3..a2e3fddc5 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskProduceServiceImpl.java @@ -85,6 +85,9 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService @Autowired private QcSampleRuleMapper qcSampleRuleMapper; + @Autowired + private QcCheckTaskUserMapper qcCheckTaskUserMapper; + /** * 查询生产过程检验任务 * @@ -336,7 +339,13 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService @Override @DS("#header.poolName") public int deleteQcCheckTaskProduceByRecordId(String recordId) { - return qcCheckTaskProduceMapper.deleteQcCheckTaskProduceByRecordId(recordId); + //1.逻辑删除qc_check_task表 + qcCheckTaskProduceMapper.deleteQcCheckTaskProduceByRecordId(recordId); + //2.逻辑删除qc_check_task_detail表 + qcCheckTaskDetailMapper.deleteQcCheckTaskDetailByBelongTo(recordId); + //3.逻辑删除qc_check_task_user表 + qcCheckTaskUserMapper.deleteQcCheckTaskUserByBelongTo(recordId); + return 1; } @Override diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskUserServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskUserServiceImpl.java index 569d6463f..b3caf4b05 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskUserServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskUserServiceImpl.java @@ -114,6 +114,7 @@ public class QcCheckTaskUserServiceImpl implements IQcCheckTaskUserService { @Override @DS("#header.poolName") public int deleteQcCheckTaskUserByBelongTos(String[] belongToArray) { + qcCheckTaskUserMapper.deleteTaskDetailByBelongTos(belongToArray); return qcCheckTaskUserMapper.deleteQcCheckTaskUserByBelongTos(belongToArray); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskWarehousingServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskWarehousingServiceImpl.java index 1ed7bd5e9..25359878e 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskWarehousingServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskWarehousingServiceImpl.java @@ -10,10 +10,13 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import ch.qos.logback.core.net.SyslogOutputStream; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.domain.R; @@ -27,8 +30,11 @@ import com.op.quality.domain.*; import com.op.quality.mapper.*; import com.op.quality.service.IQcCheckTaskDefectService; import com.op.quality.service.IQcCheckTaskUserService; +import com.op.system.api.RemoteOpenService; import com.op.system.api.RemoteUserService; +import com.op.system.api.domain.SysNoticeGroup; import com.op.system.api.domain.SysUser; +import com.op.system.api.domain.dto.WechartDTO; import com.op.system.api.domain.mes.ProOrderWorkorderDTO; import com.op.system.api.domain.quality.QcUserMaterialDTO; import org.slf4j.Logger; @@ -79,6 +85,10 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin private RemoteUserService remoteUserService; @Autowired private QcCheckTaskProduceMapper qcCheckTaskProduceMapper; + @Autowired + private RemoteOpenService remoteOpenService; + + private static Pattern p2= Pattern.compile("<[^>]+>"); /** * 查询成品入库检验任务 * @@ -153,18 +163,18 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin qctp.setTypeId(qcCheckTaskWarehousing.getCheckType());//生产过程检验 qctp.setMaterialCode(qcCheckTaskWarehousing.getMaterialCode());//特性 /**qc_check_type_project**/ - List items = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp); - if(CollectionUtils.isEmpty(items)){ - /**qc_material_group_detail**/ - QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskWarehousing.getMaterialCode()); - if(group == null){ - group = new QcMaterialGroupDetail(); - group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");//成品蚊香物料组 - } - qctp.setGroupId(group.getGroupId());//共性 - List itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp); - items.addAll(itemsGG); + List items = new ArrayList<>(); + List items0 = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp);//个性 + items.addAll(items0); + /**qc_material_group_detail**/ + QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskWarehousing.getMaterialCode()); + if(group == null){ + group = new QcMaterialGroupDetail(); + group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");//成品蚊香物料组 } + qctp.setGroupId(group.getGroupId());//共性 + List itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp); + items.addAll(itemsGG); /**qc_check_task_detail**/ if(CollectionUtils.isEmpty(items)){ @@ -241,6 +251,7 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin qcCheckTaskWarehousing.setSampleQuality(new BigDecimal(sampNum)); } /**qc_check_task**/ + qcCheckTaskWarehousing.setIncomeTime(DateUtils.getNowDate());//检验任务日期 int n = qcCheckTaskWarehousingMapper.insertQcCheckTaskWarehousing(qcCheckTaskWarehousing); logger.info("qc_check_task:"+n+"成功"); @@ -255,9 +266,38 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin } int s = qcCheckTaskDetailMapper.addBatch(items); -// /**pro_order_workorder**/ -// qcCheckTaskWarehousing.setStatus("w6"); -// qcCheckTaskWarehousingMapper.updateWorkOrderStauts(qcCheckTaskWarehousing); + //发企业微信--------------------开始(跟班组有关) + SysNoticeGroup noticeQo = new SysNoticeGroup(); + if(qcCheckTaskWarehousing.getCheckType().equals("checkTypeCP")){ + noticeQo.setNoticeId(7L);//成品检验 + }else if(qcCheckTaskWarehousing.getCheckType().equals("checkTypeCPPC")){ + noticeQo.setNoticeId(12L);//批次成品检验 + } + + List notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + + List wecharts = new ArrayList<>(); + for (SysNoticeGroup noticedto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticedto.getWxId()); + String contentInfo = noticedto.getNoticeContent(); + contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskWarehousing.getCheckNo() + "\n"); + Matcher matcher = p2.matcher(contentInfo); + contentInfo = matcher.replaceAll(""); + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("成品检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + new Thread(() -> { + AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("成品检验企业微信提醒结果:" + JSONObject.toJSONString(wxresult)); + + }).start(); + } + //发企业微信--------------------结束 + } logger.info("qc_check_task_detail:"+s+"成功"); return 1; } @@ -373,21 +413,15 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO(); qoWork.setStatus("w3"); //报工的 - List w3works = qcCheckTaskProduceMapper.getOrderWorksW2(qoWork); + List w3works = qcCheckTaskProduceMapper.getOrderWorksW3(qoWork); for(QcCheckTaskProduce productTask:w3works){ QcCheckTaskWarehousing cpTask = new QcCheckTaskWarehousing(); productTask.setCheckType("checkTypeCP");//入库检验 productTask.setOrderNo(productTask.getWorkorderCode()); BeanUtils.copyProperties(productTask,cpTask); - //是否已经存在入库检验 - QcCheckTaskProduce cpTask0 = qcCheckTaskProduceMapper.getLastXJTask(productTask); - if(cpTask0 != null){ - logger.info("++++++++++++入库检验任务生成:已经存在++++++++++++++"); - }else{ - int m = insertQcCheckTaskWarehousing(cpTask); - logger.info("++++++++++++入库检验任务生成" + m + "++++++++++++++"); - } + int m = insertQcCheckTaskWarehousing(cpTask); + logger.info("++++++++++++入库检验任务生成" + m + "++++++++++++++"); } logger.info("++++++++++++" + poolName + "++++入库检验巡检结束++++++++++"); } diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml index 2315acb27..8ac517870 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskDetailMapper.xml @@ -177,6 +177,12 @@ delete from qc_check_task_detail where record_id = #{recordId} + + update qc_check_task_detail + set del_flag = '1' + where belong_to = #{recordId} + + delete from qc_check_task_detail where record_id in diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml index 9d795b8b0..230216035 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskIncomeMapper.xml @@ -327,9 +327,11 @@ - - delete from qc_check_task where record_id = #{recordId} - + + update qc_check_task + set del_flag = '1' + where record_id = #{recordId} + delete from qc_check_task where record_id in @@ -494,7 +496,7 @@ from sys_notice_group sng left join sys_notice sn on sng.notice_id = sn.notice_id left join base_team_user btu on sng.group_code = btu.team_code - where sng.notice_id = #{noticeId} + where sng.notice_id = #{noticeId} and sng.del_flag = '0' + - - delete from qc_check_task_user where belong_to in - + + update qc_check_task_user set del_flag = '1' where belong_to in + #{belongTo} - + + + update qc_check_task_detail set del_flag = '1' where belong_to in + + #{belongTo} + + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskWarehousingMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskWarehousingMapper.xml index 89d33e94d..b908780a7 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskWarehousingMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskWarehousingMapper.xml @@ -35,6 +35,8 @@ + + @@ -53,7 +55,7 @@ qct.supplier_code, qct.supplier_name, qct.income_time, qct.check_loc, qct.check_status, qct.check_man_code, qct.check_man_name,qct.check_time, qct.check_result, qct.status, qct.create_by,qct.create_time, qct.update_by, qct.update_time,qct.check_type, qct.sample_quality, - qct.noOk_quality, q.type_code + qct.noOk_quality, q.type_code ,q.check_name checkName from qc_check_task qct left join qc_check_type q on q.id = qct.check_type @@ -221,10 +223,10 @@ delete from qc_check_task where record_id = #{recordId} - - delete from qc_check_task where record_id in + + update qc_check_task set del_flag = '1' where record_id in #{recordId} - + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml index 1403d928c..36c89b451 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeProjectMapper.xml @@ -122,7 +122,7 @@ from qc_check_type_project qctp left join qc_check_project qcp on qcp.id = qctp.project_id - where qctp.del_flag = '0' and qctp.status = '1' + where qctp.del_flag = '0' and qctp.status = '1' and qcp.del_flag='0' and qctp.group_id = #{groupId} and qctp.type_id = #{typeId} order by qctp.sort diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml index 1e99ea488..2ac41fdcd 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckUnqualifiedMapper.xml @@ -116,9 +116,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" quantity_split quality, unit, product_date incomeTime, - status + status, + workorder_name checkLocName from pro_order_workorder - where status != 'w5' and parent_order = '0' and workorder_code_sap is not null + where status != 'w6' and parent_order = '0' and workorder_code_sap is not null + and workorder_name is not null and workorder_code_sap like concat ('%',#{orderNo},'%') order by product_date desc @@ -135,7 +137,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from wms_product_put wpp left join mes_report_work mrw on wpp.work_order = mrw.report_code where 1=1 - and wpp.work_order like concat like ('%',#{orderNo}) + and wpp.work_order like concat ('%',#{orderNo}) order by wpp.create_time desc