diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java index 35e0b51a3..fecacc087 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java @@ -50,4 +50,7 @@ public interface RemoteQualityService { @PostMapping("/qc-check-sample-task/createTask") public R createCheckSampleTask(); + + @PostMapping("/qc-check-sample-task/sendSampleRemind") + public R syncSendSampleCheckRemind(); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java index d314926ad..f2f433df4 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteQualityFallbackFactory.java @@ -72,6 +72,11 @@ public class RemoteQualityFallbackFactory implements FallbackFactory list = proOrderWorkorderService.getProductFillInList(proOrderWorkorder); + ExcelUtil util = new ExcelUtil<>(ProductFillIn.class); + util.exportExcel(response, list, "物料区位信息"); + } + + } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProductFillIn.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProductFillIn.java new file mode 100644 index 000000000..a93eee85a --- /dev/null +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProductFillIn.java @@ -0,0 +1,142 @@ +package com.op.plan.domain; + +import com.op.common.core.annotation.Excel; + +/** + * remark + * + * @author 019117 + * @date + */ +public class ProductFillIn { + + + /** + * 生产日期 + * **/ + @Excel(name = "生产日期") + private String productionDate; + + /** + * 工单号 + * **/ + @Excel(name = "工单号") + private String workOrderNumber; + + /** + * 物料编码 + * **/ + @Excel(name = "物料编码") + private String materialCode; + + /** + * 物料名称 + * **/ + @Excel(name = "物料名称") + private String materialName; + + /** + * 批次编码 + * **/ + @Excel(name = "批次编码") + private String batchCode; + + /** + * 批次数量 + * **/ + @Excel(name = "批次数量") + private String batchNumber; + + + /** + * 工厂编码 + * **/ + @Excel(name = "工厂编码") + private String factoryCode; + + + /** + * 地点 + * **/ + @Excel(name = "地点") + private String location; + + /** + * 区号 + * **/ + @Excel(name = "区号") + private String areaCode; + + + public String getProductionDate() { + return productionDate; + } + + public void setProductionDate(String productionDate) { + this.productionDate = productionDate; + } + + public String getWorkOrderNumber() { + return workOrderNumber; + } + + public void setWorkOrderNumber(String workOrderNumber) { + this.workOrderNumber = workOrderNumber; + } + + public String getMaterialCode() { + return materialCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getBatchCode() { + return batchCode; + } + + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + + public String getBatchNumber() { + return batchNumber; + } + + public void setBatchNumber(String batchNumber) { + this.batchNumber = batchNumber; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getAreaCode() { + return areaCode; + } + + public void setAreaCode(String areaCode) { + this.areaCode = areaCode; + } +} 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 2ec2c23d8..8bbcdfc11 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 @@ -268,5 +268,7 @@ public interface ProOrderWorkorderMapper { List getBPNBomList(ProOrderWorkorder proOrderWorkorder); List getPackType(@Param("workorderCodes")String[] workorderCodes); + + List getProductFillInList(ProOrderWorkorder proOrderWorkorder); } 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 270732040..298dc7dda 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 @@ -162,4 +162,6 @@ public interface IProOrderWorkorderService { List getBPNBomList(ProOrderWorkorder proOrderWorkorder); List getPackType(String[] workorderIds); + + List getProductFillInList(ProOrderWorkorder proOrderWorkorder); } 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 09a7230ff..e9cf6d15e 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 @@ -9,6 +9,7 @@ import com.op.common.core.domain.ExcelCol; import com.op.common.core.domain.R; import com.op.common.core.exception.ServiceException; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.ServletUtils; import com.op.common.core.utils.bean.BeanUtils; import com.op.common.core.utils.uuid.IdUtils; import com.op.common.core.web.domain.AjaxResult; @@ -1851,4 +1852,10 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { String s = "000800003044"; System.out.println(s.substring(3)); } + + @Override + @DS("#header.poolName") + public List getProductFillInList(ProOrderWorkorder proOrderWorkorder) { + return proOrderWorkorderMapper.getProductFillInList(proOrderWorkorder); + } } 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 f80a8f33d..fdb135aa8 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 @@ -1144,4 +1144,36 @@ and pow.del_flag = '0' + + + diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckBpController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckBpController.java new file mode 100644 index 000000000..7672636be --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckBpController.java @@ -0,0 +1,43 @@ +package com.op.quality.controller; + +import com.op.common.core.web.domain.AjaxResult; +import com.op.quality.domain.QcCheckBp; +import com.op.quality.service.IQcCheckBpService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * remark 白坯检验控制类 + * + * @author 019117 + * @date + */ + +@RestController +@RequestMapping("/checkBp") +public class QcCheckBpController { + + @Resource + private IQcCheckBpService qcCheckBpService; + + /** + * 获取需要检验的白坯列表 + * **/ + @GetMapping("/checkBpList") + public List getCheckBpList( QcCheckBp params ){ + return qcCheckBpService.getCheckBpList(params); + } + + + /** + * 提交检验结果 + * **/ + @PostMapping("/submitCheckResult") + public AjaxResult submitCheckResult(@RequestBody QcCheckBp params){ + qcCheckBpService.submitCheckResult(params); + return AjaxResult.success(); + } +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckSampleTaskController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckSampleTaskController.java index b281ce1dc..85a03bdca 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckSampleTaskController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcCheckSampleTaskController.java @@ -7,14 +7,17 @@ import com.op.common.core.web.domain.AjaxResult; import com.op.common.core.web.page.TableDataInfo; import com.op.common.log.annotation.Log; import com.op.common.log.enums.BusinessType; +import com.op.common.security.utils.SecurityUtils; import com.op.quality.domain.QcCheckSampleSignTask; import com.op.quality.domain.QcCheckSampleTask; +import com.op.quality.domain.QcCheckSampleTaskResult; import com.op.quality.domain.query.QcCheckSampleTaskQuery; import com.op.quality.service.IQcCheckSampleTaskService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.util.Date; import java.util.List; /** @@ -94,4 +97,31 @@ public class QcCheckSampleTaskController extends BaseController { return qcCheckSampleTaskService.createCheckSampleTask(); } + + /** 提交品质异常流程ZL0030 **/ + @PostMapping("/zl0030") + public AjaxResult submitCheckSampleTaskZl0030(@RequestBody QcCheckSampleTaskResult params) { + qcCheckSampleTaskService.submitCheckSampleTaskZl0030(params); + return success(); + } + + + /** 获取留样列表 **/ + @PostMapping("/add") + public AjaxResult add( @RequestBody QcCheckSampleSignTask params) { + params.setCreateTime(new Date()); + params.setSampleUserCode(SecurityUtils.getUsername()); + qcCheckSampleTaskService.insertQcCheckSampleSignTask(params); + return AjaxResult.success(); + } + + /** + * 发送留样复检提醒 + * **/ + @PostMapping("/sendSampleRemind") + public AjaxResult sendSampleCheckRemind() { + qcCheckSampleTaskService.sendSampleCheckRemind(); + return success(); + } + } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckBp.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckBp.java new file mode 100644 index 000000000..ad58cc787 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckBp.java @@ -0,0 +1,145 @@ +package com.op.quality.domain; + +import com.op.common.core.web.domain.BaseEntity; + +/** + * remark + * + * @author 019117 + * @date + */ +public class QcCheckBp extends BaseEntity { + + /** + * 物料编码 + * **/ + private String materialCode; + + /** + * 物料名称 + * **/ + private String materialName; + + /** + * checkDate + * **/ + private String checkDate; + + /** + * 检查数量 + * **/ + private Integer checkNum; + + /** + * 不良数量 + * **/ + private Integer badNum; + + /** + * 是否合格 + * **/ + private String isQualified; + + /** + * 不合格原因 + * **/ + private String unqualifiedReason; + + + /** + * 不良项 + * **/ + private String badItem; + + /** + * 工厂 + * **/ + private String factoryCode; + + /** + * 创建人名称 + * **/ + private String createUserName; + + + + public String getMaterialCode() { + return materialCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialName() { + return materialName; + } + + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getCheckDate() { + return checkDate; + } + + public void setCheckDate(String checkDate) { + this.checkDate = checkDate; + } + + public Integer getCheckNum() { + return checkNum; + } + + public void setCheckNum(Integer checkNum) { + this.checkNum = checkNum; + } + + public Integer getBadNum() { + return badNum; + } + + public void setBadNum(Integer badNum) { + this.badNum = badNum; + } + + public String getIsQualified() { + return isQualified; + } + + public void setIsQualified(String isQualified) { + this.isQualified = isQualified; + } + + public String getUnqualifiedReason() { + return unqualifiedReason; + } + + public void setUnqualifiedReason(String unqualifiedReason) { + this.unqualifiedReason = unqualifiedReason; + } + + public String getBadItem() { + return badItem; + } + + public void setBadItem(String badItem) { + this.badItem = badItem; + } + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleSignTask.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleSignTask.java index f63b14721..ba966c6e2 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleSignTask.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleSignTask.java @@ -1,6 +1,7 @@ package com.op.quality.domain; import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; import java.util.Date; @@ -10,7 +11,7 @@ import java.util.Date; * @author 019117 * @date */ -public class QcCheckSampleSignTask { +public class QcCheckSampleSignTask extends BaseEntity { /** id **/ private String id; @@ -26,6 +27,8 @@ public class QcCheckSampleSignTask { @Excel(name = "生产批号") private String incomeBatchNo; + private String workOrderCodeSap; + /** 留样时间 **/ @Excel(name = "留样时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date sampleTime; @@ -34,6 +37,9 @@ public class QcCheckSampleSignTask { @Excel(name = "留样数量") private String sampleNum; + /** 取样人工号 **/ + private String sampleUserCode; + /** 取样人 **/ @Excel(name = "取样人") private String sampleUserName; @@ -105,4 +111,20 @@ public class QcCheckSampleSignTask { public void setGainSampleAddress(String gainSampleAddress) { this.gainSampleAddress = gainSampleAddress; } + + public String getWorkOrderCodeSap() { + return workOrderCodeSap; + } + + public void setWorkOrderCodeSap(String workOrderCodeSap) { + this.workOrderCodeSap = workOrderCodeSap; + } + + public String getSampleUserCode() { + return sampleUserCode; + } + + public void setSampleUserCode(String sampleUserCode) { + this.sampleUserCode = sampleUserCode; + } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleTask.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleTask.java index 0f22e9c9c..9359bb130 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleTask.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleTask.java @@ -4,6 +4,7 @@ import com.op.common.core.annotation.Excel; import com.op.common.core.web.domain.BaseEntity; import java.util.Date; +import java.util.List; /** * @@ -20,6 +21,11 @@ public class QcCheckSampleTask extends BaseEntity { /** id **/ private String id; + /** + * 物料编码 + * **/ + private String materialCode; + /** 物料名称 **/ @Excel(name = "物料名称") private String materialName; @@ -36,6 +42,14 @@ public class QcCheckSampleTask extends BaseEntity { @Excel(name = "留样时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date sampleTime; + /** 留样人工号 **/ + @Excel(name = "留样人工号") + private String sampleUserCode; + + + /** 留样人姓名 **/ + @Excel(name = "留样人姓名") + private String sampleUserName; /** 留样数量 **/ @Excel(name = "留样数量") @@ -54,7 +68,7 @@ public class QcCheckSampleTask extends BaseEntity { private String firstCheckUserName; /** 第一次检验结果 **/ - @Excel(name = "第一次检验结果") + @Excel(name = "第一次检验结果", readConverterExp="M=合格,N=不合格") private String firstCheckResult; /** 第一次检验时间 **/ @@ -69,7 +83,7 @@ public class QcCheckSampleTask extends BaseEntity { private String secondCheckUserName; /** 第二次检验结果 **/ - @Excel(name = "第二次检验结果") + @Excel(name = "第二次检验结果", readConverterExp="M=合格,N=不合格") private String secondCheckResult; /** 第二次检验时间 **/ @@ -84,26 +98,40 @@ public class QcCheckSampleTask extends BaseEntity { private String thirdCheckUserName; /** 第三次检验结果 **/ - @Excel(name = "第三次检验结果") + @Excel(name = "第三次检验结果", readConverterExp="M=合格,N=不合格") private String thirdCheckResult; /** 第三次检验时间 **/ @Excel(name = "第三次检验时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private String thirdCheckTime; - /** 留样人工号 **/ - @Excel(name = "留样人工号") - private String sampleUserCode; - - - /** 留样人姓名 **/ - @Excel(name = "留样人姓名") - private String sampleUserName; - /** 订单号 **/ private String orderNo; + @Excel(name = "间隔6个月检验结果", readConverterExp="M=合格,N=不合格") + private String halfYearCheckResult; + + @Excel(name = "间隔6个月检验人") + private String halfYearCheckUserName; + + @Excel(name = "间隔6个月检验时间") + private String halfYearCheckTime; + + @Excel(name = "间隔12个月检验结果", readConverterExp="M=合格,N=不合格") + private String oneYearCheckResult; + + @Excel(name = "间隔12个月检验人") + private String oneYearCheckUserName; + + @Excel(name = "间隔12个月检验时间") + private String oneYearCheckTime; + + /** + * 检验结果 + * **/ + private List resultList; + public String getId() { return id; } @@ -279,4 +307,68 @@ public class QcCheckSampleTask extends BaseEntity { public void setSampleUserName(String sampleUserName) { this.sampleUserName = sampleUserName; } + + public String getMaterialCode() { + return materialCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public List getResultList() { + return resultList; + } + + public void setResultList(List resultList) { + this.resultList = resultList; + } + + public String getHalfYearCheckResult() { + return halfYearCheckResult; + } + + public void setHalfYearCheckResult(String halfYearCheckResult) { + this.halfYearCheckResult = halfYearCheckResult; + } + + public String getHalfYearCheckUserName() { + return halfYearCheckUserName; + } + + public void setHalfYearCheckUserName(String halfYearCheckUserName) { + this.halfYearCheckUserName = halfYearCheckUserName; + } + + public String getHalfYearCheckTime() { + return halfYearCheckTime; + } + + public void setHalfYearCheckTime(String halfYearCheckTime) { + this.halfYearCheckTime = halfYearCheckTime; + } + + public String getOneYearCheckResult() { + return oneYearCheckResult; + } + + public void setOneYearCheckResult(String oneYearCheckResult) { + this.oneYearCheckResult = oneYearCheckResult; + } + + public String getOneYearCheckUserName() { + return oneYearCheckUserName; + } + + public void setOneYearCheckUserName(String oneYearCheckUserName) { + this.oneYearCheckUserName = oneYearCheckUserName; + } + + public String getOneYearCheckTime() { + return oneYearCheckTime; + } + + public void setOneYearCheckTime(String oneYearCheckTime) { + this.oneYearCheckTime = oneYearCheckTime; + } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleTaskResult.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleTaskResult.java new file mode 100644 index 000000000..feda64146 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckSampleTaskResult.java @@ -0,0 +1,241 @@ +package com.op.quality.domain; + +import com.op.common.core.web.domain.BaseEntity; + +/** + * remark 留样复检发起oa流程 + * + * @author 019117 + * @date + */ +public class QcCheckSampleTaskResult extends BaseEntity { + + /** + * id + * **/ + private Long id; + + /** + * sampleTaskId + * **/ + private String sampleTaskId; + + /** + * 复检次数 + * **/ + private Integer checkTimes; + + /** + * 数量 + * **/ + private Integer quantity; + + /** + * 是否合格 + * **/ + private String isQualified; + + /** + * 是否发起oa流程 + * **/ + private String isApplyOa; + + /** + * 申请部门 + * **/ + private String applyDept; + + /** + * 发现地点 + * **/ + private String findPlace; + + /** + * 是否供应商问题 + * */ + private String isSupplierIssue; + + /** + * 异常范围 + * **/ + private String excRange; + + /** + * 所属车间 + * **/ + private String workshop; + + /** + * 是否需要主管审核 + * **/ + private String isNeedAudit; + + /** + * QC主管 + * **/ + private String qcManager; + + /** + * 质量主管 + * **/ + private String qtManager; + + /** + * 不合格描述 + * **/ + private String reason; + + /** + * requestId + * **/ + private String requestId; + + /** + * 创建人名称 + * **/ + private String createUserName; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSampleTaskId() { + return sampleTaskId; + } + + public void setSampleTaskId(String sampleTaskId) { + this.sampleTaskId = sampleTaskId; + } + + public Integer getCheckTimes() { + return checkTimes; + } + + public void setCheckTimes(Integer checkTimes) { + this.checkTimes = checkTimes; + } + + public String getQualified() { + return isQualified; + } + + public void setQualified(String qualified) { + isQualified = qualified; + } + + public String getIsApplyOa() { + return isApplyOa; + } + + public void setIsApplyOa(String isApplyOa) { + this.isApplyOa = isApplyOa; + } + + public String getApplyDept() { + return applyDept; + } + + public void setApplyDept(String applyDept) { + this.applyDept = applyDept; + } + + public String getFindPlace() { + return findPlace; + } + + public void setFindPlace(String findPlace) { + this.findPlace = findPlace; + } + + public String getExcRange() { + return excRange; + } + + public void setExcRange(String excRange) { + this.excRange = excRange; + } + + public String getWorkshop() { + return workshop; + } + + public void setWorkshop(String workshop) { + this.workshop = workshop; + } + + public String getQcManager() { + return qcManager; + } + + public void setQcManager(String qcManager) { + this.qcManager = qcManager; + } + + public String getQtManager() { + return qtManager; + } + + public void setQtManager(String qtManager) { + this.qtManager = qtManager; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getRequestId() { + return requestId; + } + + public void setRequestId(String requestId) { + this.requestId = requestId; + } + + public Integer getQuantity() { + return quantity; + } + + public void setQuantity(Integer quantity) { + this.quantity = quantity; + } + + public String getIsQualified() { + return isQualified; + } + + public void setIsQualified(String isQualified) { + this.isQualified = isQualified; + } + + public String getIsSupplierIssue() { + return isSupplierIssue; + } + + public void setIsSupplierIssue(String isSupplierIssue) { + this.isSupplierIssue = isSupplierIssue; + } + + public String getIsNeedAudit() { + return isNeedAudit; + } + + public void setIsNeedAudit(String isNeedAudit) { + this.isNeedAudit = isNeedAudit; + } + + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/query/QcCheckSampleTaskQuery.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/query/QcCheckSampleTaskQuery.java index 83bca89eb..e60b9ce4a 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/query/QcCheckSampleTaskQuery.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/query/QcCheckSampleTaskQuery.java @@ -30,6 +30,10 @@ public class QcCheckSampleTaskQuery { private String thirdDate; + private String searchFlag; + + private String intervalDate; + public String getQueryDate() { return queryDate; @@ -94,4 +98,20 @@ public class QcCheckSampleTaskQuery { public void setThirdDate(String thirdDate) { this.thirdDate = thirdDate; } + + public String getSearchFlag() { + return searchFlag; + } + + public void setSearchFlag(String searchFlag) { + this.searchFlag = searchFlag; + } + + public String getIntervalDate() { + return intervalDate; + } + + public void setIntervalDate(String intervalDate) { + this.intervalDate = intervalDate; + } } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckBpMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckBpMapper.java new file mode 100644 index 000000000..f66bea8a3 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckBpMapper.java @@ -0,0 +1,25 @@ +package com.op.quality.mapper; + +import com.op.quality.domain.QcCheckBp; +import com.op.quality.domain.QcCheckTaskIncome; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * remark + * + * @author 019117 + * @date + */ + +@Mapper +public interface QcCheckBpMapper { + + List getCheckBpList(QcCheckBp params ); + + void insertCheckBpResult( QcCheckTaskIncome task ); + + + +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckSampleTaskMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckSampleTaskMapper.java index 8541b5649..b7c78bdf0 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckSampleTaskMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckSampleTaskMapper.java @@ -2,6 +2,7 @@ package com.op.quality.mapper; import com.op.quality.domain.QcCheckSampleSignTask; import com.op.quality.domain.QcCheckSampleTask; +import com.op.quality.domain.QcCheckSampleTaskResult; import com.op.quality.domain.query.QcCheckSampleTaskQuery; import org.apache.ibatis.annotations.Mapper; @@ -55,7 +56,7 @@ public interface QcCheckSampleTaskMapper { /** - * 批量插入留样检验列表 + * 插入留样检验列表 * **/ int insertQcCheckSampleTask(QcCheckSampleTask params); @@ -64,4 +65,17 @@ public interface QcCheckSampleTaskMapper { * * **/ QcCheckSampleTask selectQcCheckSampleTask(QcCheckSampleTask params); + + /** + *根据id获取留样检验任务 + * **/ + QcCheckSampleTask selectQcCheckSampleTaskById(String id); + + List selectQcCheckSampleTaskResultByTaskId(String taskId); + + Long selectQcCheckSampleTaskResultId(QcCheckSampleTaskResult params); + + void insertQcCheckSampleTaskResult(QcCheckSampleTaskResult params); + + void insertQcCheckSampleSignTask( QcCheckSampleSignTask params); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckBpService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckBpService.java new file mode 100644 index 000000000..9d1532815 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckBpService.java @@ -0,0 +1,20 @@ +package com.op.quality.service; + +import com.op.quality.domain.QcCheckBp; + +import java.util.List; + +/** + * remark + * + * @author 019117 + * @date + */ +public interface IQcCheckBpService { + + List getCheckBpList( QcCheckBp params ); + + void submitCheckResult( QcCheckBp params ); + + +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckSampleTaskService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckSampleTaskService.java index 5ed946c49..e4935293c 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckSampleTaskService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckSampleTaskService.java @@ -3,6 +3,7 @@ package com.op.quality.service; import com.op.common.core.web.domain.AjaxResult; import com.op.quality.domain.QcCheckSampleSignTask; import com.op.quality.domain.QcCheckSampleTask; +import com.op.quality.domain.QcCheckSampleTaskResult; import com.op.quality.domain.query.QcCheckSampleTaskQuery; import java.util.List; @@ -42,4 +43,11 @@ public interface IQcCheckSampleTaskService { * **/ AjaxResult createCheckSampleTask(); + void submitCheckSampleTaskZl0030(QcCheckSampleTaskResult params); + + void insertQcCheckSampleSignTask(QcCheckSampleSignTask params); + + void sendSampleCheckRemind(); + + } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckBpServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckBpServiceImpl.java new file mode 100644 index 000000000..171456913 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckBpServiceImpl.java @@ -0,0 +1,74 @@ +package com.op.quality.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.quality.domain.QcCheckBp; +import com.op.quality.domain.QcCheckTaskIncome; +import com.op.quality.domain.QcCheckTaskProduce; +import com.op.quality.mapper.QcCheckBpMapper; +import com.op.quality.mapper.QcCheckTaskIncomeMapper; +import com.op.quality.mapper.QcCheckTaskProduceMapper; +import com.op.quality.service.IQcCheckBpService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * remark + * + * @author 019117 + * @date + */ +@Service +public class QcCheckBpServiceImpl implements IQcCheckBpService { + + @Resource + private QcCheckBpMapper qcCheckBpMapper; + + @Resource + private QcCheckTaskIncomeMapper qcCheckTaskIncomeMapper; + + @Override + @DS("#header.poolName") + public List getCheckBpList(QcCheckBp params) { + return qcCheckBpMapper.getCheckBpList(params); + } + + @Override + @DS("#header.poolName") + public void submitCheckResult(QcCheckBp params) { + QcCheckTaskIncome task = new QcCheckTaskIncome(); + String prefixNoStr = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate()); + String suffixNoStr = String.format("%04d", qcCheckTaskIncomeMapper.getTodayMaxNum(task)); + + task.setRecordId(IdUtils.fastSimpleUUID()); + task.setCheckNo(prefixNoStr + suffixNoStr); + task.setMaterialCode(params.getMaterialCode()); + task.setMaterialName(params.getMaterialName()); + task.setIncomeTime(new Date()); + task.setCheckStatus("2"); + task.setCheckManCode(params.getCreateBy()); + task.setCheckManName(params.getCreateUserName()); + task.setCheckTime(new Date()); + task.setCheckResult(params.getIsQualified()); + task.setStatus("0"); + task.setCreateTime(new Date()); + task.setFactoryCode(params.getFactoryCode()); + task.setCheckType("checkTypeLL"); + task.setNoOkQuality(new BigDecimal(params.getBadNum())); + task.setSampleQuality(new BigDecimal(params.getCheckNum())); + task.setTypeCode("material"); + task.setOrderType("bp"); + task.setRemark(params.getRemark()); + task.setRemarkCode(params.getBadItem()); + qcCheckBpMapper.insertCheckBpResult(task); + } + + +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckSampleTaskServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckSampleTaskServiceImpl.java index 1bf5f19cc..5a312ba5f 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckSampleTaskServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckSampleTaskServiceImpl.java @@ -1,22 +1,33 @@ package com.op.quality.service.impl; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson2.JSONObject; import com.alibaba.nacos.client.naming.utils.CollectionUtils; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +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.utils.uuid.UUID; import com.op.common.core.web.domain.AjaxResult; import com.op.quality.domain.QcCheckSampleSignTask; import com.op.quality.domain.QcCheckSampleTask; +import com.op.quality.domain.QcCheckSampleTaskResult; import com.op.quality.domain.query.QcCheckSampleTaskQuery; import com.op.quality.mapper.QcCheckSampleTaskMapper; +import com.op.quality.mapper.QcCheckTaskIncomeMapper; import com.op.quality.service.IQcCheckSampleTaskService; -import com.op.system.api.RemoteUserService; +import com.op.system.api.RemoteOpenService; +import com.op.system.api.domain.SysNoticeGroup; +import com.op.system.api.domain.dto.WechartDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; import static com.op.common.core.web.domain.AjaxResult.success; @@ -35,13 +46,59 @@ public class QcCheckSampleTaskServiceImpl implements IQcCheckSampleTaskService { @Resource private QcCheckSampleTaskMapper qcCheckSampleTaskMapper; + @Resource + private RemoteOpenService remoteOpenService; + + @Resource + private QcCheckTaskIncomeMapper qcCheckTaskIncomeMapper; /** * 留样检验任务列表 * **/ @Override @DS("#header.poolName") public List selectQcCheckSampleTaskList(QcCheckSampleTaskQuery query) { - return qcCheckSampleTaskMapper.selectQcCheckSampleTaskList(query); + List list = qcCheckSampleTaskMapper.selectQcCheckSampleTaskList(query); + for (QcCheckSampleTask task : list) { + List results = qcCheckSampleTaskMapper.selectQcCheckSampleTaskResultByTaskId(task.getId()); + if (results != null && !results.isEmpty()) { + for (QcCheckSampleTaskResult result : results) { + String user = result.getCreateUserName(); + String isQualified = result.getIsQualified(); + String checkTime = DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", result.getCreateTime()); + switch (result.getCheckTimes()) { + case 1: + task.setFirstCheckTime(checkTime); + task.setFirstCheckUserName(user); + task.setFirstCheckResult(isQualified); + break; + case 2: + task.setSecondCheckTime(checkTime); + task.setSecondCheckUserName(user); + task.setSecondCheckResult(isQualified); + break; + case 3: + task.setThirdCheckTime(checkTime); + task.setThirdCheckUserName(user); + task.setThirdCheckResult(isQualified); + break; + case 6: + task.setHalfYearCheckTime(checkTime); + task.setHalfYearCheckUserName(user); + task.setHalfYearCheckResult(isQualified); + break; + case 12: + task.setOneYearCheckTime(checkTime); + task.setOneYearCheckUserName(user); + task.setOneYearCheckResult(isQualified); + break; + default: break; + } + } + } + } + return list; + + } @@ -62,7 +119,15 @@ public class QcCheckSampleTaskServiceImpl implements IQcCheckSampleTaskService { @Override @DS("#header.poolName") public List selectQcWaitCheckSampleTaskList(QcCheckSampleTaskQuery query) { - return qcCheckSampleTaskMapper.selectQcWaitCheckSampleTaskList(query); + List list = qcCheckSampleTaskMapper.selectQcWaitCheckSampleTaskList(query); + //获取检验结果 + for (QcCheckSampleTask task : list) { + List results = qcCheckSampleTaskMapper.selectQcCheckSampleTaskResultByTaskId(task.getId()); + if (results != null && !results.isEmpty()) { + task.setResultList(results); + } + } + return list; } /** @@ -97,4 +162,169 @@ public class QcCheckSampleTaskServiceImpl implements IQcCheckSampleTaskService { return success(); } + @Override + @DS("#header.poolName") + public void submitCheckSampleTaskZl0030(QcCheckSampleTaskResult params) { + + QcCheckSampleTask task = qcCheckSampleTaskMapper.selectQcCheckSampleTaskById(params.getSampleTaskId()); + + if (ObjectUtil.isEmpty(task)){ + throw new RuntimeException("留样复检任务不存在"); + } + + Long id = qcCheckSampleTaskMapper.selectQcCheckSampleTaskResultId(params); + + //不合格发起OA流程 + if ("N".equals(params.getQualified()) && "0".equals(params.getIsApplyOa()) ){ + //新增留样检验发起oa流程记录 + + + //发起来料检验OA流程 + Map paramMap = new HashMap<>(); + //提交人工号 + paramMap.put("user",params.getCreateBy()); + //流程紧急度 + paramMap.put("requestLevel",0); + //流程名称 + paramMap.put("requestName","ZL0030-品质异常流程-留样复检-"+"(产品名称:"+task.getMaterialName()+")"); + //该流程对应的唯 + paramMap.put("workflowId","187461"); + + StringBuffer mainObject = new StringBuffer(); + mainObject.append("{"); + //产品名称 + mainObject.append("\"CPMC\":"+"\""+task.getMaterialName()+"\""); + //产品编码 + mainObject.append(",\"CPBM\":"+"\""+task.getMaterialCode()+"\""); + //0品质保障部 + mainObject.append(",\"SQBM\":"+"\""+params.getApplyDept()+"\""); + //申请人:默认当前用户 + mainObject.append(",\"SQR\":"+"\""+"MSL#"+params.getCreateBy()+"\""); + //申请时间 + mainObject.append(",\"SQSJ\":"+"\""+DateUtils.parseDateToStr("yyyy-MM-dd",new Date())+"\""); + //所属车间 + mainObject.append(",\"SCCJ\":"+"\""+"MSD#"+params.getWorkshop()+"\""); + //生产批号 + mainObject.append(",\"SCPH\":"+"\""+task.getIncomeBatchNo()+"\""); + //生产数量 + mainObject.append(",\"SCSL\":"+params.getQuantity()); + //发现地点 + mainObject.append(",\"FXDD\":"+"\""+params.getFindPlace()+"\""); + //发现日期 + mainObject.append(",\"FXRQ\":"+"\""+DateUtils.parseDateToStr("yyyy-MM-dd",new Date())+"\""); + //编号:流水号 年月日+四位流水号 + mainObject.append(",\"BH\":"+"\""+id+"\""); +// mainObject.append(",\"BH\":"+"\""+"202510230001"+"\""); + //*异常范围:下拉框榄菊所有工厂 1代表小榄工厂 + mainObject.append(",\"YCFW\":"+"\""+params.getExcRange()+"\""); + //品质异常描述 + mainObject.append(",\"PZYCMS\":"+"\""+params.getReason()+"\""); + if (StringUtils.isNotBlank(params.getRemark())){ + //备注 + mainObject.append(",\"Notes\":"+"\""+params.getRemark()+"\""); + } + //*是否需要主管审核 1否 0是 + mainObject.append(",\"SFXYZG\":"+"\""+params.getIsNeedAudit()+"\""); + //QC主管:SFXYZG字段为"是",则此项选择QC主管信息 + mainObject.append(",\"PGZG\":"+"\""+"MSL#"+params.getQcManager()+"\""); + //质量主管 660:朱继新 + mainObject.append(",\"PGZR\":"+"\""+"MSL#"+params.getQtManager()+"\""); + //*是否供应商问题 1非供应商问题 0是供应商问题 + mainObject.append(",\"SFGYSWT\":"+"\""+params.getIsSupplierIssue()+"\""); + + mainObject.append("}"); + paramMap.put("mainObject",mainObject.toString()); + + logger.info("流程Id 187461:"+ JSONObject.toJSONString(paramMap)); + + + AjaxResult res = remoteOpenService.OAInspection(paramMap); + + if (res.isSuccess()){ + params.setRequestId(res.get("data").toString()); + } + + } + + params.setId(id); + qcCheckSampleTaskMapper.insertQcCheckSampleTaskResult(params); + + } + + @Override + @DS("#header.poolName") + public void insertQcCheckSampleSignTask(QcCheckSampleSignTask task) { + if (StringUtils.isEmpty(task.getWorkOrderCodeSap())){ + throw new RuntimeException("工单号不能为空"); + } + if (!task.getWorkOrderCodeSap().startsWith("000")){ + task.setWorkOrderCodeSap("000"+task.getWorkOrderCodeSap()); + } + task.setId(IdUtils.fastSimpleUUID()); + qcCheckSampleTaskMapper.insertQcCheckSampleSignTask(task); + } + + @Override + public void sendSampleCheckRemind() { + //获取今天是几号 + String nowDate = DateUtils.parseDateToStr("dd", new Date()); + DynamicDataSourceContextHolder.push("ds_1000"); + try { + //获取需要发送的人员以及发送的模板 + SysNoticeGroup noticeQo = new SysNoticeGroup(); + noticeQo.setNoticeId(26L); + List notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo); + //1号发送6、12个月 + if ("01".equals(nowDate)){ + //间隔6个月 + handleSendMessage(notices, -6); + //间隔12个月 + handleSendMessage(notices, -12); + } + //15号发送1、2、3个月 + if ("15".equals(nowDate)){ + //间隔1个月 + handleSendMessage(notices, -1); + //间隔2个月 + handleSendMessage(notices, -2); + //间隔3个月 + handleSendMessage(notices, -3); + } + }finally { + DynamicDataSourceContextHolder.poll(); + } + + + } + + + private void handleSendMessage(List notices, Integer intervalMonth){ + QcCheckSampleTaskQuery query = new QcCheckSampleTaskQuery(); + String intervalDate = DateUtils.parseDateToStr("yyyy-MM", DateUtils.addMonths(new Date(), intervalMonth)); + query.setIntervalDate(intervalDate); + List list = qcCheckSampleTaskMapper.selectQcCheckSampleTaskList(query); + List messageList = new ArrayList<>(); + + if (!list.isEmpty()){ + List workOrderCode = list.stream() + .map(QcCheckSampleTask::getWorkOrderCodeSap) + .limit(10) + .collect(Collectors.toList()); + + for (SysNoticeGroup notice : notices) { + WechartDTO message = new WechartDTO(); + message.setUserId(notice.getWxId()); + String contentInfo = notice.getNoticeContent(); + contentInfo = contentInfo + .replace("${month}", Math.abs(intervalMonth)+"") + .replace("${workOrderCodes}", workOrderCode.toString()); + message.setText(contentInfo); + messageList.add(message); + } + } + + remoteOpenService.sendWeChartMessage(messageList); + + } + } diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckBpMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckBpMapper.xml new file mode 100644 index 000000000..90599297a --- /dev/null +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckBpMapper.xml @@ -0,0 +1,102 @@ + + + + + + + + insert into qc_check_task + + record_id, + check_no, + income_batch_no, + order_no, + material_code, + material_name, + quality, + noOk_quality, + unit, + supplier_code, + supplier_name, + income_time, + check_loc, + check_status, + check_man_code, + check_man_name, + check_time, + check_result, + status, + attr1, + attr2, + attr3, + attr4, + create_by, + create_time, + update_by, + update_time, + factory_code, + del_flag, + check_type, + type_code, + sample_quality, + order_type, + order_type_desc, + sample_code, + remark_code, + + + #{recordId}, + #{checkNo}, + #{incomeBatchNo}, + #{orderNo}, + #{materialCode}, + #{materialName}, + #{quality}, + #{noOkQuality}, + #{unit}, + #{supplierCode}, + #{supplierName}, + #{incomeTime}, + #{checkLoc}, + #{checkStatus}, + #{checkManCode}, + #{checkManName}, + #{checkTime}, + #{checkResult}, + #{status}, + #{attr1}, + #{attr2}, + #{attr3}, + #{attr4}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{factoryCode}, + #{delFlag}, + #{checkType}, + #{typeCode}, + #{sampleQuality}, + #{orderType}, + #{orderTypeDesc}, + #{sampleCode}, + #{remarkCode}, + + + + \ No newline at end of file diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckSampleTaskMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckSampleTaskMapper.xml index 8ca6f1e5e..841849d4d 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckSampleTaskMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckSampleTaskMapper.xml @@ -6,6 +6,7 @@ + @@ -34,25 +35,18 @@ - select - id, material_name, income_batch_no, work_order_code_sap, sample_time, - first_check_user_code, first_check_user_name, first_check_result, first_check_time, - second_check_user_code, second_check_user_name, second_check_result, second_check_time, - third_check_user_code, third_check_user_name, third_check_result, third_check_time - from qc_check_sample_task + SELECT + t.id, + t.material_name, + t.income_batch_no, + t.work_order_code_sap, + t.sample_time + FROM ( + SELECT + t.id, + t.material_name, + t.income_batch_no, + t.work_order_code_sap , + FORMAT ( t.sample_time, 'yyyy-MM' ) AS sample_date, + t.sample_time, + COALESCE ( r.check_times, 0 ) check_times + FROM qc_check_sample_task t + LEFT JOIN qc_check_sample_result r ON t.id = r.sample_task_id + ) t - - and CONVERT(VARCHAR(10), sample_time ,23) #{firstDate} - and first_check_result is null + t.sample_date is not null + + AND sample_date CASE WHEN DAY(GETDATE()) 14 THEN FORMAT(DATEADD(MONTH, -1, GETDATE()), 'yyyy-MM') ELSE FORMAT(GETDATE(), 'yyyy-MM') END + + + AND sample_date CASE WHEN DAY(GETDATE()) 14 THEN FORMAT(DATEADD(MONTH, -2, GETDATE()), 'yyyy-MM') ELSE FORMAT(DATEADD(MONTH, -1, GETDATE()), 'yyyy-MM') END + + + AND sample_date CASE WHEN DAY(GETDATE()) 14 THEN FORMAT(DATEADD(MONTH, -3, GETDATE()), 'yyyy-MM') ELSE FORMAT(DATEADD(MONTH, -2, GETDATE()), 'yyyy-MM') END + + + AND FORMAT(DATEADD(mm, -6, GETDATE()), 'yyyy-MM') >= t.sample_date + + + AND FORMAT(DATEADD(mm, -12, GETDATE()), 'yyyy-MM') >= t.sample_date - - UNION - select - id, material_name, income_batch_no, work_order_code_sap, sample_time, - first_check_user_code, first_check_user_name, first_check_result, first_check_time, - second_check_user_code, second_check_user_name, second_check_result, second_check_time, - third_check_user_code, third_check_user_name, third_check_result, third_check_time - from qc_check_sample_task - - - and CONVERT(VARCHAR(10), sample_time ,23) #{secondDate} - and second_check_result is null - - - UNION - select - id, material_name, income_batch_no, work_order_code_sap, sample_time, - first_check_user_code, first_check_user_name, first_check_result, first_check_time, - second_check_user_code, second_check_user_name, second_check_result, second_check_time, - third_check_user_code, third_check_user_name, third_check_result, third_check_time - from qc_check_sample_task - - - and CONVERT(VARCHAR(10), sample_time ,23) #{thirdDate} - and third_check_result is null + + and t.work_order_code_sap like concat('%', #{workOrderCodeSap}, '%') + + GROUP BY t.id, t.material_name, t.income_batch_no, t.work_order_code_sap, t.sample_time + + HAVING SUM(t.check_times) 1 + + + HAVING SUM(t.check_times) 3 + + + HAVING SUM(t.check_times) 6 + + + HAVING SUM(t.check_times) 12 + + + HAVING SUM(t.check_times) 24 + + ORDER BY t.sample_time desc @@ -173,6 +191,9 @@ first_check_result = #{firstCheckResult}, + + first_check_reason = #{firstCheckReason}, + first_check_time = #{firstCheckTime}, @@ -185,6 +206,9 @@ second_check_result = #{secondCheckResult}, + + second_check_reason = #{secondCheckReason}, + second_check_time = #{secondCheckTime}, @@ -197,6 +221,9 @@ third_check_result = #{thirdCheckResult}, + + third_check_reason = #{thirdCheckReason}, + third_check_time = #{thirdCheckTime}, @@ -298,5 +325,77 @@ WHERE material_name = #{materialName} AND work_order_code_sap = #{workOrderCodeSap} + + + + + + + + + insert into qc_check_sample_result ( + id,sample_task_id,check_times,quantity,qualified,apply_dept,find_place,supplier_issue, + exc_range,workshop,need_audit,qc_manager,qt_manager,reason,request_id,remark,create_by,create_user_name,create_time,is_apply_oa + ) + VALUES + ( + #{id},#{sampleTaskId},#{checkTimes},#{quantity},#{qualified},#{applyDept},#{findPlace},#{isSupplierIssue}, + #{excRange},#{workshop},#{isNeedAudit},#{qcManager},#{qtManager},#{reason},#{requestId},#{remark},#{createBy},#{createUserName},GETDATE(),#{isApplyOa} + ) + + + + + + INSERT INTO qc_check_sample_task ( + id, + material_name, + income_batch_no, + work_order_code_sap, + sample_num, + sample_user_code, + sample_user_name, + sample_time, + create_time + ) + VALUES + ( + #{id}, + #{materialName}, + #{incomeBatchNo}, + #{workOrderCodeSap}, + #{sampleNum}, + #{sampleUserCode}, + #{sampleUserName}, + #{sampleTime}, + #{createTime} + ) + \ No newline at end of file