diff --git a/JCO20231213_172552967.trc b/JCO20231213_172552967.trc new file mode 100644 index 000000000..d60026e46 --- /dev/null +++ b/JCO20231213_172552967.trc @@ -0,0 +1,91 @@ +main [17:25:52:968]: ******************** Wed Dec 13 17:25:52 CST 2023 *************************** +main [17:25:52:968]: SAP Java Connector (JCo) runtime information +main [17:25:52:968]: Java Runtime: +main [17:25:52:968]: Operating System : Windows 11 10.0 for amd64 +main [17:25:52:968]: Java VM : 1.8.0_321 Oracle Corporation +main [17:25:52:968]: Java Codepage : UTF8 +main [17:25:52:968]: Versions: +main [17:25:52:968]: JCo API : 3.0.8 (2011-11-28) +main [17:25:52:968]: JCo middleware name : JavaRfc +main [17:25:52:969]: JCo middleware : 2.2.7 +main [17:25:52:969]: JCo middleware native : 721.619 +main [17:25:52:969]: JCo library : D:\KHDF\op-modules\op-sap\sapjco3.dll +main [17:25:52:969]: +main [17:25:52:969]: ******************** Configuration *************************** + jco.trace_level = 1 + jco.trace_path = . + + +main [17:25:52:969]: ********************************************************************* +main [17:25:52:969]: Exception while setting system property to JCo property: jco.cpic_maxconv=202 com.sap.conn.jco.JCoRuntimeException: (131) JCO_ERROR_ILLEGAL_ARGUMENT: Value of property jco.cpic_maxconv causes null + at com.sap.conn.jco.rt.JCoRuntime.setPropertyValue(JCoRuntime.java:888) + at com.sap.conn.jco.rt.DefaultJCoRuntime.setPropertyValue(DefaultJCoRuntime.java:577) + at com.sap.conn.jco.rt.JCoRuntime.setSystemProperty(JCoRuntime.java:149) + at com.sap.conn.jco.rt.DefaultJCoRuntime.readSystemProperties(DefaultJCoRuntime.java:100) + at com.sap.conn.jco.rt.JCoRuntimeFactory.(JCoRuntimeFactory.java:24) + at java.lang.Class.forName0(Native Method) + at java.lang.Class.forName(Class.java:264) + at com.sap.conn.jco.JCo.createJCo(JCo.java:52) + at com.sap.conn.jco.JCo.(JCo.java:26) + at com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:77) + at com.op.sap.util.SAPConnUtils.connect(SAPConnUtils.java:24) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:486) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) + at com.op.sap.SapApplication.main(SapApplication.java:20) +Caused by: java.lang.NullPointerException + at com.sap.conn.rfc.engine.Trc.criticalTrace(Trc.java:472) + at com.sap.conn.rfc.driver.CpicDriver.setCpicMaxConv(CpicDriver.java:1061) + at com.sap.conn.rfc.engine.DefaultRfcRuntime.setCpicMaxConv(DefaultRfcRuntime.java:113) + at com.sap.conn.jco.rt.JCoRuntime.setPropertyValue(JCoRuntime.java:873) + ... 63 more + diff --git a/dev_jco_rfc.trc b/dev_jco_rfc.trc index afb113b4c..443ae4f27 100644 --- a/dev_jco_rfc.trc +++ b/dev_jco_rfc.trc @@ -1,118 +1,74 @@ -**** Error file opened at 20231205 092106 China Standard Time Rel 3.0.8 (2011-11-28) [721.619] -Error: >Tue Dec 05 09:21:06,526< RfcException: [null] - message: Connect to SAP gateway failed -Connection parameters: TYPE=A DEST=ABAP_AS_WITH_POOL ASHOST=192.168.230.50 SYSNR=00 PCS=1 - -LOCATION CPIC (TCP/IP) on local host with Unicode -ERROR partner '192.168.230.50:3300' not reached -TIME Tue Dec 05 09:21:06 2023 -RELEASE 721 -COMPONENT NI (network interface) -VERSION 40 -RC -10 -MODULE nixxi.cpp -LINE 3283 -DETAIL NiPConnect2: 192.168.230.50:3300 -SYSTEM CALL connect -ERRNO 10060 -ERRNO TEXT WSAETIMEDOUT: Connection timed out -COUNTER 2 - - Return code: RFC_FAILURE(1) - error group: 102 - key: RFC_ERROR_COMMUNICATION - -Error: >Tue Dec 05 09:23:26,607< RfcException: [null] - message: Connect to SAP gateway failed -Connection parameters: TYPE=A DEST=ABAP_AS_WITH_POOL ASHOST=192.168.230.50 SYSNR=00 PCS=1 - -LOCATION CPIC (TCP/IP) on local host with Unicode -ERROR partner '192.168.230.50:3300' not reached -TIME Tue Dec 05 09:23:26 2023 -RELEASE 721 -COMPONENT NI (network interface) -VERSION 40 -RC -10 -MODULE nixxi.cpp -LINE 3283 -DETAIL NiPConnect2: 192.168.230.50:3300 -SYSTEM CALL connect -ERRNO 10060 -ERRNO TEXT WSAETIMEDOUT: Connection timed out -COUNTER 2 - - Return code: RFC_FAILURE(1) - error group: 102 - key: RFC_ERROR_COMMUNICATION - - -**** Error file opened at 20231205 100000 China Standard Time Rel 3.0.8 (2011-11-28) [721.619] -Error: >Tue Dec 05 10:00:00,058< >RfcGetException rc (7) message: 数值范围对象 ZMESPROID 不存在 -Tue Dec 05 10:01:14,955< >RfcGetException rc (7) message: 数值范围对象 ZMESPROID 不存在 -Fri Dec 08 16:46:50,007< >RfcGetException rc (7) message: ##.#####,#### -Fri Dec 08 16:49:21,354< >RfcGetException rc (7) message: ##.#####,#### -Fri Dec 08 16:51:02,041< >RfcGetException rc (7) message: ##.#####,#### -Mon Dec 11 15:17:21,694< >RfcGetException rc (7) message: ##.#####,#### -Mon Dec 11 16:00:16,825< RfcException: [DEV|erpdev] - message: connection closed without message (CM_NO_DATA_RECEIVED) - Return code: RFC_CLOSED(6) - error group: 102 - key: RFC_ERROR_COMMUNICATION -Exception raised by DEV|erpdev - - -**** Error file opened at 20231211 172940 China Standard Time Rel 3.0.8 (2011-11-28) [721.619] -Error: >Mon Dec 11 17:29:40,539< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . -Mon Dec 11 17:30:08,292< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . -Mon Dec 11 17:30:54,764< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . -Mon Dec 11 17:33:28,521< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . -Mon Dec 11 17:35:37,983< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . -Mon Dec 11 17:37:48,395< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . -Mon Dec 11 18:20:25,371< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . -Mon Dec 11 18:20:41,130< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . -Mon Dec 11 18:21:52,709< >RfcGetException rc (7) message: Syntax error in program SAPLZMES . -Wed Dec 13 17:25:52,970< [JCoAPI] Exception while setting system property to JCo property: jco.cpic_maxconv=202 com.sap.conn.jco.JCoRuntimeException: (131) JCO_ERROR_ILLEGAL_ARGUMENT: Value of property jco.cpic_maxconv causes null + at com.sap.conn.jco.rt.JCoRuntime.setPropertyValue(JCoRuntime.java:888) + at com.sap.conn.jco.rt.DefaultJCoRuntime.setPropertyValue(DefaultJCoRuntime.java:577) + at com.sap.conn.jco.rt.JCoRuntime.setSystemProperty(JCoRuntime.java:149) + at com.sap.conn.jco.rt.DefaultJCoRuntime.readSystemProperties(DefaultJCoRuntime.java:100) + at com.sap.conn.jco.rt.JCoRuntimeFactory.(JCoRuntimeFactory.java:24) + at java.lang.Class.forName0(Native Method) + at java.lang.Class.forName(Class.java:264) + at com.sap.conn.jco.JCo.createJCo(JCo.java:52) + at com.sap.conn.jco.JCo.(JCo.java:26) + at com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:77) + at com.op.sap.util.SAPConnUtils.connect(SAPConnUtils.java:24) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:486) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) + at com.op.sap.SapApplication.main(SapApplication.java:20) +Caused by: java.lang.NullPointerException + at com.sap.conn.rfc.engine.Trc.criticalTrace(Trc.java:472) + at com.sap.conn.rfc.driver.CpicDriver.setCpicMaxConv(CpicDriver.java:1061) + at com.sap.conn.rfc.engine.DefaultRfcRuntime.setCpicMaxConv(DefaultRfcRuntime.java:113) + at com.sap.conn.jco.rt.JCoRuntime.setPropertyValue(JCoRuntime.java:873) + ... 63 more diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java index 721ae6a8d..bcda87193 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java @@ -30,4 +30,7 @@ public interface RemoteDeviceService { @PostMapping("/deviceTask/createEquipmentOperationTask") public R createEquipmentOperationTask(); + + @PostMapping("/deviceTask/equipmentBKTask") + public R equipmentBKTask(); } 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 new file mode 100644 index 000000000..6197718df --- /dev/null +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteQualityService.java @@ -0,0 +1,32 @@ +package com.op.system.api; + +import com.op.common.core.constant.ServiceNameConstants; +import com.op.common.core.domain.R; +import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; +import com.op.system.api.domain.quality.QcCheckTaskWarehousingDTO; +import com.op.system.api.factory.RemoteDeviceFallbackFactory; +import com.op.system.api.factory.RemoteQualityFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 用户服务 + * + * @author OP + */ +@FeignClient(contextId = "remoteQualityService", value = ServiceNameConstants.QMS_SERVICE, fallbackFactory = RemoteQualityFallbackFactory.class) + + + +public interface RemoteQualityService { + + @PostMapping("/qcProduce/createProduceXJTask") + public R createProduceXJTask(); + + @PostMapping("/qcIncome/createIncomeTask") + public R createIncomeTask(@RequestBody QcCheckTaskIncomeDTO qcCheckTaskIncome); + + @PostMapping("/qcWarehousing/createProductTask") + public R createProductTask(@RequestBody QcCheckTaskWarehousingDTO qcCheckTaskIncome); +} diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java index 5c5f3d793..d5993b186 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java @@ -85,10 +85,10 @@ public interface RemoteSapService { public R sapProductWarehousing(@RequestBody(required = false) List> mapList); /**获取采购订单*/ - @PostMapping("/sapPurchaseOrderSync") + @PostMapping("/sap/sapPurchaseOrderSync") public R sapPurchaseOrderSync(@RequestBody SapPurchaseOrderQuery sapPurchaseOrderQuery); /**采购订单收货过账*/ - @PostMapping("/sapPOrderGoodsReceipt") + @PostMapping("/sap/sapPOrderGoodsReceipt") public R sapPOrderGoodsReceipt(@RequestBody(required = false) List> mapList); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java index 9499fabf1..be6c83690 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/mes/ProOrderWorkorderDTO.java @@ -69,14 +69,6 @@ public class ProOrderWorkorderDTO extends TreeEntity { // 工艺名称 private String routeName; - public String getRouteName() { - return routeName; - } - - public void setRouteName(String routeName) { - this.routeName = routeName; - } - /** 产线编码 */ @Excel(name = "线体") private String prodLineCode; @@ -86,14 +78,6 @@ public class ProOrderWorkorderDTO extends TreeEntity { // TODO 暂时存放线体编码 private String prodLineName; - public String getProdLineName() { - return prodLineName; - } - - public void setProdLineName(String prodLineName) { - this.prodLineName = prodLineName; - } - /** 工单生产日期 */ @JsonFormat(pattern = "yyyy-MM-dd") @Excel(name = "工单生产日期", width = 30, dateFormat = "yyyy-MM-dd") @@ -138,14 +122,6 @@ public class ProOrderWorkorderDTO extends TreeEntity { /** 是否为底层节点 1是 0不是 */ private Integer endFlag; - public Integer getEndFlag() { - return endFlag; - } - - public void setEndFlag(Integer endFlag) { - this.endFlag = endFlag; - } - /** 班次名称(数据库无该字段,需自行查询) */ private String shiftDesc; @@ -153,14 +129,6 @@ public class ProOrderWorkorderDTO extends TreeEntity { private Integer carNum; private Integer sortNo; - public Integer getCarNum() { - return carNum; - } - - public void setCarNum(Integer carNum) { - this.carNum = carNum; - } - // 料罐id(湿料计划模块使用) private Integer bucketId; @@ -192,6 +160,36 @@ public class ProOrderWorkorderDTO extends TreeEntity { private BigDecimal quantitySplits; private String units; + public String getProdLineName() { + return prodLineName; + } + + public void setProdLineName(String prodLineName) { + this.prodLineName = prodLineName; + } + public String getRouteName() { + return routeName; + } + + public void setRouteName(String routeName) { + this.routeName = routeName; + } + public Integer getEndFlag() { + return endFlag; + } + + public void setEndFlag(Integer endFlag) { + this.endFlag = endFlag; + } + + public Integer getCarNum() { + return carNum; + } + + public void setCarNum(Integer carNum) { + this.carNum = carNum; + } + public String getWorkorderCodes() { return workorderCodes; } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskIncomeDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskIncomeDTO.java new file mode 100644 index 000000000..037a6dc69 --- /dev/null +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskIncomeDTO.java @@ -0,0 +1,478 @@ +package com.op.system.api.domain.quality; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 来料检验对象 qc_check_task_income + * + * @author Open Platform + * @date 2023-10-19 + */ +public class QcCheckTaskIncomeDTO extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** id */ + private String recordId; + + /** 检验任务编号 */ + @Excel(name = "检验任务编号") + private String checkNo; + + private String workorderCode; + + /** 来料批次号 */ + @Excel(name = "批次号") + private String incomeBatchNo; + + /** 订单号 */ + @Excel(name = "订单号") + private String orderNo; + + /** 物料号 */ + @Excel(name = "物料号") + private String materialCode; + + /** 物料名称 */ + @Excel(name = "物料名称") + private String materialName; + + /** 收货数量 */ + @Excel(name = "收货数量") + private BigDecimal quality; + + @Excel(name = "不合格数量") + private BigDecimal noOkQuality; + + /** 单位 */ + @Excel(name = "单位") + private String unit; + + /** 供应商编码 */ + @Excel(name = "供应商编码") + private String supplierCode; + + /** 供应商名称 */ + @Excel(name = "供应商名称") + private String supplierName; + + /** 来料时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "来料时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date incomeTime; + + /** 检测地点 */ + @Excel(name = "检测地点") + private String checkLoc; + + /** 检测状态 */ + @Excel(name = "检测状态") + private String checkStatus; + + /** 检测人工号 */ + @Excel(name = "检测人工号") + private String checkManCode; + + /** 检测人姓名 */ + @Excel(name = "检测人姓名") + private String checkManName; + + /** 检验时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "检验时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private Date checkTime; + + /** 检验结果Y合格 */ + @Excel(name = "检验结果Y合格") + private String checkResult; + + /** 是否启用1启用0停用 */ + @Excel(name = "是否启用1启用0停用") + private String status; + + /** 预留字段1 */ + //@Excel(name = "预留字段1") + private String attr1; + + /** 预留字段2 */ + //@Excel(name = "预留字段2") + private String attr2; + + /** 预留字段3 */ + //@Excel(name = "预留字段3") + private String attr3; + + /** 预留字段4 */ + //@Excel(name = "预留字段4") + private String attr4; + + /** 工厂编码 */ + @Excel(name = "工厂编码") + private String factoryCode; + + /** 删除标识1删除0正常 */ + private String delFlag; + + private String incomeTimeStart; + private String incomeTimeEnd; + private String checkTimeStart; + private String checkTimeEnd; + private String typeCode; + private String checkType; + private String qualityStatus; + private String batchCode; + private String batchId; + private List qcCheckTaskDetails; + + private BigDecimal sampleQuality; + private BigDecimal aNoOkquality; + private BigDecimal bNoOkquality; + private BigDecimal cNoOkquality; + private String orderType; + + public String getOrderType() { + return orderType; + } + + public void setOrderType(String orderType) { + this.orderType = orderType; + } + + public BigDecimal getSampleQuality() { + return sampleQuality; + } + + public void setSampleQuality(BigDecimal sampleQuality) { + this.sampleQuality = sampleQuality; + } + + public BigDecimal getaNoOkquality() { + return aNoOkquality; + } + + public void setaNoOkquality(BigDecimal aNoOkquality) { + this.aNoOkquality = aNoOkquality; + } + + public void setbNoOkquality(BigDecimal bNoOkquality) { + this.bNoOkquality = bNoOkquality; + } + + public void setcNoOkquality(BigDecimal cNoOkquality) { + this.cNoOkquality = cNoOkquality; + } + + public BigDecimal getbNoOkquality() { + return bNoOkquality; + } + + public BigDecimal getcNoOkquality() { + return cNoOkquality; + } + + public List getQcCheckTaskDetails() { + return qcCheckTaskDetails; + } + + public void setQcCheckTaskDetails(List qcCheckTaskDetails) { + this.qcCheckTaskDetails = qcCheckTaskDetails; + } + + public String getBatchCode() { + return batchCode; + } + + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + + public String getBatchId() { + return batchId; + } + + public void setBatchId(String batchId) { + this.batchId = batchId; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getQualityStatus() { + return qualityStatus; + } + + public void setQualityStatus(String qualityStatus) { + this.qualityStatus = qualityStatus; + } + + public BigDecimal getNoOkQuality() { + return noOkQuality; + } + + public void setNoOkQuality(BigDecimal noOkQuality) { + this.noOkQuality = noOkQuality; + } + + public String getCheckType() { + return checkType; + } + + public void setCheckType(String checkType) { + this.checkType = checkType; + } + + public String getTypeCode() { + return typeCode; + } + + public void setTypeCode(String typeCode) { + this.typeCode = typeCode; + } + + public String getIncomeTimeStart() { + return incomeTimeStart; + } + + public void setIncomeTimeStart(String incomeTimeStart) { + this.incomeTimeStart = incomeTimeStart; + } + + public String getIncomeTimeEnd() { + return incomeTimeEnd; + } + + public void setIncomeTimeEnd(String incomeTimeEnd) { + this.incomeTimeEnd = incomeTimeEnd; + } + + public String getCheckTimeStart() { + return checkTimeStart; + } + + public void setCheckTimeStart(String checkTimeStart) { + this.checkTimeStart = checkTimeStart; + } + + public String getCheckTimeEnd() { + return checkTimeEnd; + } + + public void setCheckTimeEnd(String checkTimeEnd) { + this.checkTimeEnd = checkTimeEnd; + } + + public void setRecordId(String recordId) { + this.recordId = recordId; + } + + public String getRecordId() { + return recordId; + } + public void setCheckNo(String checkNo) { + this.checkNo = checkNo; + } + + public String getCheckNo() { + return checkNo; + } + public void setIncomeBatchNo(String incomeBatchNo) { + this.incomeBatchNo = incomeBatchNo; + } + + public String getIncomeBatchNo() { + return incomeBatchNo; + } + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getOrderNo() { + return orderNo; + } + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialCode() { + return materialCode; + } + public void setMaterialName(String materialName) { + this.materialName = materialName; + } + + public String getMaterialName() { + return materialName; + } + public void setQuality(BigDecimal quality) { + this.quality = quality; + } + + public BigDecimal getQuality() { + return quality; + } + public void setUnit(String unit) { + this.unit = unit; + } + + public String getUnit() { + return unit; + } + public void setSupplierCode(String supplierCode) { + this.supplierCode = supplierCode; + } + + public String getSupplierCode() { + return supplierCode; + } + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + + public String getSupplierName() { + return supplierName; + } + public void setIncomeTime(Date incomeTime) { + this.incomeTime = incomeTime; + } + + public Date getIncomeTime() { + return incomeTime; + } + public void setCheckLoc(String checkLoc) { + this.checkLoc = checkLoc; + } + + public String getCheckLoc() { + return checkLoc; + } + public void setCheckStatus(String checkStatus) { + this.checkStatus = checkStatus; + } + + public String getCheckStatus() { + return checkStatus; + } + public void setCheckManCode(String checkManCode) { + this.checkManCode = checkManCode; + } + + public String getCheckManCode() { + return checkManCode; + } + public void setCheckManName(String checkManName) { + this.checkManName = checkManName; + } + + public String getCheckManName() { + return checkManName; + } + public void setCheckTime(Date checkTime) { + this.checkTime = checkTime; + } + + public Date getCheckTime() { + return checkTime; + } + public void setCheckResult(String checkResult) { + this.checkResult = checkResult; + } + + public String getCheckResult() { + return checkResult; + } + public void setStatus(String status) { + this.status = status; + } + + public String getStatus() { + return status; + } + public void setAttr1(String attr1) { + this.attr1 = attr1; + } + + public String getAttr1() { + return attr1; + } + public void setAttr2(String attr2) { + this.attr2 = attr2; + } + + public String getAttr2() { + return attr2; + } + public void setAttr3(String attr3) { + this.attr3 = attr3; + } + + public String getAttr3() { + return attr3; + } + public void setAttr4(String attr4) { + this.attr4 = attr4; + } + + public String getAttr4() { + return attr4; + } + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getFactoryCode() { + return factoryCode; + } + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getDelFlag() { + return delFlag; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("recordId", getRecordId()) + .append("checkNo", getCheckNo()) + .append("incomeBatchNo", getIncomeBatchNo()) + .append("orderNo", getOrderNo()) + .append("materialCode", getMaterialCode()) + .append("materialName", getMaterialName()) + .append("quality", getQuality()) + .append("unit", getUnit()) + .append("supplierCode", getSupplierCode()) + .append("supplierName", getSupplierName()) + .append("incomeTime", getIncomeTime()) + .append("checkLoc", getCheckLoc()) + .append("checkStatus", getCheckStatus()) + .append("checkManCode", getCheckManCode()) + .append("checkManName", getCheckManName()) + .append("checkTime", getCheckTime()) + .append("checkResult", getCheckResult()) + .append("status", getStatus()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("factoryCode", getFactoryCode()) + .append("delFlag", getDelFlag()) + .toString(); + } +} diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskProduceDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskProduceDTO.java index 2e6cf0da2..ab8ba8bca 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskProduceDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskProduceDTO.java @@ -148,6 +148,16 @@ public class QcCheckTaskProduceDTO extends BaseEntity { @Excel(name = "C类不合格数量") private BigDecimal cNoOkquality; + private String workorderCode; + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + public Date getProduceDate() { return produceDate; } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/quality/QcCheckTaskIncomeDto.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskWarehousingDTO.java similarity index 93% rename from op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/quality/QcCheckTaskIncomeDto.java rename to op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskWarehousingDTO.java index a6cd94bda..47f4b0bb1 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/dto/quality/QcCheckTaskIncomeDto.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcCheckTaskWarehousingDTO.java @@ -1,4 +1,4 @@ -package com.op.system.api.domain.dto.quality; +package com.op.system.api.domain.quality; import com.fasterxml.jackson.annotation.JsonFormat; import com.op.common.core.annotation.Excel; @@ -10,12 +10,12 @@ import java.math.BigDecimal; import java.util.Date; /** - * 来料检验对象 qc_check_task_income + * 成品入库检验任务对象 qc_check_task_warehousing * * @author Open Platform * @date 2023-10-19 */ -public class QcCheckTaskIncomeDto extends BaseEntity { +public class QcCheckTaskWarehousingDTO extends BaseEntity { private static final long serialVersionUID = 1L; /** id */ @@ -25,8 +25,8 @@ public class QcCheckTaskIncomeDto extends BaseEntity { @Excel(name = "检验任务编号") private String checkNo; - /** 来料批次号 */ - @Excel(name = "来料批次号") + /** 批次号 */ + @Excel(name = "批次号") private String incomeBatchNo; /** 订单号 */ @@ -41,25 +41,25 @@ public class QcCheckTaskIncomeDto extends BaseEntity { @Excel(name = "物料名称") private String materialName; - /** 收货数量 */ - @Excel(name = "收货数量") + /** 数量 */ + @Excel(name = "数量") private BigDecimal quality; /** 单位 */ @Excel(name = "单位") private String unit; - /** 供应商编码 */ - @Excel(name = "供应商编码") + /** 仓库编码 */ + @Excel(name = "仓库编码") private String supplierCode; - /** 供应商名称 */ - @Excel(name = "供应商名称") + /** 仓库名称 */ + @Excel(name = "仓库名称") private String supplierName; /** 来料时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @Excel(name = "来料时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "入库时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date incomeTime; /** 检测地点 */ @@ -92,19 +92,19 @@ public class QcCheckTaskIncomeDto extends BaseEntity { private String status; /** 预留字段1 */ - //@Excel(name = "预留字段1") + @Excel(name = "预留字段1") private String attr1; /** 预留字段2 */ - //@Excel(name = "预留字段2") + @Excel(name = "预留字段2") private String attr2; /** 预留字段3 */ - //@Excel(name = "预留字段3") + @Excel(name = "预留字段3") private String attr3; /** 预留字段4 */ - //@Excel(name = "预留字段4") + @Excel(name = "预留字段4") private String attr4; /** 工厂编码 */ @@ -129,14 +129,6 @@ public class QcCheckTaskIncomeDto extends BaseEntity { this.checkType = checkType; } - public String getTypeCode() { - return typeCode; - } - - public void setTypeCode(String typeCode) { - this.typeCode = typeCode; - } - public String getIncomeTimeStart() { return incomeTimeStart; } @@ -169,6 +161,14 @@ public class QcCheckTaskIncomeDto extends BaseEntity { this.checkTimeEnd = checkTimeEnd; } + public String getTypeCode() { + return typeCode; + } + + public void setTypeCode(String typeCode) { + this.typeCode = typeCode; + } + public void setRecordId(String recordId) { this.recordId = recordId; } @@ -183,13 +183,7 @@ public class QcCheckTaskIncomeDto extends BaseEntity { public String getCheckNo() { return checkNo; } - public void setIncomeBatchNo(String incomeBatchNo) { - this.incomeBatchNo = incomeBatchNo; - } - public String getIncomeBatchNo() { - return incomeBatchNo; - } public void setOrderNo(String orderNo) { this.orderNo = orderNo; } @@ -338,6 +332,14 @@ public class QcCheckTaskIncomeDto extends BaseEntity { return delFlag; } + public String getIncomeBatchNo() { + return incomeBatchNo; + } + + public void setIncomeBatchNo(String incomeBatchNo) { + this.incomeBatchNo = incomeBatchNo; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcUserMaterialDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcUserMaterialDTO.java index 526c9dce0..4d593d40f 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcUserMaterialDTO.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/quality/QcUserMaterialDTO.java @@ -18,7 +18,8 @@ public class QcUserMaterialDTO extends BaseEntity { /** id */ private String id; - + private String belongTo; + private String checkNo; /** 员工编码 */ @Excel(name = "员工编码") private String userCode; @@ -75,6 +76,22 @@ public class QcUserMaterialDTO extends BaseEntity { private List selectedValues; + public String getBelongTo() { + return belongTo; + } + + public void setBelongTo(String belongTo) { + this.belongTo = belongTo; + } + + public String getCheckNo() { + return checkNo; + } + + public void setCheckNo(String checkNo) { + this.checkNo = checkNo; + } + public void setId(String id) { this.id = id; } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java index d46844dab..9868e0fb3 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java @@ -42,6 +42,11 @@ public class RemoteDeviceFallbackFactory implements FallbackFactory { + private static final Logger log = LoggerFactory.getLogger(RemoteQualityFallbackFactory.class); + + @Override + public RemoteQualityService create(Throwable throwable) { + log.error("Quality服务调用失败:{}", throwable.getMessage()); + return new RemoteQualityService() { + @Override + public R createProduceXJTask() { + return R.fail("巡检计划创建失败:" + throwable.getMessage()); + } + + @Override + public R createIncomeTask(QcCheckTaskIncomeDTO qcCheckTaskIncome) { + return R.fail("来料检验创建失败:" + throwable.getMessage()); + } + + @Override + public R createProductTask(QcCheckTaskWarehousingDTO qcCheckTaskWarehousingDTO) { + return R.fail("入库检验任务创建失败:" + throwable.getMessage()); + } + }; + } +} + diff --git a/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index d8e2009be..6e7b448c1 100644 --- a/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/op-api/op-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -6,3 +6,4 @@ com.op.system.api.factory.RemotePlanFallbackFactory com.op.system.api.factory.RemoteTechnologyFallbackFactory com.op.system.api.factory.RemoteSapFallbackFactory com.op.system.api.factory.RemoteDeviceFallbackFactory +com.op.system.api.factory.RemoteQualityFallbackFactory diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/constant/ServiceNameConstants.java b/op-common/op-common-core/src/main/java/com/op/common/core/constant/ServiceNameConstants.java index 6fa1d7dcc..6a783069c 100644 --- a/op-common/op-common-core/src/main/java/com/op/common/core/constant/ServiceNameConstants.java +++ b/op-common/op-common-core/src/main/java/com/op/common/core/constant/ServiceNameConstants.java @@ -48,4 +48,6 @@ public class ServiceNameConstants { * 设备模块的serviceid */ public static final String DEVICE_SERVICE = "op-device"; + /**质量模块**/ + public static final String QMS_SERVICE = "op-quality"; } diff --git a/op-modules/op-device/src/main/java/com/op/device/controller/DeviceTaskController.java b/op-modules/op-device/src/main/java/com/op/device/controller/DeviceTaskController.java index c016efa41..31c5595b1 100644 --- a/op-modules/op-device/src/main/java/com/op/device/controller/DeviceTaskController.java +++ b/op-modules/op-device/src/main/java/com/op/device/controller/DeviceTaskController.java @@ -76,4 +76,17 @@ public class DeviceTaskController { } return R.fail("设备运行记录生成失败"); } + + /** + * 设备运行记录数据库备份(每年) + * @return + */ + @PostMapping("/equipmentBKTask") + public R equipmentBKTask() { + AjaxResult result = taskService.equipmentBKTask(); + if (result.isSuccess()){ + return R.ok("设备运行记录数据库备份成功"); + } + return R.fail("设备运行记录数据库备份失败"); + } } diff --git a/op-modules/op-device/src/main/java/com/op/device/mapper/DeviceInterfaceMapper.java b/op-modules/op-device/src/main/java/com/op/device/mapper/DeviceInterfaceMapper.java index 2b61c79dd..a21f1edf9 100644 --- a/op-modules/op-device/src/main/java/com/op/device/mapper/DeviceInterfaceMapper.java +++ b/op-modules/op-device/src/main/java/com/op/device/mapper/DeviceInterfaceMapper.java @@ -66,4 +66,7 @@ public interface DeviceInterfaceMapper { * @return */ List> selectEquipmentFaultNumForMonth(String groupCode); + + // 通过设备编码获取设备运行记录 + Map selectSumEquipmentOperation(String equipmentCode); } diff --git a/op-modules/op-device/src/main/java/com/op/device/mapper/EquOperationMapper.java b/op-modules/op-device/src/main/java/com/op/device/mapper/EquOperationMapper.java index 73a8d947b..7b142378a 100644 --- a/op-modules/op-device/src/main/java/com/op/device/mapper/EquOperationMapper.java +++ b/op-modules/op-device/src/main/java/com/op/device/mapper/EquOperationMapper.java @@ -5,7 +5,8 @@ import java.util.List; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.device.domain.EquOperation; import com.op.device.domain.EquOperationRecord; -import io.lettuce.core.dynamic.annotation.Param; +import org.apache.ibatis.annotations.Param; + /** * 设备运行记录Mapper接口 @@ -73,4 +74,16 @@ public interface EquOperationMapper { // 校验当天运行记录数量 int checkInsertOperation(); + + // 获取当前YEAR-2的备份表的运行数据第一条 + EquOperation checkBackupOperation(); + + // 获取备份插入数据数量 + int getBackupOperationNum(); + + // 分批次备份 + int backupOperation(@Param("startIndex") int startIndex,@Param("batchSize") int batchSize); + + // 分批次删除 + int deleteOperation(@Param("delSize") int delSize); } diff --git a/op-modules/op-device/src/main/java/com/op/device/mapper/EquSpareApplyMapper.java b/op-modules/op-device/src/main/java/com/op/device/mapper/EquSpareApplyMapper.java index c4e8580b1..77355cb76 100644 --- a/op-modules/op-device/src/main/java/com/op/device/mapper/EquSpareApplyMapper.java +++ b/op-modules/op-device/src/main/java/com/op/device/mapper/EquSpareApplyMapper.java @@ -1,5 +1,6 @@ package com.op.device.mapper; +import java.math.BigDecimal; import java.util.List; import com.op.device.domain.EquRepairWorkOrder; @@ -93,4 +94,11 @@ public interface EquSpareApplyMapper { * @param id */ void delEquSpareApplyByApplyId(String id); + + /** + * 通过关联工单获取备件费用 + * @param orderCode + * @return + */ + BigDecimal getSparePartsCost(String orderCode); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/IDeviceTaskService.java b/op-modules/op-device/src/main/java/com/op/device/service/IDeviceTaskService.java index f35a7ac30..28cbe358a 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/IDeviceTaskService.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/IDeviceTaskService.java @@ -19,4 +19,6 @@ public interface IDeviceTaskService { AjaxResult createMaintenancePlanTask(); AjaxResult createEquipmentOperationTask(); + + AjaxResult equipmentBKTask(); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceInterfaceServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceInterfaceServiceImpl.java index dd9ba40a4..220857f92 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceInterfaceServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceInterfaceServiceImpl.java @@ -30,8 +30,6 @@ public class DeviceInterfaceServiceImpl implements IDeviceInterfaceService { @Autowired private DeviceInterfaceMapper deviceInterfaceMapper; - @Autowired - private EquOperationRecordMapper equOperationRecordMapper; /** * 获取待维修的维修工单 @@ -64,64 +62,6 @@ public class DeviceInterfaceServiceImpl implements IDeviceInterfaceService { public AjaxResult getEquipmentInfo() { // 获取所有设备信息 List equipmentVOList = deviceInterfaceMapper.selectEquipmentList(); - for (IEquipmentVO equipmentVO : equipmentVOList) { - // 设备状态 - if (equipmentVO.getEquipmentStatus().equals("1")) { - equipmentVO.setEquipmentStatus("正常"); - } else { - equipmentVO.setEquipmentStatus("停用"); - } - - - /* 停机故障率逻辑 */ - double totalTime = 0;// 运行总时间 - double downTime = 0;// 停机时间 - // 通过设备编码获取运行记录中的运行记录List - List operationRecordList = equOperationRecordMapper.selectEquOperationRecordByEquipmentCode(equipmentVO.getEquipmentCode()); - if (operationRecordList.size() != 0) { - for (EquOperationRecord operationRecord : operationRecordList) { - // 运行时间差值 - double diffTime = operationRecord.getEndTime().getTime() - operationRecord.getStartTime().getTime(); - // 开机运行时间运行总时间累加 - if (operationRecord.getType().equals("on")) { - totalTime += diffTime; - } - // 维修停机时间累加(故障) - if (operationRecord.getMaintenanceType().equals("repair")) { - downTime += diffTime; - } - } - - // 设置停机故障率 - if (downTime == 0L) { - // 如果未查到该设备停机故障时间 - equipmentVO.setFailureRate(0D); - } else { - // 计算故障停机率(设备停机时间总和/一定时间内运行总时间(年)) - double failureRate = downTime / totalTime; - System.out.println(failureRate); - equipmentVO.setFailureRate(failureRate); - } - - } - - /* 设备有效利用率逻辑(每月) */ - // 查询该设备下报工单信息(年月日可在该sql中修改) - MesReportWork reportWork = deviceInterfaceMapper.selectReportWorkByEquipmentCode(equipmentVO.getEquipmentCode()); - if (reportWork != null) { - BigDecimal theoryQuantity = reportWork.getQuantity();// 理论产量 - BigDecimal actualQuantity = reportWork.getQuantityFeedback();// 实际产量 - - // 计算该设备有效利用率(实际产量/理论产量) - BigDecimal utilizationRatio = actualQuantity.divide(theoryQuantity, 2, BigDecimal.ROUND_HALF_UP); - equipmentVO.setUtilizationRatio(utilizationRatio.doubleValue()); - - } else { - // 如果未查到该信息,则默认设置为0 - equipmentVO.setUtilizationRatio(0D); - } - - } return success(equipmentVOList); } @@ -158,17 +98,6 @@ public class DeviceInterfaceServiceImpl implements IDeviceInterfaceService { } } - // 排序TOP10 - - // 假数据 -// Random random = new Random(); -// List test = new ArrayList<>(); -// for (int i = 0 ; i < 30 ; i++) { -// IEquipmentVO vo = new IEquipmentVO(); -// vo.setRapairQuantity(random.nextDouble()); -// test.add(vo); -// } - // 按照raparQuantity字段进行排序,并使用subList获取前10个结果 List top10 = equipmentVOList.stream() .sorted(Comparator.comparingDouble(IEquipmentVO::getRapairQuantity)) // 排序 @@ -204,6 +133,7 @@ public class DeviceInterfaceServiceImpl implements IDeviceInterfaceService { @DS("#header.poolName") public AjaxResult getEquipmentIntactRate(EquOperation equOperation) { //查询所有设备(设备停用的除外) + // CAST(SUM(CASE WHEN equipment_status = '1' or equipment_status = '3' THEN 1 Else 0 END)*100.00/COUNT(*) as decimal(18,2)) AS intactRate EquOperation equipmentIntactRate = deviceInterfaceMapper.getEquipmentIntactRate(equOperation); return success(equipmentIntactRate); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java index 2ba20b72c..ffe5ad7d1 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java @@ -362,11 +362,17 @@ public class DevicePDAServiceImpl implements IDevicePDAService { // 创建设备对象用于更新设备状态 Equipment equ = new Equipment(); equ.setEquipmentCode(equOrder.getEquipmentCode()); + + // 费用 + BigDecimal sparePartsCost = equSpareApplyMapper.getSparePartsCost(equOrder.getOrderCode()); + BigDecimal orderCost = equOrder.getOrderCost(); + equOrder.setOrderCost(sparePartsCost.add(orderCost)); + // 更新设备状态为正常运行 equ.setStatus("1"); equOrderMapper.updateEquipmentStatus(equ); // 更新设备运行记录 - updateOperationRecord(equOrder.getEquipmentCode(),"on",""); +// updateOperationRecord(equOrder.getEquipmentCode(),"on",""); //上传附件 if (StringUtils.isNotEmpty(equOrder.getPicturePath())) { String[] ids = equOrder.getPicturePath().split(","); @@ -501,20 +507,20 @@ public class DevicePDAServiceImpl implements IDevicePDAService { Equipment equ = new Equipment(); equ.setEquipmentCode(order.getEquipmentCode()); // 运行记录类型 - String operationType; - // 停机保养 - if (pdadto.getShutDown().equals("1")){ - operationType = "off"; - }else { - operationType = "on"; - } +// String operationType; +// // 停机保养 +// if (pdadto.getShutDown().equals("1")){ +// operationType = "off"; +// }else { +// operationType = "on"; +// } // 更改设备状态为保养中 equ.setStatus("3"); equOrderMapper.updateEquipmentStatus(equ); // 更新设备运行记录 - updateOperationRecord(order.getEquipmentCode(),operationType,"upkeep"); +// updateOperationRecord(order.getEquipmentCode(),operationType,"upkeep"); // 设置开始时间 order.setOrderStart(DateUtils.getNowDate()); @@ -824,6 +830,12 @@ public class DevicePDAServiceImpl implements IDevicePDAService { //维修工单里面的设备名 简化TODO EquRepairWorkOrder example = equRepairWorkOrderMapper.selectEquRepairWorkOrderByWorkId(equRepairWorkOrder.getWorkId()); + + // 费用 + BigDecimal sparePartsCost = equSpareApplyMapper.getSparePartsCost(equRepairWorkOrder.getOrderCode()); + BigDecimal orderCost = BigDecimal.valueOf(Double.valueOf(equRepairWorkOrder.getWorkCost())); + equRepairWorkOrder.setWorkCost(String.valueOf(sparePartsCost.add(orderCost))); + //修改设备状态 由维修中改为正常运行 EquEquipment equEquipment = new EquEquipment(); equEquipment.setEquipmentCode(example.getEquipmentCode()); diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java index 6a0686a0a..dc3652edc 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/DeviceTaskServiceImpl.java @@ -21,6 +21,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -210,6 +211,39 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { return success(); } + /** + * 设备运行记录数据库备份(每年) + * @return + */ + @Override + public AjaxResult equipmentBKTask() { + // 加载sf-cloud库的sys_datasource + SysUser sysUser = new SysUser(); + sysUser.setUserId(1L); + R>> dateSources0 = remoteUserService.getPoolNameList(sysUser); + List> dateSources = dateSources0.getData(); + ExecutorService executorService = new ThreadPoolExecutor( + dateSources.size(), + dateSources.size(), + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue()); + + try { + dateSources.forEach(dateSource -> { + logger.info("++++++++++++" + dateSource.get("poolName") + "++++设备运行记录数据库备份开始++++++++++"); + Runnable run = () -> backupEquipmentOperation(dateSource.get("poolName")); + executorService.execute(run); + }); + } catch (Exception e) { + logger.error("service == dataClearTask == exception", e); + return error("service == dataClearTask == exception"); + } finally { + executorService.shutdown(); + } + + return success(); + } + public void createSpotCheckPlanFunc(String poolName){ DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key /**equ_plan equ_plan_equ**/ @@ -431,7 +465,7 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { operation.setCreateTime(DateUtils.getNowDate()); } - int batchSize = 200;// 批次数量 + int batchSize = 100;// 批次数量 // 分批次处理 int batchCount = (operationList.size() + batchSize - 1)/batchSize;// 计算批次数量 @@ -442,7 +476,7 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { List subList = operationList.subList(startIndex,endIndex); int num = equOperationMapper.insertEquOperationByBatch(subList); - System.out.println("数据源:"+poolName+"--->"+"第"+i+"轮"+"开始索引:"+startIndex+"________结束索引:"+endIndex+"________成功插入数量:"+num); + System.out.println("数据源:"+poolName+"--->"+"第"+(i+1)+"轮"+"开始索引:"+startIndex+"________结束索引:"+endIndex+"________成功插入数量:"+num); } }else { System.out.println("数据源:"+poolName+"当天生成过运行记录"); @@ -450,6 +484,40 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { } + private void backupEquipmentOperation(String poolName) { + DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key + // 校验当前YEAR-2是否备份过数据 + EquOperation check = equOperationMapper.checkBackupOperation(); + if (check == null) { + // 获取插入数量 + int insertNum = equOperationMapper.getBackupOperationNum(); + int insertSize = 100;// 新增批次数量 + + // 分批次备份 + int batchCount = (insertNum + insertSize - 1)/insertSize;// 计算批次数量 + for (int i = 0;i < batchCount; i++) { + int startIndex = i * insertSize;// 索引开始值 + int endIndex = Math.min((i + 1)*insertSize,insertNum);// 索引结束值 + + // 备份至数据库 + int num = equOperationMapper.backupOperation(startIndex,insertSize); + + System.out.println("数据源:"+poolName+"--->"+"第"+(i+1)+"轮备份"+"开始索引:"+startIndex+"________结束索引:"+endIndex+"________成功插入数量:"+num); + } + + // 删除源数据库数据 + int delSize = 100;// 删除批次数量 + for (int i = 0; i < insertNum/delSize+1; i++) { + // 在源数据库中删除 + int num = equOperationMapper.deleteOperation(delSize); + System.out.println("数据源:"+poolName+"--->"+"第"+(i+1)+"轮删除"+"------>成功删除数量:"+num); + } + + }else { + System.out.println("数据源:"+poolName+"---->"+"年份:"+( LocalDate.now().getYear()-2) +"--->已备份"); + } + } + public static void main(String[] args) { int batchSize = 200;// 批次数量 diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOrderServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOrderServiceImpl.java index 02b69d0e3..36539536c 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOrderServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.op.device.service.impl; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -348,6 +349,11 @@ public class EquOrderServiceImpl implements IEquOrderService { long diffSeconds = (equOrder.getOrderEnd().getTime() - equOrder.getOrderStart().getTime()) / 60000; equOrder.setOrderCostTime(String.valueOf(diffSeconds)); } + // 费用 + BigDecimal sparePartsCost = equSpareApplyMapper.getSparePartsCost(equOrder.getOrderCode()); + BigDecimal orderCost = equOrder.getOrderCost(); + equOrder.setOrderCost(sparePartsCost.add(orderCost)); + // 保养图片 if (StringUtils.isNotEmpty(equOrder.getPicturePath())) { String[] ids = equOrder.getPicturePath().split(","); diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java index a3bb4b662..4af8f276b 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.op.device.service.impl; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -43,6 +44,9 @@ public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService @Autowired private EquOutsourceWorkMapper equOutsourceWorkMapper; + @Autowired + private EquSpareApplyMapper equSpareApplyMapper; + /** * 查询维修工单 * @@ -218,6 +222,11 @@ public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment); } + // 费用 + BigDecimal sparePartsCost = equSpareApplyMapper.getSparePartsCost(equRepairWorkOrder.getOrderCode()); + BigDecimal orderCost = BigDecimal.valueOf(Double.valueOf(equRepairWorkOrder.getWorkCost())); + equRepairWorkOrder.setWorkCost(String.valueOf(sparePartsCost.add(orderCost))); + return equRepairWorkOrderMapper.updateEquRepairWorkOrder(equRepairWorkOrder); } diff --git a/op-modules/op-device/src/main/resources/mapper/device/DeviceInterfaceMapper.xml b/op-modules/op-device/src/main/resources/mapper/device/DeviceInterfaceMapper.xml index 90f2288d3..48089a27c 100644 --- a/op-modules/op-device/src/main/resources/mapper/device/DeviceInterfaceMapper.xml +++ b/op-modules/op-device/src/main/resources/mapper/device/DeviceInterfaceMapper.xml @@ -21,13 +21,22 @@ SELECT - SUM(CASE WHEN equipment_status = '1' or equipment_status = '3' THEN 1 Else 0 END) AS operationEquipment, - SUM(CASE WHEN equipment_status = '0' or equipment_status = '2' THEN 1 Else 0 END) AS faultEquipment, - COUNT(*) AS totalEquipment, - CAST(SUM(CASE WHEN equipment_status = '1' or equipment_status = '3' THEN 1 Else 0 END)*100.00/COUNT(*) as decimal(18,2)) AS intactRate + SUM(CASE WHEN equipment_status = '1' or equipment_status = '3' THEN 1 Else 0 END) AS operationEquipment, + SUM(CASE WHEN equipment_status = '0' or equipment_status = '2' THEN 1 Else 0 END) AS faultEquipment, + COUNT(*) AS totalEquipment, + ( + SELECT COUNT(id) + FROM equ_operation + WHERE '4%' > failure_rate AND CONVERT(date, create_time) = CONVERT(date, GETDATE()) + )*100 / + ( + SELECT COUNT(id) + FROM equ_operation + WHERE CONVERT(date, create_time) = CONVERT(date, GETDATE()) + ) AS intactRate FROM base_equipment WHERE del_flag = '0' AND status = '1' @@ -105,4 +123,12 @@ ORDER BY MONTH (eo.create_time) + + \ No newline at end of file diff --git a/op-modules/op-device/src/main/resources/mapper/device/EquOperationMapper.xml b/op-modules/op-device/src/main/resources/mapper/device/EquOperationMapper.xml index 04a90d782..1eda9f706 100644 --- a/op-modules/op-device/src/main/resources/mapper/device/EquOperationMapper.xml +++ b/op-modules/op-device/src/main/resources/mapper/device/EquOperationMapper.xml @@ -89,6 +89,7 @@ and CONVERT(date,create_time) >= #{createTimeStart} and #{createTimeEnd} >= CONVERT(date,create_time) + order by CAST(create_time AS DATE) desc,group_line + + + + insert into equ_operation @@ -188,6 +197,15 @@ + + insert into equ_operation_backup + select s.* + from equ_operation s + where YEAR (s.create_time) = YEAR (GETDATE())-2 + ORDER BY id + OFFSET #{startIndex} ROWS FETCH NEXT #{batchSize} ROWS ONLY + + update equ_operation @@ -230,4 +248,12 @@ #{id} + + + delete + from equ_operation + where id in (select s.id from equ_operation s where YEAR (s.create_time) = YEAR (GETDATE())-2 + ORDER BY id + OFFSET 0 ROWS FETCH NEXT #{delSize} ROWS ONLY) + \ No newline at end of file diff --git a/op-modules/op-device/src/main/resources/mapper/device/EquSpareApplyMapper.xml b/op-modules/op-device/src/main/resources/mapper/device/EquSpareApplyMapper.xml index 3581ceb46..5dd6de5c2 100644 --- a/op-modules/op-device/src/main/resources/mapper/device/EquSpareApplyMapper.xml +++ b/op-modules/op-device/src/main/resources/mapper/device/EquSpareApplyMapper.xml @@ -207,4 +207,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where work_code = #{orderCode} and del_flag = '0' + + \ No newline at end of file diff --git a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java index 443cd9a05..186e0565d 100644 --- a/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java +++ b/op-modules/op-job/src/main/java/com/op/job/task/RyTask.java @@ -1,9 +1,6 @@ package com.op.job.task; -import com.op.system.api.RemoteDeviceService; -import com.op.system.api.RemoteMesService; -import com.op.system.api.RemotePlanService; -import com.op.system.api.RemoteSapService; +import com.op.system.api.*; import com.op.system.api.domain.sap.SapRouterQuery; import com.op.system.api.domain.sap.SapShopOrderQuery; import org.slf4j.Logger; @@ -35,6 +32,9 @@ public class RyTask { @Autowired private RemoteDeviceService remoteDeviceService; + @Autowired + private RemoteQualityService remoteQualityService; + public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); } @@ -144,4 +144,18 @@ public class RyTask { logger.info("++设备运行记录生成任务开始++createEquipmentOperationTask+++++"); remoteDeviceService.createEquipmentOperationTask(); } + + /** 每年1月1日1:50执行 **/ + public void equipmentBKTask(){ + logger.info("++设备运行记录+数据库备份的数据+开始++equipmentBkTask+++++"); + remoteDeviceService.equipmentBKTask(); + } + + /************质量管理系统定时任务开始*****************/ + //过程巡检,每15分钟执行一次 + public void createProduceXJTask(){ + logger.info("++质量管理系统+过程巡检+开始++createProduceXJTask+++++"); + remoteQualityService.createProduceXJTask(); + } + /************质量管理系统定时任务结束*****************/ } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesInterfaceController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesInterfaceController.java new file mode 100644 index 000000000..7e8730b07 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesInterfaceController.java @@ -0,0 +1,29 @@ +package com.op.mes.controller; + +import com.op.mes.domain.MesBoard; +import com.op.mes.service.MesInterfaceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * mes看板接口 + * + * @author zxl + * @date 2023-11-15 + */ +@RestController +@RequestMapping("/mesInterface") +public class MesInterfaceController { + + @Autowired + private MesInterfaceService mesInterfaceService; + + //工艺看板 + @PostMapping("/getTechnologyBoard") + public List getTechnologyBoard(@RequestBody MesBoard mesBoard) { + return mesInterfaceService.getTechnologyBoard(mesBoard); + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesBoard.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesBoard.java new file mode 100644 index 000000000..39748bb2a --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesBoard.java @@ -0,0 +1,118 @@ +package com.op.mes.domain; + +import com.op.common.core.domain.BaseFileData; + +import java.util.List; + +//看板实体类 +public class MesBoard { + + private String factoryCode; + private String workorderCode; + private String workorderCodeSap; + private String workorderName; + private String equipmentName; + private String productCode; + private String productName; + private String routeCode; + private String routeId; + private List files; + private String workshopCode; + private String workshopName; + + public String getWorkshopCode() { + return workshopCode; + } + + public void setWorkshopCode(String workshopCode) { + this.workshopCode = workshopCode; + } + + public String getWorkshopName() { + return workshopName; + } + + public void setWorkshopName(String workshopName) { + this.workshopName = workshopName; + } + + public String getEquipmentName() { + return equipmentName; + } + + public void setEquipmentName(String equipmentName) { + this.equipmentName = equipmentName; + } + + public List getFiles() { + return files; + } + + public void setFiles(List files) { + this.files = files; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getWorkorderCodeSap() { + return workorderCodeSap; + } + + public void setWorkorderCodeSap(String workorderCodeSap) { + this.workorderCodeSap = workorderCodeSap; + } + + public String getWorkorderName() { + return workorderName; + } + + public void setWorkorderName(String workorderName) { + this.workorderName = workorderName; + } + + public String getProductCode() { + return productCode; + } + + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public String getRouteCode() { + return routeCode; + } + + public void setRouteCode(String routeCode) { + this.routeCode = routeCode; + } + + public String getRouteId() { + return routeId; + } + + public void setRouteId(String routeId) { + this.routeId = routeId; + } + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesDailyReport.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesDailyReport.java index 94ec1a5b1..d732abb4c 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/domain/MesDailyReport.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/MesDailyReport.java @@ -39,6 +39,7 @@ public class MesDailyReport extends BaseEntity { private String manAvgActual;//人均效率-实际 private String manAvgDo;//人均效率-达成 private String actManHour;//实际人工时 + @JsonFormat(pattern = "yyyy-MM-dd") private Date productDate;//工单日期 private String productDateStr;//工单日期字符串 private String productStartDate; diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java index c8c8c84b1..66e520797 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesMapper.java @@ -1,5 +1,7 @@ package com.op.mes.mapper; +import com.op.common.core.domain.BaseFileData; +import com.op.mes.domain.MesBoard; import com.op.mes.domain.dto.BaseEquipmentDto; import com.op.mes.domain.dto.LGInfoDto; import com.op.system.api.domain.SysDept; @@ -58,4 +60,8 @@ public interface MesMapper { List> selectdryingRoomListInfo(); void deleteDateByTableName0(@Param("table")String table,@Param("ymdhms")String ymdhms); + + List getTechnologyBoard(MesBoard mesBoard); + + List getTechnologyFiles(MesBoard dto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/MesInterfaceService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/MesInterfaceService.java new file mode 100644 index 000000000..cf8ef698e --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/MesInterfaceService.java @@ -0,0 +1,18 @@ +package com.op.mes.service; + +import com.op.mes.domain.MesBoard; +import com.op.mes.domain.dto.BaseEquipmentDto; + +import java.util.List; + +/** + * 看板 Service接口 + * + * @author Open Platform + * @date 2023-07-13 + */ +public interface MesInterfaceService { + + + List getTechnologyBoard(MesBoard mesBoard); +} 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 a20c67ace..7abda12e4 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 @@ -327,15 +327,16 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { logger.info("==========================母工单报工结束"+JSONObject.toJSONString(sapR)); //最终报工标识且sap报工成功:关闭子母工单 MesReportWork endReport = mesReportWorkMapper.getEndReport(pHzWork); - if("1".equals(endReport.getEndReport())&&sapR.getCode()==200){ - MesReportWork rworkVo = new MesReportWork(); - rworkVo.setStatus("w3"); - rworkVo.setUpdateTime(DateUtils.getNowDate()); - rworkVo.setUpdateBy(SecurityUtils.getUsername()); - rworkVo.setWorkorderCode(belongWorkOrder); - //pro_work_order status->w3报工--belong_work_order - mesReportWorkMapper.updateOrderWorkStatus(rworkVo); - } +//-----改为由上位机触发 +// if("1".equals(endReport.getEndReport())&&sapR.getCode()==200){ +// MesReportWork rworkVo = new MesReportWork(); +// rworkVo.setStatus("w3"); +// rworkVo.setUpdateTime(DateUtils.getNowDate()); +// rworkVo.setUpdateBy(SecurityUtils.getUsername()); +// rworkVo.setWorkorderCode(belongWorkOrder); +// //pro_work_order status->w3报工--belong_work_order +// mesReportWorkMapper.updateOrderWorkStatus(rworkVo); +// } } return R.ok(); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesInterfaceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesInterfaceServiceImpl.java new file mode 100644 index 000000000..3f7053500 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesInterfaceServiceImpl.java @@ -0,0 +1,41 @@ +package com.op.mes.service.impl; + +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.op.common.core.domain.BaseFileData; +import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.security.utils.SecurityUtils; +import com.op.mes.domain.MesBoard; +import com.op.mes.domain.dto.BaseEquipmentDto; +import com.op.mes.mapper.MesMapper; +import com.op.mes.service.MesInterfaceService; +import com.op.mes.service.PDAService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * wcs接口业务层处理 + * + * @author Open Platform + * @date 2023-07-13 + */ +@Service +public class MesInterfaceServiceImpl implements MesInterfaceService { + + @Autowired + private MesMapper mesMapper; + + @Override + public List getTechnologyBoard(MesBoard mesBoard) { + DynamicDataSourceContextHolder.push(mesBoard.getFactoryCode()); + List dtos= mesMapper.getTechnologyBoard(mesBoard); + for(MesBoard dto:dtos){ + //取附件 + List files = mesMapper.getTechnologyFiles(dto); + dto.setFiles(files); + } + return dtos; + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java index 677d2eea0..3a05d7015 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java @@ -227,7 +227,7 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { for(MesDailyReport dto:dtos){ String spc = dto.getSpec();//规格 //本日产量-实际(盒数) - BigDecimal actCase = new BigDecimal(dto.getQuantityFeedback()).multiply(new BigDecimal(spc)); + BigDecimal actCase = new BigDecimal(dto.getQuantityFeedback()); dto.setQuantityAct(actCase.toString()); //本日产量-完成率=实际箱数/计划箱数 BigDecimal completeRate = new BigDecimal(dto.getQuantityFeedback()) diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml index 89b8fa215..38013df17 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesMapper.xml @@ -205,4 +205,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" delete from ${table} where #{ymdhms} > CONVERT(varchar(30),creter_time, 120) + + 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 d160f0473..2c11f765d 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 @@ -192,23 +192,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -358,5 +357,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) + + insert into qc_check_task_user( + record_id,belong_to,check_no, + check_man_code,check_man_name, + create_by,create_time,factory_code + ) values + + ( + #{item.id},#{item.belongTo},#{item.checkNo}, + #{item.userCode},#{item.userName}, + #{item.createBy},#{item.createTime},#{item.factoryCode} + ) + + diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java index 01c5dba55..0a7b37f12 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorder.java @@ -33,7 +33,7 @@ public class ProOrderWorkorder extends TreeEntity { private String orderId; /** 订单编码 */ - @Excel(name = "子订单编码") + @Excel(name = "子订单旧编码") private String orderCode; /** 产品ID */ @@ -211,7 +211,7 @@ public class ProOrderWorkorder extends TreeEntity { } private String prepareId; - + @Excel(name = "子订单新编号") private String workorderCodeSap; /** 批次号 */ @@ -219,9 +219,39 @@ public class ProOrderWorkorder extends TreeEntity { private List batchNumList; private List batchInfo; + private String pproductCode; + @Excel(name = "母产品名称") + private String pproductName; + @Excel(name = "母订单新编号") + private String pworkorderCodeSap; + /** $column.columnComment */ private String factoryCode; + public String getPproductCode() { + return pproductCode; + } + + public void setPproductCode(String pproductCode) { + this.pproductCode = pproductCode; + } + + public String getPproductName() { + return pproductName; + } + + public void setPproductName(String pproductName) { + this.pproductName = pproductName; + } + + public String getPworkorderCodeSap() { + return pworkorderCodeSap; + } + + public void setPworkorderCodeSap(String pworkorderCodeSap) { + this.pworkorderCodeSap = pworkorderCodeSap; + } + public List getBatchInfo() { return batchInfo; } 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 16a3d725c..421ad7ff2 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 @@ -166,5 +166,6 @@ public interface ProOrderWorkorderMapper { int updateWhiteWorkOrder(ProOrderWorkorder whiteOrder); ProOrderWorkorder getPWorkOrder(ProOrderWorkorder whiteOrder); + } 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 88fe27ae9..938b4e955 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 @@ -38,6 +38,11 @@ + + + + + @@ -49,37 +54,33 @@ diff --git a/op-modules/op-quality/pom.xml b/op-modules/op-quality/pom.xml index 3dab6533b..a9a1992e7 100644 --- a/op-modules/op-quality/pom.xml +++ b/op-modules/op-quality/pom.xml @@ -83,6 +83,11 @@ op-common-swagger + + cn.hutool + hutool-all + 4.6.10 + 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 0131d074d..d6adfee20 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 @@ -6,10 +6,12 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.bean.BeanUtils; import com.op.common.security.utils.SecurityUtils; import com.op.quality.domain.*; import com.op.system.api.domain.SysRole; import com.op.system.api.domain.SysUser; +import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -118,6 +120,17 @@ public class QcCheckTaskIncomeController extends BaseController { } return error("添加失败:请检查物料的关联检测项"); } + @PostMapping("/createIncomeTask") + public AjaxResult createIncomeTask(@RequestBody QcCheckTaskIncomeDTO qcCheckTaskIncome0) { + QcCheckTaskIncome qcCheckTaskIncome = new QcCheckTaskIncome(); + BeanUtils.copyProperties(qcCheckTaskIncome,qcCheckTaskIncome0); + int r = qcCheckTaskIncomeService.insertQcCheckTaskIncome(qcCheckTaskIncome); + if(r>0){ + return toAjax(r); + } + return error("添加失败:请检查物料的关联检测项"); + } + /** * 修改来料检验 @@ -236,6 +249,15 @@ public class QcCheckTaskIncomeController extends BaseController { List list = qcCheckTaskIncomeService.getWorkOrder(qcCheckTaskIncome); return getDataTable(list); } + /**获取入库工单列表**/ + @GetMapping("/getProductWorkOrder") + public TableDataInfo getProductWorkOrder(QcCheckTaskIncome qcCheckTaskIncome) { + startPage(); + List list = qcCheckTaskIncomeService.getProductWorkOrder(qcCheckTaskIncome); + return getDataTable(list); + } + + @PutMapping("/getBatchList") public List getBatchList(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) { return qcCheckTaskIncomeService.getBatchList(qcCheckTaskIncome); 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 2547c67e6..efe7536e0 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 @@ -5,6 +5,7 @@ import java.time.format.DateTimeFormatter; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.op.common.core.domain.R; import com.op.common.core.utils.DateUtils; import com.op.common.security.utils.SecurityUtils; import com.op.quality.domain.QcCheckType; @@ -160,4 +161,11 @@ public class QcCheckTaskProduceController extends BaseController { public AjaxResult changeProduceStatus(@RequestBody QcCheckTaskProduce qcCheckTaskProduce) { return toAjax(qcCheckTaskProduceService.changeProduceStatus(qcCheckTaskProduce)); } + + /**生产过程检验:巡检任务生产**/ + @PostMapping("/createProduceXJTask") + public R createProduceXJTask() { + qcCheckTaskProduceService.createProduceXJTask(); + return R.ok(); + } } 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 b32bb710b..f380a6db4 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 @@ -6,7 +6,10 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.bean.BeanUtils; +import com.op.quality.domain.QcCheckTaskIncome; import com.op.quality.domain.QcCheckTaskProduce; +import com.op.system.api.domain.quality.QcCheckTaskWarehousingDTO; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -103,6 +106,17 @@ public class QcCheckTaskWarehousingController extends BaseController { return error("添加失败:请检查物料的关联检测项"); } + @PostMapping("/createProductTask") + public AjaxResult createProductTask(@RequestBody QcCheckTaskWarehousingDTO qcCheckTaskWarehousingDTO) { + QcCheckTaskWarehousing qcCheckTaskIncome = new QcCheckTaskWarehousing(); + BeanUtils.copyProperties(qcCheckTaskIncome,qcCheckTaskWarehousingDTO); + int r = qcCheckTaskWarehousingService.insertQcCheckTaskWarehousing(qcCheckTaskIncome); + if(r>0){ + return toAjax(r); + } + return error("添加失败:请检查物料的关联检测项"); + } + /** * 修改成品入库检验任务 */ diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java index b76291997..0619f7b05 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcInterfaceController.java @@ -3,6 +3,7 @@ package com.op.quality.controller; import com.op.common.core.utils.StringUtils; import com.op.quality.domain.QcCheckType; import com.op.quality.domain.QcInterface; +import com.op.quality.domain.QcLineChartDto; import com.op.quality.service.IQcInterfaceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -126,4 +127,10 @@ public class QcInterfaceController { public List getMonthOfYearContrast(@RequestBody QcInterface qcInterface) { return qcInterfaceService.getMonthOfYearContrast(qcInterface); } + + @GetMapping("/getLineQcData") + public QcLineChartDto getLineQcData(QcInterface qcInterface) { + return qcInterfaceService.getLineQcData(qcInterface); + } + } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcProCheckController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcProCheckController.java new file mode 100644 index 000000000..ad10e2bdc --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcProCheckController.java @@ -0,0 +1,44 @@ +package com.op.quality.controller; + + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.utils.poi.ExcelUtil; +import com.op.common.core.web.controller.BaseController; +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.quality.domain.QcProCheck; +import com.op.quality.service.QcProCheckService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@RestController +@RequestMapping("/qcProCheck") +public class QcProCheckController extends BaseController { + @Autowired + private QcProCheckService qcProCheckService; + + @GetMapping("/list") + public List list(QcProCheck qcProCheck) { + List qcProChecks = qcProCheckService.selectQcCheckList(qcProCheck); + return qcProCheckService.selectQcCheckList(qcProCheck); + } + + @Log(title = "白坯合格统计", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, QcProCheck qcProCheck) { + List list = qcProCheckService.selectQcCheckList(qcProCheck); + ExcelUtil util = new ExcelUtil(QcProCheck.class); + util.exportExcel(response, list, "白坯合格统计数据"); + } + +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java index 1db2db044..473287128 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/QcStaticTableController.java @@ -147,11 +147,16 @@ public class QcStaticTableController extends BaseController { if(mdata.getcNoOkquality()==null){ mdata.setcNoOkquality(new BigDecimal("0")); } - BigDecimal defectRate = (mdata.getaNoOkquality().add(mdata.getbNoOkquality()).multiply(new BigDecimal("0.65")) - .add(mdata.getcNoOkquality()).multiply(new BigDecimal(0.35))) - .divide(new BigDecimal(mdata.getSampleQuality())) - .setScale(2, BigDecimal.ROUND_HALF_UP); - datas.add(defectRate.doubleValue()); + if(!"0.00".equals(mdata.getSampleQuality())){ + BigDecimal defectRate = (mdata.getaNoOkquality().add(mdata.getbNoOkquality()).multiply(new BigDecimal("0.65")) + .add(mdata.getcNoOkquality()).multiply(new BigDecimal(0.35))) + .divide(new BigDecimal(mdata.getSampleQuality())) + .setScale(2, BigDecimal.ROUND_HALF_UP); + datas.add(defectRate.doubleValue()); + }else{ + datas.add(0.00); + } + }else{ datas.add(0.00); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/controller/WmsRawOrderInController.java b/op-modules/op-quality/src/main/java/com/op/quality/controller/WmsRawOrderInController.java new file mode 100644 index 000000000..89c853f93 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/controller/WmsRawOrderInController.java @@ -0,0 +1,97 @@ +package com.op.quality.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.op.common.log.annotation.Log; +import com.op.common.log.enums.BusinessType; +import com.op.common.security.annotation.RequiresPermissions; +import com.op.quality.domain.WmsRawOrderIn; +import com.op.quality.service.IWmsRawOrderInService; +import com.op.common.core.web.controller.BaseController; +import com.op.common.core.web.domain.AjaxResult; +import com.op.common.core.utils.poi.ExcelUtil; +import com.op.common.core.web.page.TableDataInfo; + +/** + * 白坯手动入库单Controller + * + * @author Open Platform + * @date 2023-12-26 + */ +@RestController +@RequestMapping("/bPproduct") +public class WmsRawOrderInController extends BaseController { + @Autowired + private IWmsRawOrderInService wmsRawOrderInService; + + /** + * 查询白坯手动入库单列表 + */ + @RequiresPermissions("quality:bPproduct:list") + @GetMapping("/list") + public TableDataInfo list(WmsRawOrderIn wmsRawOrderIn) { + startPage(); + List list = wmsRawOrderInService.selectWmsRawOrderInList(wmsRawOrderIn); + return getDataTable(list); + } + + /** + * 导出白坯手动入库单列表 + */ + @RequiresPermissions("quality:bPproduct:export") + @Log(title = "白坯手动入库单", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, WmsRawOrderIn wmsRawOrderIn) { + List list = wmsRawOrderInService.selectWmsRawOrderInList(wmsRawOrderIn); + ExcelUtil util = new ExcelUtil(WmsRawOrderIn.class); + util.exportExcel(response, list, "白坯手动入库单数据"); + } + + /** + * 获取白坯手动入库单详细信息 + */ + @RequiresPermissions("quality:bPproduct:query") + @GetMapping(value = "/{rawOrderInId}") + public AjaxResult getInfo(@PathVariable("rawOrderInId") String rawOrderInId) { + return success(wmsRawOrderInService.selectWmsRawOrderInByRawOrderInId(rawOrderInId)); + } + + /** + * 新增白坯手动入库单 + */ + @RequiresPermissions("quality:bPproduct:add") + @Log(title = "白坯手动入库单", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody WmsRawOrderIn wmsRawOrderIn) { + return toAjax(wmsRawOrderInService.insertWmsRawOrderIn(wmsRawOrderIn)); + } + + /** + * 修改白坯手动入库单 + */ + @RequiresPermissions("quality:bPproduct:edit") + @Log(title = "白坯手动入库单", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody WmsRawOrderIn wmsRawOrderIn) { + return toAjax(wmsRawOrderInService.updateWmsRawOrderIn(wmsRawOrderIn)); + } + + /** + * 删除白坯手动入库单 + */ + @RequiresPermissions("quality:bPproduct:remove") + @Log(title = "白坯手动入库单", businessType = BusinessType.DELETE) + @DeleteMapping("/{rawOrderInIds}") + public AjaxResult remove(@PathVariable String[] rawOrderInIds) { + return toAjax(wmsRawOrderInService.deleteWmsRawOrderInByRawOrderInIds(rawOrderInIds)); + } +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDefect.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDefect.java new file mode 100644 index 000000000..4c4bbd2ce --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskDefect.java @@ -0,0 +1,170 @@ +package com.op.quality.domain; + +import java.math.BigDecimal; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; + +/** + * 来料检验任务--不良数量对象 qc_check_task_defect + * + * @author Open Platform + * @date 2023-12-27 + */ +public class QcCheckTaskDefect extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** id */ + private String recordId; + + /** 不良分类编码 */ + @Excel(name = "不良分类编码") + private String defectCode; + + /** 不良分类名称 */ + @Excel(name = "不良分类名称") + private String defectSubclass; + + /** 预留字段1 */ + @Excel(name = "预留字段1") + private String attr1; + + /** 预留字段2 */ + @Excel(name = "预留字段2") + private String attr2; + + /** 预留字段3 */ + @Excel(name = "预留字段3") + private String attr3; + + /** 预留字段4 */ + @Excel(name = "预留字段4") + private String attr4; + + /** 工厂编码 */ + @Excel(name = "工厂编码") + private String factoryCode; + + /** 删除标识1删除0正常 */ + private String delFlag; + + /** 检验任务id */ + @Excel(name = "检验任务id") + private String belongTo; + + /** 合格数量 */ + @Excel(name = "合格数量") + private BigDecimal okQuality; + + /** 不合格数量 */ + @Excel(name = "不合格数量") + private BigDecimal noOkQuality; + public void setRecordId(String recordId) { + this.recordId = recordId; + } + + public String getRecordId() { + return recordId; + } + public void setDefectCode(String defectCode) { + this.defectCode = defectCode; + } + + public String getDefectCode() { + return defectCode; + } + public void setDefectSubclass(String defectSubclass) { + this.defectSubclass = defectSubclass; + } + + public String getDefectSubclass() { + return defectSubclass; + } + public void setAttr1(String attr1) { + this.attr1 = attr1; + } + + public String getAttr1() { + return attr1; + } + public void setAttr2(String attr2) { + this.attr2 = attr2; + } + + public String getAttr2() { + return attr2; + } + public void setAttr3(String attr3) { + this.attr3 = attr3; + } + + public String getAttr3() { + return attr3; + } + public void setAttr4(String attr4) { + this.attr4 = attr4; + } + + public String getAttr4() { + return attr4; + } + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getFactoryCode() { + return factoryCode; + } + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getDelFlag() { + return delFlag; + } + public void setBelongTo(String belongTo) { + this.belongTo = belongTo; + } + + public String getBelongTo() { + return belongTo; + } + public void setOkQuality(BigDecimal okQuality) { + this.okQuality = okQuality; + } + + public BigDecimal getOkQuality() { + return okQuality; + } + + public BigDecimal getNoOkQuality() { + return noOkQuality; + } + + public void setNoOkQuality(BigDecimal noOkQuality) { + this.noOkQuality = noOkQuality; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("recordId", getRecordId()) + .append("defectCode", getDefectCode()) + .append("defectSubclass", getDefectSubclass()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("factoryCode", getFactoryCode()) + .append("delFlag", getDelFlag()) + .append("belongTo", getBelongTo()) + .append("okQuality", getOkQuality()) + .append("nookQuality", getNoOkQuality()) + .toString(); + } +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java index 02048905b..c67fd89b1 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskIncome.java @@ -119,7 +119,7 @@ public class QcCheckTaskIncome extends BaseEntity { /** 删除标识1删除0正常 */ private String delFlag; - + private String orderType; private String incomeTimeStart; private String incomeTimeEnd; private String checkTimeStart; @@ -130,12 +130,29 @@ public class QcCheckTaskIncome extends BaseEntity { private String batchCode; private String batchId; private List qcCheckTaskDetails; + private List defects; private BigDecimal sampleQuality; private BigDecimal aNoOkquality; private BigDecimal bNoOkquality; private BigDecimal cNoOkquality; + public String getOrderType() { + return orderType; + } + + public void setOrderType(String orderType) { + this.orderType = orderType; + } + + public List getDefects() { + return defects; + } + + public void setDefects(List defects) { + this.defects = defects; + } + public BigDecimal getSampleQuality() { return sampleQuality; } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskProduce.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskProduce.java index 48cc8969b..47445f58b 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskProduce.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskProduce.java @@ -127,6 +127,8 @@ public class QcCheckTaskProduce extends BaseEntity { private String checkTimeEnd; private String typeCode; private String checkType; + private String workorderCode; + private String orderType; @Excel(name = "抽样数量") private BigDecimal sampleQuality; @@ -143,6 +145,22 @@ public class QcCheckTaskProduce extends BaseEntity { @Excel(name = "C类不合格数量") private BigDecimal cNoOkquality; + public String getOrderType() { + return orderType; + } + + public void setOrderType(String orderType) { + this.orderType = orderType; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + public BigDecimal getaNoOkquality() { return aNoOkquality; } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskUser.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskUser.java new file mode 100644 index 000000000..a914f9053 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcCheckTaskUser.java @@ -0,0 +1,212 @@ +package com.op.quality.domain; + +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + + +public class QcCheckTaskUser extends BaseEntity { + + + /** + * 生产过程检验任务--检验人 qc_check_task_user + * + * @author Open Platform + * @date 2023-12-22 + */ + + private static final long serialVersionUID = 1L; + + /** + * id + */ + private String recordId; + + /** + * 检验任务编号 + */ + @Excel(name = "检验任务编号") + private String checkNo; + + /** + * 检测人工号 + */ + @Excel(name = "检测人工号") + private String checkManCode; + + /** + * 检测人姓名 + */ + @Excel(name = "检测人姓名") + private String checkManName; + + /** + * 预留字段1 + */ + @Excel(name = "预留字段1") + private String attr1; + + /** + * 预留字段2 + */ + @Excel(name = "预留字段2") + private String attr2; + + /** + * 预留字段3 + */ + @Excel(name = "预留字段3") + private String attr3; + + /** + * 预留字段4 + */ + @Excel(name = "预留字段4") + private String attr4; + + /** + * 工厂编码 + */ + @Excel(name = "工厂编码") + private String factoryCode; + + /** + * 删除标识1删除0正常 + */ + private String delFlag; + + /** + * 属于 + */ + private String belongTo; + + private String manNames; + private String manCodes; + + public String getManNames() { + return manNames; + } + + public void setManNames(String manNames) { + this.manNames = manNames; + } + + public String getManCodes() { + return manCodes; + } + + public void setManCodes(String manCodes) { + this.manCodes = manCodes; + } + + public String getRecordId() { + return recordId; + } + + public void setRecordId(String recordId) { + this.recordId = recordId; + } + + public String getCheckNo() { + return checkNo; + } + + public void setCheckNo(String checkNo) { + this.checkNo = checkNo; + } + + public String getCheckManCode() { + return checkManCode; + } + + public void setCheckManCode(String checkManCode) { + this.checkManCode = checkManCode; + } + + public String getCheckManName() { + return checkManName; + } + + public void setCheckManName(String checkManName) { + this.checkManName = checkManName; + } + + public String getAttr1() { + return attr1; + } + + public void setAttr1(String attr1) { + this.attr1 = attr1; + } + + public String getAttr2() { + return attr2; + } + + public void setAttr2(String attr2) { + this.attr2 = attr2; + } + + public String getAttr3() { + return attr3; + } + + public void setAttr3(String attr3) { + this.attr3 = attr3; + } + + public String getAttr4() { + return attr4; + } + + public void setAttr4(String attr4) { + this.attr4 = attr4; + } + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getDelFlag() { + return delFlag; + } + + public void setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getBelongTo() { + return belongTo; + } + + public void setBelongTo(String belongTo) { + this.belongTo = belongTo; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("recordId", getRecordId()) + .append("checkNo", getCheckNo()) + .append("checkManCode", getCheckManCode()) + .append("checkManName", getCheckManName()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("attr4", getAttr4()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("factoryCode", getFactoryCode()) + .append("delFlag", getDelFlag()) + .toString(); + } + + +} 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 c267cb334..e186e3db4 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 @@ -119,6 +119,15 @@ public class QcCheckTaskWarehousing extends BaseEntity { private String checkTimeEnd; private String typeCode; private String checkType; + private String orderType; + + public String getOrderType() { + return orderType; + } + + public void setOrderType(String orderType) { + this.orderType = orderType; + } public String getCheckType() { return checkType; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcInterface.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcInterface.java index f10f74a76..b68ed1a51 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcInterface.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcInterface.java @@ -47,6 +47,33 @@ public class QcInterface extends BaseEntity { private List data; private String reasons; private String typeCode; + private String productDateStart; + private String ProductDateEnd; + private String nameDate; + + public String getNameDate() { + return nameDate; + } + + public void setNameDate(String nameDate) { + this.nameDate = nameDate; + } + + public String getProductDateStart() { + return productDateStart; + } + + public void setProductDateStart(String productDateStart) { + this.productDateStart = productDateStart; + } + + public String getProductDateEnd() { + return ProductDateEnd; + } + + public void setProductDateEnd(String productDateEnd) { + ProductDateEnd = productDateEnd; + } public String getTypeCode() { return typeCode; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcLineChartDto.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcLineChartDto.java new file mode 100644 index 000000000..554b42269 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcLineChartDto.java @@ -0,0 +1,39 @@ +package com.op.quality.domain; + +import java.util.List; + +/** + * echart图返回数据 + * + * @author Open Platform + * @date 2023-07-03 + */ +public class QcLineChartDto { + private List seriesNames; + private List xAxisDatas; + private List seriesDatas; + + public List getSeriesNames() { + return seriesNames; + } + + public void setSeriesNames(List seriesNames) { + this.seriesNames = seriesNames; + } + + public List getxAxisDatas() { + return xAxisDatas; + } + + public void setxAxisDatas(List xAxisDatas) { + this.xAxisDatas = xAxisDatas; + } + + public List getSeriesDatas() { + return seriesDatas; + } + + public void setSeriesDatas(List seriesDatas) { + this.seriesDatas = seriesDatas; + } +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcLineChartSeriesDto.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcLineChartSeriesDto.java new file mode 100644 index 000000000..2dce8f241 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcLineChartSeriesDto.java @@ -0,0 +1,48 @@ +package com.op.quality.domain; + +import java.util.List; + +/** + * echart图返回数据 + * + * @author Open Platform + * @date 2023-07-03 + */ +public class QcLineChartSeriesDto { + private String name; + private String type; + private String stack; + private List data; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getStack() { + return stack; + } + + public void setStack(String stack) { + this.stack = stack; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcProCheck.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcProCheck.java index ad40abe36..9458ce000 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/domain/QcProCheck.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/QcProCheck.java @@ -16,59 +16,43 @@ import java.util.List; public class QcProCheck extends BaseEntity { private static final long serialVersionUID = 1L; - @Excel(name = "id") private String id; - @Excel(name = "rfid") private String rfid; - @Excel(name = "工厂id") private String factoryId; - @Excel(name = "工厂编码") private String factoryCode; - @Excel(name = "工单id") private String workorderId; - @Excel(name = "工单编码") private String workorderCode; private String workorderName; - @Excel(name = "订单id") private String orderId; - @Excel(name = "订单编码") private String orderCode; private String workBatchCode; - @Excel(name = "机台id") private String machineId; - @Excel(name = "机台编码") + @Excel(name = "烘房编码") private String machineCode; + @Excel(name = "烘房名称") private String machineName; - @Excel(name = "不良描述") private String badMeg; - @Excel(name = "产品id") private String productId; private String productCode; private String productName; private String productSpc; - @Excel(name = "是否合格") private String isqua; - @Excel(name = "附件") private List fileList; private String fileId; - @Excel(name = "创建者") private String createBy; /** 创建时间 */ - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; - @Excel(name = "更新者") private String updateBy; - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; private String attr1; @@ -82,6 +66,70 @@ public class QcProCheck extends BaseEntity { private String itemCode; private String itemName; + // 创建日期范围list + private List createTimeArray; + // 创建日期开始 + private String createTimeStart; + + // 创建日期结束 + private String createTimeEnd; + + @Excel(name = "合格数") + private String acceptanceNumber; + + @Excel(name = "不合格数") + private String unqualifiedNumber; + + @Excel(name = "合格率") + private String passRate; + + public String getAcceptanceNumber() { + return acceptanceNumber; + } + + public void setAcceptanceNumber(String acceptanceNumber) { + this.acceptanceNumber = acceptanceNumber; + } + + public String getUnqualifiedNumber() { + return unqualifiedNumber; + } + + public void setUnqualifiedNumber(String unqualifiedNumber) { + this.unqualifiedNumber = unqualifiedNumber; + } + + public String getPassRate() { + return passRate; + } + + public void setPassRate(String passRate) { + this.passRate = passRate; + } + + public List getCreateTimeArray() { + return createTimeArray; + } + + public void setCreateTimeArray(List createTimeArray) { + this.createTimeArray = createTimeArray; + } + + public String getCreateTimeStart() { + return createTimeStart; + } + + public void setCreateTimeStart(String createTimeStart) { + this.createTimeStart = createTimeStart; + } + + public String getCreateTimeEnd() { + return createTimeEnd; + } + + public void setCreateTimeEnd(String createTimeEnd) { + this.createTimeEnd = createTimeEnd; + } public String getItemCode() { return itemCode; diff --git a/op-modules/op-quality/src/main/java/com/op/quality/domain/WmsRawOrderIn.java b/op-modules/op-quality/src/main/java/com/op/quality/domain/WmsRawOrderIn.java new file mode 100644 index 000000000..3dd9fd03b --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/domain/WmsRawOrderIn.java @@ -0,0 +1,665 @@ +package com.op.quality.domain; + +import java.math.BigDecimal; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; + +/** + * 白坯手动入库单对象 wms_raw_order_in + * + * @author Open Platform + * @date 2023-12-26 + */ +public class WmsRawOrderIn extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 唯一序列号 */ + private String rawOrderInId; + + /** 工厂编码 */ + @Excel(name = "工厂编码") + private String factoryCode; + + /** 仓库编码 */ + @Excel(name = "仓库编码") + private String whCode; + + /** 库区编码 */ + @Excel(name = "库区编码") + private String waCode; + + /** 库位编码 */ + @Excel(name = "库位编码") + private String wlCode; + + /** 入库单类型 */ + @Excel(name = "入库单类型") + private String orderInType; + + /** 入库单号 */ + @Excel(name = "入库单号") + private String orderNo; + + /** DN单号 */ + @Excel(name = "DN单号") + private String dnNo; + + /** 采购订单号 */ + @Excel(name = "采购订单号") + private String poNo; + + /** 采购订单行号 */ + @Excel(name = "采购订单行号") + private String poLine; + + /** 采购订单类型 */ + @Excel(name = "采购订单类型") + private String poType; + + /** 物料号 */ + @Excel(name = "物料号") + private String materialCode; + + /** 物料描述 */ + @Excel(name = "物料描述") + private String materialDesc; + + /** 单位 */ + @Excel(name = "单位") + private String unit; + + /** 采购组 */ + @Excel(name = "采购组") + private String buyerGroup; + + /** 供应商编码 */ + @Excel(name = "供应商编码") + private String supplyCode; + + /** 工厂 */ + @Excel(name = "工厂") + private String sapFactoryCode; + + /** 交货地点 */ + @Excel(name = "交货地点") + private String sendSpot; + + /** 需求数量 */ + @Excel(name = "需求数量") + private BigDecimal requestAmount; + + /** 收货数量 */ + @Excel(name = "收货数量") + private BigDecimal receiptAmount; + + /** 备品数量 */ + @Excel(name = "备品数量") + private BigDecimal shelvesAmount; + + /** 库存地点 */ + @Excel(name = "库存地点") + private String location; + + /** 需求时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "需求时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date requestTime; + + /** 质检状态,默认0待检,1合格,2不合格,3免检, */ + @Excel(name = "质检状态,默认0待检,1合格,2不合格,3免检,") + private String qualityStatus; + + /** 0创建1拒收2收货完成3上架完成4入库完成 */ + @Excel(name = "0创建1拒收2收货完成3上架完成4入库完成") + private String orderStatus; + + /** 收货操作人 */ + @Excel(name = "收货操作人") + private String receiptOperator; + + /** 收货时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "收货时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date receiptTime; + + /** 上架操作人 */ + @Excel(name = "上架操作人") + private String shelvesOperator; + + /** 退货数量 */ + @Excel(name = "退货数量") + private BigDecimal returnAmount; + + /** 退料人 */ + @Excel(name = "退料人") + private String returnName; + + /** 退货过账时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "退货过账时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date returnTime; + + /** 冲销过账: +0未退货; +1用户拒绝; +2退货完成; +3SAP正在处理; +4SAP拒绝 */ +// @Excel(name = "冲销过账: 0未退货; +//1用户拒绝; +//2退货完成; +//3SAP正在处理; +//4SAP拒绝") + private String returnStatus; + + /** 上架时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "上架时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date shelvesTime; + + /** 退货过账信息 */ + @Excel(name = "退货过账信息") + private String returnMessage; + + private String name; + /** 收货过账状态: +0未收货; +1用户拒绝; +2收货完成; +3SAP正在处理; +4SAP拒绝 */ +// @Excel(name = "收货过账状态: +//0未收货; +//1用户拒绝; +//2收货完成; +//3SAP正在处理; +//4SAP拒绝") + private String accountingStatus; + + /** 收货过账时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "收货过账时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date accountingTime; + + /** 收货过账信息 */ + @Excel(name = "收货过账信息") + private String accountingMessage; + + /** 备用 */ + @Excel(name = "备用") + private String userDefined1; + + /** 备用 */ + @Excel(name = "备用") + private String userDefined2; + + /** 备用 */ + @Excel(name = "备用") + private String userDefined3; + + /** 备用 */ + @Excel(name = "备用") + private String userDefined4; + + /** 备用 */ + @Excel(name = "备用") + private String userDefined5; + + /** 备用 */ + @Excel(name = "备用") + private String userDefined6; + + /** 备用 */ + @Excel(name = "备用") + private String userDefined7; + + /** 备用 */ + @Excel(name = "备用") + private String userDefined8; + + /** 备用9 */ + @Excel(name = "备用9") + private String userDefined9; + + /** 备用10 */ + @Excel(name = "备用10") + private String userDefined10; + + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date gmtCreate; + + /** 最后更新人 */ + @Excel(name = "最后更新人") + private String lastModifiedBy; + + /** 最后更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date gmtModified; + + /** 有效标记 */ + @Excel(name = "有效标记") + private String activeFlag; + + public void setRawOrderInId(String rawOrderInId) { + this.rawOrderInId = rawOrderInId; + } + + public String getRawOrderInId() { + return rawOrderInId; + } + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getFactoryCode() { + return factoryCode; + } + public void setWhCode(String whCode) { + this.whCode = whCode; + } + + public String getWhCode() { + return whCode; + } + public void setWaCode(String waCode) { + this.waCode = waCode; + } + + public String getWaCode() { + return waCode; + } + public void setWlCode(String wlCode) { + this.wlCode = wlCode; + } + + public String getWlCode() { + return wlCode; + } + public void setOrderInType(String orderInType) { + this.orderInType = orderInType; + } + + public String getOrderInType() { + return orderInType; + } + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getOrderNo() { + return orderNo; + } + public void setDnNo(String dnNo) { + this.dnNo = dnNo; + } + + public String getDnNo() { + return dnNo; + } + public void setPoNo(String poNo) { + this.poNo = poNo; + } + + public String getPoNo() { + return poNo; + } + public void setPoLine(String poLine) { + this.poLine = poLine; + } + + public String getPoLine() { + return poLine; + } + public void setPoType(String poType) { + this.poType = poType; + } + + public String getPoType() { + return poType; + } + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getMaterialCode() { + return materialCode; + } + public void setMaterialDesc(String materialDesc) { + this.materialDesc = materialDesc; + } + + public String getMaterialDesc() { + return materialDesc; + } + public void setUnit(String unit) { + this.unit = unit; + } + + public String getUnit() { + return unit; + } + public void setBuyerGroup(String buyerGroup) { + this.buyerGroup = buyerGroup; + } + + public String getBuyerGroup() { + return buyerGroup; + } + public void setSupplyCode(String supplyCode) { + this.supplyCode = supplyCode; + } + + public String getSupplyCode() { + return supplyCode; + } + public void setSapFactoryCode(String sapFactoryCode) { + this.sapFactoryCode = sapFactoryCode; + } + + public String getSapFactoryCode() { + return sapFactoryCode; + } + public void setSendSpot(String sendSpot) { + this.sendSpot = sendSpot; + } + + public String getSendSpot() { + return sendSpot; + } + public void setRequestAmount(BigDecimal requestAmount) { + this.requestAmount = requestAmount; + } + + public BigDecimal getRequestAmount() { + return requestAmount; + } + public void setReceiptAmount(BigDecimal receiptAmount) { + this.receiptAmount = receiptAmount; + } + + public BigDecimal getReceiptAmount() { + return receiptAmount; + } + public void setShelvesAmount(BigDecimal shelvesAmount) { + this.shelvesAmount = shelvesAmount; + } + + public BigDecimal getShelvesAmount() { + return shelvesAmount; + } + public void setLocation(String location) { + this.location = location; + } + + public String getLocation() { + return location; + } + public void setRequestTime(Date requestTime) { + this.requestTime = requestTime; + } + + public Date getRequestTime() { + return requestTime; + } + public void setQualityStatus(String qualityStatus) { + this.qualityStatus = qualityStatus; + } + + public String getQualityStatus() { + return qualityStatus; + } + public void setOrderStatus(String orderStatus) { + this.orderStatus = orderStatus; + } + + public String getOrderStatus() { + return orderStatus; + } + public void setReceiptOperator(String receiptOperator) { + this.receiptOperator = receiptOperator; + } + + public String getReceiptOperator() { + return receiptOperator; + } + public void setReceiptTime(Date receiptTime) { + this.receiptTime = receiptTime; + } + + public Date getReceiptTime() { + return receiptTime; + } + public void setShelvesOperator(String shelvesOperator) { + this.shelvesOperator = shelvesOperator; + } + + public String getShelvesOperator() { + return shelvesOperator; + } + public void setReturnAmount(BigDecimal returnAmount) { + this.returnAmount = returnAmount; + } + + public BigDecimal getReturnAmount() { + return returnAmount; + } + public void setReturnName(String returnName) { + this.returnName = returnName; + } + + public String getReturnName() { + return returnName; + } + public void setReturnTime(Date returnTime) { + this.returnTime = returnTime; + } + + public Date getReturnTime() { + return returnTime; + } + public void setReturnStatus(String returnStatus) { + this.returnStatus = returnStatus; + } + + public String getReturnStatus() { + return returnStatus; + } + public void setShelvesTime(Date shelvesTime) { + this.shelvesTime = shelvesTime; + } + + public Date getShelvesTime() { + return shelvesTime; + } + public void setReturnMessage(String returnMessage) { + this.returnMessage = returnMessage; + } + + public String getReturnMessage() { + return returnMessage; + } + public void setAccountingStatus(String accountingStatus) { + this.accountingStatus = accountingStatus; + } + + public String getAccountingStatus() { + return accountingStatus; + } + public void setAccountingTime(Date accountingTime) { + this.accountingTime = accountingTime; + } + + public Date getAccountingTime() { + return accountingTime; + } + public void setAccountingMessage(String accountingMessage) { + this.accountingMessage = accountingMessage; + } + + public String getAccountingMessage() { + return accountingMessage; + } + public void setUserDefined1(String userDefined1) { + this.userDefined1 = userDefined1; + } + + public String getUserDefined1() { + return userDefined1; + } + public void setUserDefined2(String userDefined2) { + this.userDefined2 = userDefined2; + } + + public String getUserDefined2() { + return userDefined2; + } + public void setUserDefined3(String userDefined3) { + this.userDefined3 = userDefined3; + } + + public String getUserDefined3() { + return userDefined3; + } + public void setUserDefined4(String userDefined4) { + this.userDefined4 = userDefined4; + } + + public String getUserDefined4() { + return userDefined4; + } + public void setUserDefined5(String userDefined5) { + this.userDefined5 = userDefined5; + } + + public String getUserDefined5() { + return userDefined5; + } + public void setUserDefined6(String userDefined6) { + this.userDefined6 = userDefined6; + } + + public String getUserDefined6() { + return userDefined6; + } + public void setUserDefined7(String userDefined7) { + this.userDefined7 = userDefined7; + } + + public String getUserDefined7() { + return userDefined7; + } + public void setUserDefined8(String userDefined8) { + this.userDefined8 = userDefined8; + } + + public String getUserDefined8() { + return userDefined8; + } + public void setUserDefined9(String userDefined9) { + this.userDefined9 = userDefined9; + } + + public String getUserDefined9() { + return userDefined9; + } + public void setUserDefined10(String userDefined10) { + this.userDefined10 = userDefined10; + } + + public String getUserDefined10() { + return userDefined10; + } + public void setGmtCreate(Date gmtCreate) { + this.gmtCreate = gmtCreate; + } + + public Date getGmtCreate() { + return gmtCreate; + } + public void setLastModifiedBy(String lastModifiedBy) { + this.lastModifiedBy = lastModifiedBy; + } + + public String getLastModifiedBy() { + return lastModifiedBy; + } + public void setGmtModified(Date gmtModified) { + this.gmtModified = gmtModified; + } + + public Date getGmtModified() { + return gmtModified; + } + public void setActiveFlag(String activeFlag) { + this.activeFlag = activeFlag; + } + + public String getActiveFlag() { + return activeFlag; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("rawOrderInId", getRawOrderInId()) + .append("factoryCode", getFactoryCode()) + .append("whCode", getWhCode()) + .append("waCode", getWaCode()) + .append("wlCode", getWlCode()) + .append("orderInType", getOrderInType()) + .append("orderNo", getOrderNo()) + .append("dnNo", getDnNo()) + .append("poNo", getPoNo()) + .append("poLine", getPoLine()) + .append("poType", getPoType()) + .append("materialCode", getMaterialCode()) + .append("materialDesc", getMaterialDesc()) + .append("unit", getUnit()) + .append("buyerGroup", getBuyerGroup()) + .append("supplyCode", getSupplyCode()) + .append("sapFactoryCode", getSapFactoryCode()) + .append("sendSpot", getSendSpot()) + .append("requestAmount", getRequestAmount()) + .append("receiptAmount", getReceiptAmount()) + .append("shelvesAmount", getShelvesAmount()) + .append("location", getLocation()) + .append("requestTime", getRequestTime()) + .append("qualityStatus", getQualityStatus()) + .append("orderStatus", getOrderStatus()) + .append("receiptOperator", getReceiptOperator()) + .append("receiptTime", getReceiptTime()) + .append("shelvesOperator", getShelvesOperator()) + .append("returnAmount", getReturnAmount()) + .append("returnName", getReturnName()) + .append("returnTime", getReturnTime()) + .append("returnStatus", getReturnStatus()) + .append("shelvesTime", getShelvesTime()) + .append("returnMessage", getReturnMessage()) + .append("accountingStatus", getAccountingStatus()) + .append("accountingTime", getAccountingTime()) + .append("accountingMessage", getAccountingMessage()) + .append("userDefined1", getUserDefined1()) + .append("userDefined2", getUserDefined2()) + .append("userDefined3", getUserDefined3()) + .append("userDefined4", getUserDefined4()) + .append("userDefined5", getUserDefined5()) + .append("userDefined6", getUserDefined6()) + .append("userDefined7", getUserDefined7()) + .append("userDefined8", getUserDefined8()) + .append("userDefined9", getUserDefined9()) + .append("userDefined10", getUserDefined10()) + .append("createBy", getCreateBy()) + .append("gmtCreate", getGmtCreate()) + .append("lastModifiedBy", getLastModifiedBy()) + .append("gmtModified", getGmtModified()) + .append("activeFlag", getActiveFlag()) + .toString(); + } +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java index 92fb3a7f2..aadd15b1b 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskIncomeMapper.java @@ -2,12 +2,10 @@ package com.op.quality.mapper; import java.util.List; -import com.op.quality.domain.QcBomComponent; -import com.op.quality.domain.QcCheckTaskDetail; -import com.op.quality.domain.QcCheckTaskIncome; -import com.op.quality.domain.QcSupplier; +import com.op.quality.domain.*; import com.op.system.api.domain.SysDictData; import com.op.system.api.domain.SysUser; +import com.op.system.api.domain.quality.QcUserMaterialDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -86,4 +84,14 @@ public interface QcCheckTaskIncomeMapper { List getBatchList(QcCheckTaskIncome qcCheckTaskIncome); String getTypeCode(String checkType); + + List selectQcCheckTaskCheckNoByRecordIds(String[] recordIds); + + List getUserByMaterial(String materialCode); + + int addCheckUsers(@Param("list") List users); + + int addQcCheckTaskDefects(@Param("list") List defects); + + List getCkeckDefectList(QcCheckTaskDetail qcCheckTaskDetail); } 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 249cee686..4fb4a4af1 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 @@ -4,6 +4,8 @@ import java.util.List; import com.op.quality.domain.QcCheckTaskProduce; import com.op.quality.domain.QcCheckType; +import com.op.system.api.domain.mes.ProOrderWorkorderDTO; +import com.op.system.api.domain.quality.QcCheckTaskProduceDTO; import org.apache.ibatis.annotations.Mapper; /** @@ -67,4 +69,8 @@ public interface QcCheckTaskProduceMapper { int getTodayMaxNum(QcCheckTaskProduce qcCheckTaskProduce); List getCheckTypes(QcCheckType qcCheckType); + + List getOrderWorks(ProOrderWorkorderDTO qoWork); + + List selectQcCheckTaskCheckNoByRecordIds(String[] recordIds); } 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 new file mode 100644 index 000000000..28eb3772c --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckTaskUserMapper.java @@ -0,0 +1,74 @@ +package com.op.quality.mapper; + +import java.util.List; + +import com.op.quality.domain.QcCheckTaskUser; +import org.apache.ibatis.annotations.Mapper; + +/** + * 来料检验任务--检查人Mapper接口 + * + * @author Open Platform + * @date 2023-12-22 + */ +@Mapper +public interface QcCheckTaskUserMapper { + /** + * 查询来料检验任务--检查人 + * + * @param recordId 来料检验任务--检查人主键 + * @return 来料检验任务--检查人 + */ + public QcCheckTaskUser selectQcCheckTaskUserByRecordId(String recordId); + + /** + * 查询来料检验任务--检查人列表 + * + * @param qcCheckTaskUser 来料检验任务--检查人 + * @return 来料检验任务--检查人集合 + */ + public List selectQcCheckTaskUserList(QcCheckTaskUser qcCheckTaskUser); + + /** + * 新增来料检验任务--检查人 + * + * @param qcCheckTaskUser 来料检验任务--检查人 + * @return 结果 + */ + public int insertQcCheckTaskUser(QcCheckTaskUser qcCheckTaskUser); + + /** + * 修改来料检验任务--检查人 + * + * @param qcCheckTaskUser 来料检验任务--检查人 + * @return 结果 + */ + public int updateQcCheckTaskUser(QcCheckTaskUser qcCheckTaskUser); + + /** + * 删除来料检验任务--检查人 + * + * @param recordId 来料检验任务--检查人主键 + * @return 结果 + */ + public int deleteQcCheckTaskUserByRecordId(String recordId); + + /** + * 批量删除来料检验任务--检查人 + * + * @param recordIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteQcCheckTaskUserByRecordIds(String[] recordIds); + + /** + * 批量插入检验人数据 + */ + public int insertQcCheckTaskUserList(List qcCheckTaskUserList); + + public int deleteQcCheckTaskUserByBelongTo(String belongTo); + + public QcCheckTaskUser selectQcCheckTaskUserByBelongTo(String belongTo); + + public int deleteQcCheckTaskUserByBelongTos(String[] belongToArray); +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckUnqualifiedMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckUnqualifiedMapper.java index f39cdaeb5..f7dfde3c7 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckUnqualifiedMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcCheckUnqualifiedMapper.java @@ -79,5 +79,7 @@ public interface QcCheckUnqualifiedMapper { List getWorkOrder(QcCheckTaskIncome qcCheckTaskIncome); - int updateWorkOrderStatus(QcCheckTaskIncome qcCheckTaskIncome); + int updateWorkOrderBatchStatus(QcCheckTaskIncome qcCheckTaskIncome); + + List getProductWorkOrder(QcCheckTaskIncome qcCheckTaskIncome); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcInterfaceMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcInterfaceMapper.java index d00c0ad8d..8c7d9d927 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcInterfaceMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcInterfaceMapper.java @@ -41,4 +41,8 @@ public interface QcInterfaceMapper { Map getMothNoOkNum(QcInterface qcInterface); List getReasons(QcInterface dto); + + List getLineChartsNames(QcInterface qcInterface); + @MapKey("nameDate") + Map getLineChartsDatas(QcInterface qcInterface); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcProCheckMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcProCheckMapper.java index f68842a66..f3963e23d 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcProCheckMapper.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/QcProCheckMapper.java @@ -37,4 +37,6 @@ public interface QcProCheckMapper { List getDictList(QcProCheck qcProCheck); List getCheckTaskList(QcCheckTaskIncome qcCheckTaskIncome); + + List getQcProCheckList(QcProCheck qcProCheck); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/mapper/WmsRawOrderInMapper.java b/op-modules/op-quality/src/main/java/com/op/quality/mapper/WmsRawOrderInMapper.java new file mode 100644 index 000000000..93a1e5ff1 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/mapper/WmsRawOrderInMapper.java @@ -0,0 +1,61 @@ +package com.op.quality.mapper; + +import java.util.List; + +import com.op.quality.domain.WmsRawOrderIn; + +/** + * 白坯手动入库单Mapper接口 + * + * @author Open Platform + * @date 2023-12-26 + */ +public interface WmsRawOrderInMapper { + /** + * 查询白坯手动入库单 + * + * @param rawOrderInId 白坯手动入库单主键 + * @return 白坯手动入库单 + */ + public WmsRawOrderIn selectWmsRawOrderInByRawOrderInId(String rawOrderInId); + + /** + * 查询白坯手动入库单列表 + * + * @param wmsRawOrderIn 白坯手动入库单 + * @return 白坯手动入库单集合 + */ + public List selectWmsRawOrderInList(WmsRawOrderIn wmsRawOrderIn); + + /** + * 新增白坯手动入库单 + * + * @param wmsRawOrderIn 白坯手动入库单 + * @return 结果 + */ + public int insertWmsRawOrderIn(WmsRawOrderIn wmsRawOrderIn); + + /** + * 修改白坯手动入库单 + * + * @param wmsRawOrderIn 白坯手动入库单 + * @return 结果 + */ + public int updateWmsRawOrderIn(WmsRawOrderIn wmsRawOrderIn); + + /** + * 删除白坯手动入库单 + * + * @param rawOrderInId 白坯手动入库单主键 + * @return 结果 + */ + public int deleteWmsRawOrderInByRawOrderInId(String rawOrderInId); + + /** + * 批量删除白坯手动入库单 + * + * @param rawOrderInIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteWmsRawOrderInByRawOrderInIds(String[] rawOrderInIds); +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java index 74c785aa6..981fb81d1 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskIncomeService.java @@ -85,4 +85,6 @@ public interface IQcCheckTaskIncomeService { List getWorkOrder(QcCheckTaskIncome qcCheckTaskIncome); List getBatchList(QcCheckTaskIncome qcCheckTaskIncome); + + List getProductWorkOrder(QcCheckTaskIncome qcCheckTaskIncome); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskProduceService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskProduceService.java index 69a813e03..bad07823b 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskProduceService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskProduceService.java @@ -1,6 +1,8 @@ package com.op.quality.service; import java.util.List; + +import com.op.common.core.web.domain.AjaxResult; import com.op.quality.domain.QcCheckTaskProduce; import com.op.quality.domain.QcCheckType; @@ -64,4 +66,6 @@ public interface IQcCheckTaskProduceService { List getCheckTypes(QcCheckType qcCheckType); int changeProduceStatus(QcCheckTaskProduce qcCheckTaskProduce); + + AjaxResult createProduceXJTask(); } 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 new file mode 100644 index 000000000..c588ab9f1 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskUserService.java @@ -0,0 +1,71 @@ +package com.op.quality.service; + +import java.util.List; +import com.op.quality.domain.QcCheckTaskUser; + +/** + * 来料检验任务--检查人Service接口 + * + * @author Open Platform + * @date 2023-12-22 + */ +public interface IQcCheckTaskUserService { + /** + * 查询来料检验任务--检查人 + * + * @param recordId 来料检验任务--检查人主键 + * @return 来料检验任务--检查人 + */ + public QcCheckTaskUser selectQcCheckTaskUserByRecordId(String recordId); + + /** + * 查询来料检验任务--检查人列表 + * + * @param qcCheckTaskUser 来料检验任务--检查人 + * @return 来料检验任务--检查人集合 + */ + public List selectQcCheckTaskUserList(QcCheckTaskUser qcCheckTaskUser); + + /** + * 新增来料检验任务--检查人 + * + * @param qcCheckTaskUser 来料检验任务--检查人 + * @return 结果 + */ + public int insertQcCheckTaskUser(QcCheckTaskUser qcCheckTaskUser); + + /** + * 修改来料检验任务--检查人 + * + * @param qcCheckTaskUser 来料检验任务--检查人 + * @return 结果 + */ + public int updateQcCheckTaskUser(List qcCheckTaskUser); + + /** + * 批量删除来料检验任务--检查人 + * + * @param recordIds 需要删除的来料检验任务--检查人主键集合 + * @return 结果 + */ + public int deleteQcCheckTaskUserByRecordIds(String[] recordIds); + + public int deleteQcCheckTaskUserByBelongTos(String[] belongToArray); + + /** + * 删除来料检验任务--检查人信息 + * + * @param recordId 来料检验任务--检查人主键 + * @return 结果 + */ + public int deleteQcCheckTaskUserByRecordId(String recordId); + + /** + * 用户数据批量插入 + */ + public int insertQcCheckTaskUserList(List qcCheckTaskUserList); + /** + * 根据任务编号查询检验人 + */ + public QcCheckTaskUser selectQcCheckTaskUserByBelongTo(String belongTo); +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskWarehousingService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskWarehousingService.java index d972ff19d..dfc40dc4b 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskWarehousingService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcCheckTaskWarehousingService.java @@ -2,6 +2,7 @@ package com.op.quality.service; import java.util.List; import com.op.quality.domain.QcCheckTaskWarehousing; +import com.op.system.api.domain.quality.QcCheckTaskWarehousingDTO; /** * 成品入库检验任务Service接口 diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java index 6676f0075..d50e1c97e 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IQcInterfaceService.java @@ -3,6 +3,7 @@ package com.op.quality.service; import com.op.quality.domain.QcCheckType; import com.op.quality.domain.QcInterface; +import com.op.quality.domain.QcLineChartDto; import java.util.List; import java.util.Map; @@ -35,4 +36,6 @@ public interface IQcInterfaceService { QcInterface getLineDayNoOk(QcInterface qcInterface); List getMonthOfYearContrast(QcInterface qcInterface); + + QcLineChartDto getLineQcData(QcInterface qcInterface); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/IWmsRawOrderInService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/IWmsRawOrderInService.java new file mode 100644 index 000000000..520a1e3db --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/IWmsRawOrderInService.java @@ -0,0 +1,60 @@ +package com.op.quality.service; + +import java.util.List; +import com.op.quality.domain.WmsRawOrderIn; + +/** + * 白坯手动入库单Service接口 + * + * @author Open Platform + * @date 2023-12-26 + */ +public interface IWmsRawOrderInService { + /** + * 查询白坯手动入库单 + * + * @param rawOrderInId 白坯手动入库单主键 + * @return 白坯手动入库单 + */ + public WmsRawOrderIn selectWmsRawOrderInByRawOrderInId(String rawOrderInId); + + /** + * 查询白坯手动入库单列表 + * + * @param wmsRawOrderIn 白坯手动入库单 + * @return 白坯手动入库单集合 + */ + public List selectWmsRawOrderInList(WmsRawOrderIn wmsRawOrderIn); + + /** + * 新增白坯手动入库单 + * + * @param wmsRawOrderIn 白坯手动入库单 + * @return 结果 + */ + public int insertWmsRawOrderIn(WmsRawOrderIn wmsRawOrderIn); + + /** + * 修改白坯手动入库单 + * + * @param wmsRawOrderIn 白坯手动入库单 + * @return 结果 + */ + public int updateWmsRawOrderIn(WmsRawOrderIn wmsRawOrderIn); + + /** + * 批量删除白坯手动入库单 + * + * @param rawOrderInIds 需要删除的白坯手动入库单主键集合 + * @return 结果 + */ + public int deleteWmsRawOrderInByRawOrderInIds(String[] rawOrderInIds); + + /** + * 删除白坯手动入库单信息 + * + * @param rawOrderInId 白坯手动入库单主键 + * @return 结果 + */ + public int deleteWmsRawOrderInByRawOrderInId(String rawOrderInId); +} diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/QcProCheckService.java b/op-modules/op-quality/src/main/java/com/op/quality/service/QcProCheckService.java index 785a37c39..8619fd2b4 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/QcProCheckService.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/QcProCheckService.java @@ -34,7 +34,9 @@ public interface QcProCheckService { List getCheckTaskList(QcCheckTaskIncome qcCheckTaskIncome); - List getCheckTaskDetailList(QcCheckTaskDetail qcCheckTaskDetail); + QcCheckTaskIncome getCheckTaskDetailList(QcCheckTaskDetail qcCheckTaskDetail); List getQcUnitList(SysDictData sysDictData); + + List selectQcCheckList(QcProCheck qcProCheck); } 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 f56e54c4a..10f2870c9 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 @@ -15,7 +15,9 @@ import com.op.common.security.utils.SecurityUtils; import com.op.quality.domain.*; import com.op.quality.mapper.*; import com.op.quality.service.IQcCheckTaskProduceService; +import com.op.quality.service.IQcCheckTaskUserService; import com.op.system.api.domain.SysUser; +import com.op.system.api.domain.quality.QcUserMaterialDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -58,6 +60,9 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { @Autowired private QcCheckUnqualifiedMapper qcCheckUnqualifiedMapper; + @Autowired + private IQcCheckTaskUserService qcCheckTaskUserService; + /** * 查询来料检验 * @@ -139,7 +144,56 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { qcCheckTaskIncome.setCreateTime(nowDate); //String typeCode = qcCheckTaskIncomeMapper.getTypeCode(qcCheckTaskIncome.getCheckType()); qcCheckTaskIncome.setTypeCode("material");//大检验节点 + /**qc_task_user start**/ + if(StringUtils.isNotBlank(qcCheckTaskIncome.getCheckManName())){//管理系统创建任务 + String checkManName = qcCheckTaskIncome.getCheckManName(); + String checkManCode = qcCheckTaskIncome.getCheckManCode(); + qcCheckTaskIncome.setCheckManName(""); + qcCheckTaskIncome.setCheckManCode(""); + String[] splitNames = checkManName.split(","); + String[] splitCodes = checkManCode.split(","); + List qcCheckTaskUserList = new ArrayList<>(); + for (int i = 0; i < splitNames.length; i++) { + QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser(); + qcCheckTaskUser.setCheckManName(splitNames[i]); + qcCheckTaskUser.setCheckManCode(splitCodes[i]); + qcCheckTaskUser.setCheckNo(qcCheckTaskIncome.getCheckNo()); + qcCheckTaskUser.setBelongTo(beLongId); + qcCheckTaskUserList.add(qcCheckTaskUser); + } + //检验人插入 + qcCheckTaskUserService.insertQcCheckTaskUserList(qcCheckTaskUserList); + }else{//上位机触发 + qcCheckTaskIncome.setCheckManName(""); + qcCheckTaskIncome.setCheckManCode(""); + /**qc_user_material取默认检查人**/ + List users = qcCheckTaskIncomeMapper.getUserByMaterial(qcCheckTaskIncome.getMaterialCode()); + if(CollectionUtils.isEmpty(users)){ + QcUserMaterialDTO dto0 = new QcUserMaterialDTO(); + dto0.setId(IdUtils.fastSimpleUUID()); + dto0.setBelongTo(beLongId); + dto0.setCheckNo(qcCheckTaskIncome.getCheckNo()); + dto0.setCreateBy(createBy); + dto0.setFactoryCode(factoryCode); + dto0.setCreateTime(nowDate); + dto0.setUserCode("mobile"); + dto0.setUserName("手持测试用户"); + users.add(dto0); + }else{ + for(QcUserMaterialDTO user:users){ + user.setId(IdUtils.fastSimpleUUID()); + user.setBelongTo(beLongId); + user.setCheckNo(qcCheckTaskIncome.getCheckNo()); + user.setCreateBy(createBy); + user.setFactoryCode(factoryCode); + user.setCreateTime(nowDate); + } + } + int m=qcCheckTaskIncomeMapper.addCheckUsers(users); + logger.info("检查人新增"+m+"成功"); + } qcCheckTaskIncomeMapper.insertQcCheckTaskIncome(qcCheckTaskIncome); + /**qc_check_task_detail**/ for(QcCheckTaskDetail item:items){ item.setRecordId(IdUtils.fastSimpleUUID()); @@ -162,6 +216,24 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { @DS("#header.poolName") public int updateQcCheckTaskIncome(QcCheckTaskIncome qcCheckTaskIncome) { qcCheckTaskIncome.setUpdateTime(DateUtils.getNowDate()); + /**qc_task_user**/ + String checkManName = qcCheckTaskIncome.getCheckManName(); + String checkManCode = qcCheckTaskIncome.getCheckManCode(); + qcCheckTaskIncome.setCheckManName(""); + qcCheckTaskIncome.setCheckManCode(""); + String[] splitNames = checkManName.split(","); + String[] splitCodes = checkManCode.split(","); + + List qcCheckTaskUserList = new ArrayList<>(); + for (int i = 0; i < splitNames.length; i++) { + QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser(); + qcCheckTaskUser.setCheckManName(splitNames[i]); + qcCheckTaskUser.setCheckManCode(splitCodes[i]); + qcCheckTaskUser.setCheckNo(qcCheckTaskIncome.getCheckNo()); + qcCheckTaskUser.setBelongTo(qcCheckTaskIncome.getRecordId()); + qcCheckTaskUserList.add(qcCheckTaskUser); + } + qcCheckTaskUserService.updateQcCheckTaskUser(qcCheckTaskUserList); return qcCheckTaskIncomeMapper.updateQcCheckTaskIncome(qcCheckTaskIncome); } @@ -174,6 +246,7 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { @Override @DS("#header.poolName") public int deleteQcCheckTaskIncomeByRecordIds(String[] recordIds) { + qcCheckTaskUserService.deleteQcCheckTaskUserByBelongTos(recordIds); return qcCheckTaskIncomeMapper.deleteQcCheckTaskIncomeByRecordIds(recordIds); } @@ -271,10 +344,11 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { qcCheckTaskIncome.setCheckStatus("2"); qcCheckTaskIncome.setCheckResult(result); qcCheckTaskIncome.setCheckTime(DateUtils.getNowDate()); + qcCheckTaskIncome.setCheckManCode(SecurityUtils.getUsername()); n = qcCheckTaskIncomeMapper.updateQcCheckTaskIncome(qcCheckTaskIncome); /**wms_raw_order_in-->quality_status->**/ - qcCheckTaskIncome.setCheckResult(result.equals("Y")?"1":"0"); + qcCheckTaskIncome.setCheckResult(result.equals("Y")?"1":"2"); qcCheckUnqualifiedMapper.updateQualityStatus(qcCheckTaskIncome); }else if("produce".equals(qcCheckTaskIncome.getTypeCode())){ QcCheckTaskProduce qcCheckTaskProduce = new QcCheckTaskProduce(); @@ -282,18 +356,20 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { qcCheckTaskProduce.setRecordId(recordId); qcCheckTaskProduce.setCheckResult(result); qcCheckTaskProduce.setCheckTime(DateUtils.getNowDate()); + qcCheckTaskProduce.setCheckManCode(SecurityUtils.getUsername()); n = qcCheckTaskProduceMapper.updateQcCheckTaskProduce(qcCheckTaskProduce); - /**pro_order_workorder-->status->w5**/ - qcCheckTaskIncome.setStatus("w5"); - qcCheckUnqualifiedMapper.updateWorkOrderStatus(qcCheckTaskIncome); + /**pro_order_workorder_batch-->qc_status->2**/ + qcCheckTaskIncome.setStatus("2"); + qcCheckUnqualifiedMapper.updateWorkOrderBatchStatus(qcCheckTaskIncome); }else if("product".equals(qcCheckTaskIncome.getTypeCode())){ QcCheckTaskWarehousing warehousing = new QcCheckTaskWarehousing(); warehousing.setCheckStatus("2"); warehousing.setRecordId(recordId); warehousing.setCheckResult(result); warehousing.setCheckTime(DateUtils.getNowDate()); + warehousing.setCheckManCode(SecurityUtils.getUsername()); n = qcCheckTaskWarehousingMapper.updateQcCheckTaskWarehousing(warehousing); } @@ -357,6 +433,22 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { return qcCheckTaskIncomeMapper.getBatchList(qcCheckTaskIncome); } + @Override + @DS("#header.poolName") + public List getProductWorkOrder(QcCheckTaskIncome qcCheckTaskIncome) { + List dtos = qcCheckUnqualifiedMapper.getProductWorkOrder(qcCheckTaskIncome); + for(QcCheckTaskIncome dto:dtos){ + String statusName = ""; + if("w5".equals(dto.getStatus())){ + statusName = "质检完成"; + }else{ + statusName = "质检未完成"; + } + dto.setStatus(statusName); + } + return dtos; + } + @Override public int commitCheckResults(QcCheckTaskIncome qcCheckTaskIncome) { List details = qcCheckTaskIncome.getQcCheckTaskDetails(); @@ -384,19 +476,18 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { qcCheckTask.setUpdateTime(nowTime); qcCheckTask.setCheckTime(nowTime); qcCheckTask.setCheckResult(result);//检验结果Y合格 N不合格 + BigDecimal noOkQquality = new BigDecimal("0"); - if(qcCheckTaskIncome.getaNoOkquality()!=null){ - noOkQquality.add(qcCheckTaskIncome.getaNoOkquality()); - } - if(qcCheckTaskIncome.getbNoOkquality()!=null){ - noOkQquality.add(qcCheckTaskIncome.getbNoOkquality()); - } - if(qcCheckTaskIncome.getcNoOkquality()!=null){ - noOkQquality.add(qcCheckTaskIncome.getcNoOkquality()); - } - if(qcCheckTask.getNoOkQuality()==null){ - qcCheckTask.setNoOkQuality(noOkQquality); + List defects = qcCheckTaskIncome.getDefects(); + for(QcCheckTaskDefect defect:defects){ + defect.setRecordId(IdUtils.fastSimpleUUID()); + defect.setCreateTime(nowTime); + defect.setCreateBy(updateBy); + defect.setFactoryCode(factoryCode); + noOkQquality = noOkQquality.add(defect.getNoOkQuality()); } + qcCheckTask.setNoOkQuality(noOkQquality);//累计不合格数 + qcCheckTask.setSampleQuality(qcCheckTaskIncome.getSampleQuality()); /**qc_check_task**/ n = qcCheckTaskIncomeMapper.updateQcCheckTask(qcCheckTask); @@ -405,17 +496,20 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService { for(QcCheckTaskDetail detail:details){ detail.setUpdateTime(nowTime); } - n= qcCheckTaskIncomeMapper.updateQcCheckTaskDetails(details); logger.info("更新qc_check_task_detail:"+n); + /**qc_check_task_defect**/ + n= qcCheckTaskIncomeMapper.addQcCheckTaskDefects(defects); + logger.info("qc_check_task_defect:"+n); + if("material".equals(qcCheckTaskIncome.getTypeCode())){ qcCheckTaskIncome.setCheckResult(result.equals("Y")?"1":"2"); qcCheckUnqualifiedMapper.updateQualityStatus(qcCheckTaskIncome); }else if("produce".equals(qcCheckTaskIncome.getTypeCode())){ - /**pro_order_workorder-->status->w5**/ - qcCheckTaskIncome.setStatus("w5"); - qcCheckUnqualifiedMapper.updateWorkOrderStatus(qcCheckTaskIncome); + /**pro_order_workorder_batch-->status->w5**/ + qcCheckTaskIncome.setStatus("2"); + qcCheckUnqualifiedMapper.updateWorkOrderBatchStatus(qcCheckTaskIncome); }else if("product".equals(qcCheckTaskIncome.getTypeCode())){ } 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 a076bb46e..f609dcfd9 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 @@ -1,23 +1,38 @@ package com.op.quality.service.impl; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import com.op.common.core.domain.R; 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.quality.domain.*; -import com.op.quality.mapper.QcCheckTaskDetailMapper; -import com.op.quality.mapper.QcCheckTypeProjectMapper; -import com.op.quality.mapper.QcMaterialGroupDetailMapper; +import com.op.quality.mapper.*; +import com.op.quality.service.IQcCheckTaskUserService; +import com.op.system.api.RemoteUserService; +import com.op.system.api.domain.SysUser; +import com.op.system.api.domain.mes.ProOrderWorkorderDTO; +import com.op.system.api.domain.quality.QcUserMaterialDTO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.op.quality.mapper.QcCheckTaskProduceMapper; import com.op.quality.service.IQcCheckTaskProduceService; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -26,6 +41,9 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; +import static com.op.common.core.web.domain.AjaxResult.error; +import static com.op.common.core.web.domain.AjaxResult.success; + /** * 生产过程检验任务Service业务层处理 * @@ -34,43 +52,62 @@ import javax.servlet.http.HttpServletRequest; */ @Service public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService { + protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private QcCheckTaskProduceMapper qcCheckTaskProduceMapper; - @Autowired - private QcCheckTypeProjectMapper qcCheckTypeProjectMapper; + @Autowired + private QcCheckTypeProjectMapper qcCheckTypeProjectMapper; + + @Autowired + private QcMaterialGroupDetailMapper qcMaterialGroupDetailMapper; + + @Autowired + private QcCheckTaskDetailMapper qcCheckTaskDetailMapper; @Autowired - private QcMaterialGroupDetailMapper qcMaterialGroupDetailMapper; + private RemoteUserService remoteUserService; + + @Autowired + private IQcCheckTaskUserService qcCheckTaskUserService; @Autowired - private QcCheckTaskDetailMapper qcCheckTaskDetailMapper; + private QcCheckTaskIncomeMapper qcCheckTaskIncomeMapper; - /** - * 查询生产过程检验任务 - * - * @param recordId 生产过程检验任务主键 - * @return 生产过程检验任务 - */ - @Override - @DS("#header.poolName") - public QcCheckTaskProduce selectQcCheckTaskProduceByRecordId(String recordId) { - return qcCheckTaskProduceMapper.selectQcCheckTaskProduceByRecordId(recordId); - } + /** + * 查询生产过程检验任务 + * + * @param recordId 生产过程检验任务主键 + * @return 生产过程检验任务 + */ + @Override + @DS("#header.poolName") + public QcCheckTaskProduce selectQcCheckTaskProduceByRecordId(String recordId) { + QcCheckTaskProduce qcCheckTaskProduce = qcCheckTaskProduceMapper.selectQcCheckTaskProduceByRecordId(recordId); + //获取拼接好的检验人员信息 + QcCheckTaskUser qcCheckTaskUser = qcCheckTaskUserService.selectQcCheckTaskUserByBelongTo(recordId); + if (StringUtils.isNotBlank(qcCheckTaskUser.getManNames())) { + qcCheckTaskProduce.setCheckManName(qcCheckTaskUser.getManNames()); + } + if (StringUtils.isNotBlank(qcCheckTaskUser.getManCodes())) { + qcCheckTaskProduce.setCheckManCode(qcCheckTaskUser.getManCodes()); + } + return qcCheckTaskProduce; + } - /** - * 查询生产过程检验任务列表 - * - * @param qcCheckTaskProduce 生产过程检验任务 - * @return 生产过程检验任务 - */ - @Override - @DS("#header.poolName") - public List selectQcCheckTaskProduceList(QcCheckTaskProduce qcCheckTaskProduce) { - qcCheckTaskProduce.setDelFlag("0"); - qcCheckTaskProduce.setTypeCode("produce"); - return qcCheckTaskProduceMapper.selectQcCheckTaskProduceList(qcCheckTaskProduce); - } + /** + * 查询生产过程检验任务列表 + * + * @param qcCheckTaskProduce 生产过程检验任务 + * @return 生产过程检验任务 + */ + @Override + @DS("#header.poolName") + public List selectQcCheckTaskProduceList(QcCheckTaskProduce qcCheckTaskProduce) { + qcCheckTaskProduce.setDelFlag("0"); + qcCheckTaskProduce.setTypeCode("produce"); + return qcCheckTaskProduceMapper.selectQcCheckTaskProduceList(qcCheckTaskProduce); + } /** * 新增生产过程检验任务 @@ -81,8 +118,15 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService @Override @DS("#header.poolName") public int insertQcCheckTaskProduce(QcCheckTaskProduce qcCheckTaskProduce) { + String factoryCode = ""; if(StringUtils.isNotBlank(qcCheckTaskProduce.getFactoryCode())){ DynamicDataSourceContextHolder.push("ds_"+qcCheckTaskProduce.getFactoryCode()); + factoryCode= qcCheckTaskProduce.getFactoryCode(); + }else{ + //获取当前所选工厂 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + factoryCode = request.getHeader(key.substring(8)).replace("ds_",""); } qcCheckTaskProduce.setCreateTime(DateUtils.getNowDate()); @@ -91,12 +135,8 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService int liushuiNum = qcCheckTaskProduceMapper.getTodayMaxNum(qcCheckTaskProduce); String liushuiStr = String.format("%04d", liushuiNum); - String createBy = SecurityUtils.getUsername(); - Date nowDate= DateUtils.getNowDate(); - //获取当前所选工厂 - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - String key = "#header.poolName"; - String factoryCode = request.getHeader(key.substring(8)).replace("ds_",""); + String createBy = SecurityUtils.getUsername(); + Date nowDate = DateUtils.getNowDate(); qcCheckTaskProduce.setCheckNo(bpDD+liushuiStr); @@ -121,37 +161,104 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService return 0;//没有找到检测项目 } - /**qc_check_task**/ - String beLongId = IdUtils.fastSimpleUUID(); - qcCheckTaskProduce.setRecordId(beLongId); - qcCheckTaskProduce.setFactoryCode(factoryCode); - qcCheckTaskProduce.setCreateTime(nowDate); - qcCheckTaskProduce.setTypeCode("produce");//大检验节点 - qcCheckTaskProduceMapper.insertQcCheckTaskProduce(qcCheckTaskProduce); - /**qc_check_task_detail**/ - for(QcCheckTaskDetail item:items){ - item.setRecordId(IdUtils.fastSimpleUUID()); - item.setBelongTo(beLongId); - item.setCreateTime(nowDate); - item.setCreateBy(createBy); - item.setFactoryCode(factoryCode); - item.setStatus("Y"); + /**qc_check_task**/ + String beLongId = IdUtils.fastSimpleUUID(); + qcCheckTaskProduce.setRecordId(beLongId); + qcCheckTaskProduce.setFactoryCode(factoryCode); + qcCheckTaskProduce.setCreateTime(nowDate); + qcCheckTaskProduce.setTypeCode("produce");//大检验节点 + /**qc_task_user start**/ + if(StringUtils.isNotBlank(qcCheckTaskProduce.getCheckManName())){ + String checkManName = qcCheckTaskProduce.getCheckManName(); + String checkManCode = qcCheckTaskProduce.getCheckManCode(); + qcCheckTaskProduce.setCheckManName(""); + qcCheckTaskProduce.setCheckManCode(""); + String[] splitNames = checkManName.split(","); + String[] splitCodes = checkManCode.split(","); + List qcCheckTaskUserList = new ArrayList<>(); + for (int i = 0; i < splitNames.length; i++) { + QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser(); + qcCheckTaskUser.setCheckManName(splitNames[i]); + qcCheckTaskUser.setCheckManCode(splitCodes[i]); + qcCheckTaskUser.setCheckNo(qcCheckTaskProduce.getCheckNo()); + qcCheckTaskUser.setBelongTo(beLongId); + qcCheckTaskUserList.add(qcCheckTaskUser); + } + //检验人插入 + qcCheckTaskUserService.insertQcCheckTaskUserList(qcCheckTaskUserList); + }else{//上位机 + qcCheckTaskProduce.setCheckManName(""); + qcCheckTaskProduce.setCheckManCode(""); + /**qc_user_material取默认检查人**/ + List users = qcCheckTaskIncomeMapper.getUserByMaterial(qcCheckTaskProduce.getMaterialCode()); + if(CollectionUtils.isEmpty(users)){ + QcUserMaterialDTO dto0 = new QcUserMaterialDTO(); + dto0.setId(IdUtils.fastSimpleUUID()); + dto0.setBelongTo(beLongId); + dto0.setCheckNo(qcCheckTaskProduce.getCheckNo()); + dto0.setCreateBy(createBy); + dto0.setFactoryCode(factoryCode); + dto0.setCreateTime(nowDate); + dto0.setUserCode("mobile"); + dto0.setUserName("手持测试用户"); + users.add(dto0); + }else{ + for(QcUserMaterialDTO user:users){ + user.setId(IdUtils.fastSimpleUUID()); + user.setBelongTo(beLongId); + user.setCheckNo(qcCheckTaskProduce.getCheckNo()); + user.setCreateBy(createBy); + user.setFactoryCode(factoryCode); + user.setCreateTime(nowDate); + } + } + int m=qcCheckTaskIncomeMapper.addCheckUsers(users); + logger.info("检查人新增"+m+"成功"); } - return qcCheckTaskDetailMapper.addBatch(items); - } - /** - * 修改生产过程检验任务 - * - * @param qcCheckTaskProduce 生产过程检验任务 - * @return 结果 - */ - @Override - @DS("#header.poolName") - public int updateQcCheckTaskProduce(QcCheckTaskProduce qcCheckTaskProduce) { - qcCheckTaskProduce.setUpdateTime(DateUtils.getNowDate()); - return qcCheckTaskProduceMapper.updateQcCheckTaskProduce(qcCheckTaskProduce); - } + qcCheckTaskProduceMapper.insertQcCheckTaskProduce(qcCheckTaskProduce); + + /**qc_check_task_detail**/ + for (QcCheckTaskDetail item : items) { + item.setRecordId(IdUtils.fastSimpleUUID()); + item.setBelongTo(beLongId); + item.setCreateTime(nowDate); + item.setCreateBy(createBy); + item.setFactoryCode(factoryCode); + item.setStatus("Y"); + } + return qcCheckTaskDetailMapper.addBatch(items); + } + + /** + * 修改生产过程检验任务 + * + * @param qcCheckTaskProduce 生产过程检验任务 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int updateQcCheckTaskProduce(QcCheckTaskProduce qcCheckTaskProduce) { + qcCheckTaskProduce.setUpdateTime(DateUtils.getNowDate()); + /**qc_task_user**/ + String checkManName = qcCheckTaskProduce.getCheckManName(); + String checkManCode = qcCheckTaskProduce.getCheckManCode(); + qcCheckTaskProduce.setCheckManName(""); + qcCheckTaskProduce.setCheckManCode(""); + String[] splitNames = checkManName.split(","); + String[] splitCodes = checkManCode.split(","); + List qcCheckTaskUserList = new ArrayList<>(); + for (int i = 0; i < splitNames.length; i++) { + QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser(); + qcCheckTaskUser.setCheckManName(splitNames[i]); + qcCheckTaskUser.setCheckManCode(splitCodes[i]); + qcCheckTaskUser.setCheckNo(qcCheckTaskProduce.getCheckNo()); + qcCheckTaskUser.setBelongTo(qcCheckTaskProduce.getRecordId()); + qcCheckTaskUserList.add(qcCheckTaskUser); + } + qcCheckTaskUserService.updateQcCheckTaskUser(qcCheckTaskUserList); + return qcCheckTaskProduceMapper.updateQcCheckTaskProduce(qcCheckTaskProduce); + } /** * 批量删除生产过程检验任务 @@ -162,6 +269,7 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService @Override @DS("#header.poolName") public int deleteQcCheckTaskProduceByRecordIds(String[] recordIds) { + qcCheckTaskUserService.deleteQcCheckTaskUserByBelongTos(recordIds); return qcCheckTaskProduceMapper.deleteQcCheckTaskProduceByRecordIds(recordIds); } @@ -197,4 +305,53 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService return qcCheckTaskProduceMapper.updateQcCheckTaskProduce(qcCheckTaskProduce); } + @Override + public AjaxResult createProduceXJTask() { + + // 加载sf-cloud库的sys_datasource + SysUser sysUser = new SysUser(); + sysUser.setUserId(1L); + R>> dateSources0 = remoteUserService.getPoolNameList(sysUser); + List> dateSources = dateSources0.getData(); + ExecutorService executorService = new ThreadPoolExecutor( + dateSources.size(), + dateSources.size(), + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue()); + try { + dateSources.forEach(dateSource -> { + if("ds_1000".equals(dateSource.get("poolName"))){ + logger.info("++++++++++++" + dateSource.get("poolName") + "++++过程检验巡检开始++++++++++"); + Runnable run = () -> createProduceXJFunc(dateSource.get("poolName")); + executorService.execute(run); + } + }); + } catch (Exception e) { + logger.error("service == createProduceXJTask == exception", e); + return error("service == createProduceXJTask == exception"); + } finally { + executorService.shutdown(); + } + return success(); + + + } + public void createProduceXJFunc(String poolName){ + DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key + ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO(); + qoWork.setStatus("w2"); + List works = qcCheckTaskProduceMapper.getOrderWorks(qoWork); + for(QcCheckTaskProduce productTask:works){ + productTask.setCheckType("checkTypeSCXJ");//过程检验-巡检 + Date nowTime = DateUtils.getNowDate(); + Date startTime = productTask.getCreateTime(); + + long mins = DateUtil.between(startTime, nowTime, DateUnit.MINUTE); + if(mins>=60){ + int m = insertQcCheckTaskProduce(productTask); + logger.info("++++++++++++过程检验巡检任务生成" + m + "++++++++++++++"); + } + } + logger.info("++++++++++++" + poolName + "++++过程检验巡检结束++++++++++"); + } } 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 new file mode 100644 index 000000000..ef37013ce --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskUserServiceImpl.java @@ -0,0 +1,157 @@ +package com.op.quality.service.impl; + +import java.util.Date; +import java.util.List; + +import com.baomidou.dynamic.datasource.annotation.DS; +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.security.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.op.quality.mapper.QcCheckTaskUserMapper; +import com.op.quality.domain.QcCheckTaskUser; +import com.op.quality.service.IQcCheckTaskUserService; +import org.springframework.util.CollectionUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + +/** + * 来料检验任务--检查人Service业务层处理 + * + * @author Open Platform + * @date 2023-12-22 + */ +@Service +public class QcCheckTaskUserServiceImpl implements IQcCheckTaskUserService { + @Autowired + private QcCheckTaskUserMapper qcCheckTaskUserMapper; + + /** + * 查询来料检验任务--检查人 + * + * @param recordId 来料检验任务--检查人主键 + * @return 来料检验任务--检查人 + */ + @Override + @DS("#header.poolName") + public QcCheckTaskUser selectQcCheckTaskUserByRecordId(String recordId) { + return qcCheckTaskUserMapper.selectQcCheckTaskUserByRecordId(recordId); + } + + /** + * 查询来料检验任务--检查人列表 + * + * @param qcCheckTaskUser 来料检验任务--检查人 + * @return 来料检验任务--检查人 + */ + @Override + @DS("#header.poolName") + public List selectQcCheckTaskUserList(QcCheckTaskUser qcCheckTaskUser) { + return qcCheckTaskUserMapper.selectQcCheckTaskUserList(qcCheckTaskUser); + } + + /** + * 新增来料检验任务--检查人 + * + * @param qcCheckTaskUser 来料检验任务--检查人 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int insertQcCheckTaskUser(QcCheckTaskUser qcCheckTaskUser) { + qcCheckTaskUser.setCreateTime(DateUtils.getNowDate()); + return qcCheckTaskUserMapper.insertQcCheckTaskUser(qcCheckTaskUser); + } + + /** + * 修改来料检验任务--检查人 + * + * @param qcCheckTaskUser 来料检验任务--检查人 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int updateQcCheckTaskUser(List qcCheckTaskUserList) { + if (CollectionUtils.isEmpty(qcCheckTaskUserList)){ + return 0; + } + String belongTo = qcCheckTaskUserList.get(0).getBelongTo(); + //根据belongTo删除 + qcCheckTaskUserMapper.deleteQcCheckTaskUserByBelongTo(belongTo); + + //获取当前所选工厂 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + String factoryCode = request.getHeader(key.substring(8)).replace("ds_", ""); + //遍历赋值 + for (QcCheckTaskUser qcCheckTaskUser : qcCheckTaskUserList){ + qcCheckTaskUser.setRecordId(IdUtils.fastSimpleUUID()); + qcCheckTaskUser.setCreateTime(DateUtils.getNowDate()); + qcCheckTaskUser.setCreateBy(SecurityUtils.getUsername()); + qcCheckTaskUser.setFactoryCode(factoryCode); + } + //重新插入数据 + return qcCheckTaskUserMapper.insertQcCheckTaskUserList(qcCheckTaskUserList); + } + + /** + * 批量删除来料检验任务--检查人 + * + * @param recordIds 需要删除的来料检验任务--检查人主键 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int deleteQcCheckTaskUserByRecordIds(String[] recordIds) { + return qcCheckTaskUserMapper.deleteQcCheckTaskUserByRecordIds(recordIds); + } + + @Override + @DS("#header.poolName") + public int deleteQcCheckTaskUserByBelongTos(String[] belongToArray) { + return qcCheckTaskUserMapper.deleteQcCheckTaskUserByBelongTos(belongToArray); + } + + /** + * 删除来料检验任务--检查人信息 + * + * @param recordId 来料检验任务--检查人主键 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int deleteQcCheckTaskUserByRecordId(String recordId) { + return qcCheckTaskUserMapper.deleteQcCheckTaskUserByRecordId(recordId); + } + + @Override + @DS("#header.poolName") + public int insertQcCheckTaskUserList(List qcCheckTaskUserList) { + if (CollectionUtils.isEmpty(qcCheckTaskUserList)){ + return 0; + } + //获取当前所选工厂 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + String factoryCode = request.getHeader(key.substring(8)).replace("ds_", ""); + //遍历赋值 + Date nowTime = DateUtils.getNowDate(); + for (QcCheckTaskUser qcCheckTaskUser : qcCheckTaskUserList){ + qcCheckTaskUser.setRecordId(IdUtils.fastSimpleUUID()); + qcCheckTaskUser.setCreateTime(nowTime); + qcCheckTaskUser.setCreateBy(SecurityUtils.getUsername()); + qcCheckTaskUser.setFactoryCode(factoryCode); + } + return qcCheckTaskUserMapper.insertQcCheckTaskUserList(qcCheckTaskUserList); + } + + @Override + @DS("#header.poolName") + public QcCheckTaskUser selectQcCheckTaskUserByBelongTo(String belongTo) { + return qcCheckTaskUserMapper.selectQcCheckTaskUserByBelongTo(belongTo); + } +} 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 3fd4328ea..1d232d154 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 @@ -1,24 +1,24 @@ package com.op.quality.service.impl; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import ch.qos.logback.core.net.SyslogOutputStream; 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.security.utils.SecurityUtils; -import com.op.quality.domain.QcCheckTaskDetail; -import com.op.quality.domain.QcCheckTypeProject; -import com.op.quality.domain.QcMaterialGroupDetail; -import com.op.quality.mapper.QcCheckTaskDetailMapper; -import com.op.quality.mapper.QcCheckTypeProjectMapper; -import com.op.quality.mapper.QcMaterialGroupDetailMapper; +import com.op.quality.domain.*; +import com.op.quality.mapper.*; +import com.op.quality.service.IQcCheckTaskUserService; +import com.op.system.api.domain.quality.QcUserMaterialDTO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.op.quality.mapper.QcCheckTaskWarehousingMapper; -import com.op.quality.domain.QcCheckTaskWarehousing; import com.op.quality.service.IQcCheckTaskWarehousingService; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -35,6 +35,7 @@ import javax.servlet.http.HttpServletRequest; */ @Service public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousingService { + protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private QcCheckTaskWarehousingMapper qcCheckTaskWarehousingMapper; @@ -47,6 +48,11 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin @Autowired private QcCheckTaskDetailMapper qcCheckTaskDetailMapper; + @Autowired + private IQcCheckTaskUserService qcCheckTaskUserService; + + private QcCheckTaskIncomeMapper qcCheckTaskIncomeMapper; + /** * 查询成品入库检验任务 * @@ -128,7 +134,51 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin qcCheckTaskWarehousing.setFactoryCode(factoryCode); qcCheckTaskWarehousing.setCreateTime(nowDate); qcCheckTaskWarehousing.setTypeCode("product");//大检验节点 + /**qc_task_user start**/ + if(StringUtils.isNotBlank(qcCheckTaskWarehousing.getCheckManName())){ + String checkManName = qcCheckTaskWarehousing.getCheckManName(); + String checkManCode = qcCheckTaskWarehousing.getCheckManCode(); + qcCheckTaskWarehousing.setCheckManName(""); + qcCheckTaskWarehousing.setCheckManCode(""); + String[] splitNames = checkManName.split(","); + String[] splitCodes = checkManCode.split(","); + List qcCheckTaskUserList = new ArrayList<>(); + for (int i = 0; i < splitNames.length; i++) { + QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser(); + qcCheckTaskUser.setCheckManName(splitNames[i]); + qcCheckTaskUser.setCheckManCode(splitCodes[i]); + qcCheckTaskUser.setCheckNo(qcCheckTaskWarehousing.getCheckNo()); + qcCheckTaskUser.setBelongTo(beLongId); + qcCheckTaskUserList.add(qcCheckTaskUser); + } + //检验人插入 + qcCheckTaskUserService.insertQcCheckTaskUserList(qcCheckTaskUserList); + }else{//上位机触发 + qcCheckTaskWarehousing.setCheckManName(""); + qcCheckTaskWarehousing.setCheckManCode(""); + /**qc_user_material取默认检查人**/ + List users = qcCheckTaskIncomeMapper.getUserByMaterial(qcCheckTaskWarehousing.getMaterialCode()); + if(CollectionUtils.isEmpty(users)){ + QcUserMaterialDTO dto0 = new QcUserMaterialDTO(); + dto0.setUserCode("mobile"); + dto0.setUserName("手持测试用户"); + users.add(dto0); + }else{ + for(QcUserMaterialDTO user:users){ + user.setId(IdUtils.fastSimpleUUID()); + user.setBelongTo(beLongId); + user.setCheckNo(qcCheckTaskWarehousing.getCheckNo()); + user.setCreateBy(createBy); + user.setFactoryCode(factoryCode); + user.setCreateTime(nowDate); + } + } + int m=qcCheckTaskIncomeMapper.addCheckUsers(users); + logger.info("检查人新增"+m+"成功"); + } + qcCheckTaskWarehousingMapper.insertQcCheckTaskWarehousing(qcCheckTaskWarehousing); + /**qc_check_task_detail**/ for(QcCheckTaskDetail item:items){ item.setRecordId(IdUtils.fastSimpleUUID()); @@ -151,6 +201,23 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin @DS("#header.poolName") public int updateQcCheckTaskWarehousing(QcCheckTaskWarehousing qcCheckTaskWarehousing) { qcCheckTaskWarehousing.setUpdateTime(DateUtils.getNowDate()); + /**qc_task_user**/ + String checkManName = qcCheckTaskWarehousing.getCheckManName(); + String checkManCode = qcCheckTaskWarehousing.getCheckManCode(); + qcCheckTaskWarehousing.setCheckManName(""); + qcCheckTaskWarehousing.setCheckManCode(""); + String[] splitNames = checkManName.split(","); + String[] splitCodes = checkManCode.split(","); + List qcCheckTaskUserList = new ArrayList<>(); + for (int i = 0; i < splitNames.length; i++) { + QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser(); + qcCheckTaskUser.setCheckManName(splitNames[i]); + qcCheckTaskUser.setCheckManCode(splitCodes[i]); + qcCheckTaskUser.setCheckNo(qcCheckTaskWarehousing.getCheckNo()); + qcCheckTaskUser.setBelongTo(qcCheckTaskWarehousing.getRecordId()); + qcCheckTaskUserList.add(qcCheckTaskUser); + } + qcCheckTaskUserService.updateQcCheckTaskUser(qcCheckTaskUserList); return qcCheckTaskWarehousingMapper.updateQcCheckTaskWarehousing(qcCheckTaskWarehousing); } @@ -163,6 +230,7 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin @Override @DS("#header.poolName") public int deleteQcCheckTaskWarehousingByRecordIds(String[] recordIds) { + qcCheckTaskUserService.deleteQcCheckTaskUserByBelongTos(recordIds); return qcCheckTaskWarehousingMapper.deleteQcCheckTaskWarehousingByRecordIds(recordIds); } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java index 554e08055..2f34e7986 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcInterfaceServiceImpl.java @@ -1,10 +1,9 @@ package com.op.quality.service.impl; +import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.utils.DateUtils; -import com.op.quality.domain.QcCheckTaskDetail; -import com.op.quality.domain.QcInterface; -import com.op.quality.domain.QcProCheck; +import com.op.quality.domain.*; import com.op.quality.mapper.QcInterfaceMapper; import com.op.quality.service.IQcInterfaceService; import org.apache.commons.lang.StringUtils; @@ -319,6 +318,53 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService { return dtos; } + @Override + @DS("#header.poolName") + public QcLineChartDto getLineQcData(QcInterface qcInterface) { + QcLineChartDto lineChartDto = new QcLineChartDto(); + + Calendar calendar = Calendar.getInstance(); + Date now = calendar.getTime(); + calendar.set(Calendar.DAY_OF_MONTH, 1); + Date firstDayOfMonth = calendar.getTime(); + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String startTime = dateFormat.format(firstDayOfMonth); + String endTime = dateFormat.format(now); + qcInterface.setProductDateStart(startTime); + qcInterface.setProductDateEnd(endTime); + //图例名称 + List seriesNames = qcInterfaceMapper.getLineChartsNames(qcInterface); + lineChartDto.setSeriesNames(seriesNames); + //日期名称数组 + List xAxisDatas = getDays(startTime,endTime); + lineChartDto.setxAxisDatas(xAxisDatas); + Map productdatas = qcInterfaceMapper.getLineChartsDatas(qcInterface); + //值 + List seriesDatas = new ArrayList<>(); + QcLineChartSeriesDto lineChartSeriesDto = null; + for(String productName:seriesNames){ + lineChartSeriesDto = new QcLineChartSeriesDto(); + lineChartSeriesDto.setName(productName); + lineChartSeriesDto.setType("line"); + List datas = new ArrayList<>(); + for(String dayStr:xAxisDatas) { + QcInterface data0 = productdatas.get(productName + dayStr); + if (data0 != null && !"0.00".equals(data0.getQuality())) { + BigDecimal rate = new BigDecimal(data0.getNoOkQuality()) + .multiply(new BigDecimal(100)) + .divide(new BigDecimal(data0.getQuality()),2,BigDecimal.ROUND_HALF_UP); + datas.add(rate.toString()); + } else { + datas.add("0"); + } + } + lineChartSeriesDto.setData(datas); + seriesDatas.add(lineChartSeriesDto); + } + lineChartDto.setSeriesDatas(seriesDatas); + return lineChartDto; + } + /**两个日期之间的所有日期**/ public static List getDays(String startTime,String endTime) { diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java index b3ce675de..b9a2a1c6b 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcProCheckServiceImpl.java @@ -8,10 +8,7 @@ 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.security.utils.SecurityUtils; -import com.op.quality.domain.QcCheckTaskDetail; -import com.op.quality.domain.QcCheckTaskIncome; -import com.op.quality.domain.QcCheckTypeProject; -import com.op.quality.domain.QcProCheck; +import com.op.quality.domain.*; import com.op.quality.mapper.QcCheckTaskIncomeMapper; import com.op.quality.mapper.QcProCheckMapper; import com.op.quality.service.QcProCheckService; @@ -19,10 +16,8 @@ import com.op.system.api.domain.SysDictData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.UUID; +import java.text.SimpleDateFormat; +import java.util.*; /** * @ClassName : quaServiceImpl @@ -40,7 +35,7 @@ public class QcProCheckServiceImpl implements QcProCheckService { @Override public R saveQcProCheck(QcProCheck qcProCheck) { - DynamicDataSourceContextHolder.push("ds_"+qcProCheck.getFactoryCode()); + DynamicDataSourceContextHolder.push("ds_" + qcProCheck.getFactoryCode()); qcProCheck.setId(UUID.randomUUID().toString().replace("-", "")); //上传附件 @@ -84,19 +79,19 @@ public class QcProCheckServiceImpl implements QcProCheckService { @Override public List selectQcProCheckList(QcProCheck qcProCheck) { - DynamicDataSourceContextHolder.push("ds_"+qcProCheck.getFactoryCode()); + DynamicDataSourceContextHolder.push("ds_" + qcProCheck.getFactoryCode()); return qcProCheckMapper.selectQcProCheckList(qcProCheck); } @Override public QcProCheck getInfoByRfid(QcProCheck qcProCheck) { - DynamicDataSourceContextHolder.push("ds_"+qcProCheck.getFactoryCode()); + DynamicDataSourceContextHolder.push("ds_" + qcProCheck.getFactoryCode()); QcProCheck dto = qcProCheckMapper.getInfoByRfid(qcProCheck); - if(dto==null || StringUtils.isEmpty(dto.getProductCode())){ + if (dto == null || StringUtils.isEmpty(dto.getProductCode())) { dto = new QcProCheck(); dto.setProductCode("EmptyPallet"); - }else{ - if(StringUtils.isNotEmpty(dto.getProductName())){ + } else { + if (StringUtils.isNotEmpty(dto.getProductName())) { dto.setProductSpc(dto.getProductName().split("mm")[0] + "mm"); } @@ -106,7 +101,7 @@ public class QcProCheckServiceImpl implements QcProCheckService { @Override public List getEquipmentList(QcProCheck qcProCheck) { - DynamicDataSourceContextHolder.push("ds_"+qcProCheck.getFactoryCode()); + DynamicDataSourceContextHolder.push("ds_" + qcProCheck.getFactoryCode()); return qcProCheckMapper.getEquipmentList(qcProCheck); } @@ -125,9 +120,14 @@ public class QcProCheckServiceImpl implements QcProCheckService { } @Override - public List getCheckTaskDetailList(QcCheckTaskDetail qcCheckTaskDetail) { + public QcCheckTaskIncome getCheckTaskDetailList(QcCheckTaskDetail qcCheckTaskDetail) { DynamicDataSourceContextHolder.push(qcCheckTaskDetail.getFactoryCode()); - return qcCheckTaskIncomeMapper.getCkeckProjectList(qcCheckTaskDetail); + QcCheckTaskIncome dto = new QcCheckTaskIncome(); + List qcCheckTaskDetails =qcCheckTaskIncomeMapper.getCkeckProjectList(qcCheckTaskDetail); + dto.setQcCheckTaskDetails(qcCheckTaskDetails); + List defects =qcCheckTaskIncomeMapper.getCkeckDefectList(qcCheckTaskDetail); + dto.setDefects(defects); + return dto; } @Override @@ -136,4 +136,15 @@ public class QcProCheckServiceImpl implements QcProCheckService { return qcCheckTaskIncomeMapper.getQcUnitList(sysDictData); } + @DS("#header.poolName") + @Override + public List selectQcCheckList(QcProCheck qcProCheck) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + if (qcProCheck.getCreateTimeArray() != null) { + qcProCheck.setCreateTimeStart(formatter.format(qcProCheck.getCreateTimeArray().get(0))); + qcProCheck.setCreateTimeEnd(formatter.format(qcProCheck.getCreateTimeArray().get(1))); + } + return qcProCheckMapper.getQcProCheckList(qcProCheck); + } + } diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/WmsRawOrderInServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/WmsRawOrderInServiceImpl.java new file mode 100644 index 000000000..af35158e5 --- /dev/null +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/WmsRawOrderInServiceImpl.java @@ -0,0 +1,115 @@ +package com.op.quality.service.impl; + +import java.util.List; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.utils.uuid.IdUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.op.quality.mapper.WmsRawOrderInMapper; +import com.op.quality.domain.WmsRawOrderIn; +import com.op.quality.service.IWmsRawOrderInService; + +/** + * 白坯手动入库单Service业务层处理 + * + * @author Open Platform + * @date 2023-12-26 + */ +@Service +public class WmsRawOrderInServiceImpl implements IWmsRawOrderInService { + @Autowired + private WmsRawOrderInMapper wmsRawOrderInMapper; + + /** + * 查询白坯手动入库单 + * + * @param rawOrderInId 白坯手动入库单主键 + * @return 白坯手动入库单 + */ + @Override + @DS("#header.poolName") + public WmsRawOrderIn selectWmsRawOrderInByRawOrderInId(String rawOrderInId) { + return wmsRawOrderInMapper.selectWmsRawOrderInByRawOrderInId(rawOrderInId); + } + + /** + * 查询白坯手动入库单列表 + * + * @param wmsRawOrderIn 白坯手动入库单 + * @return 白坯手动入库单 + */ + @Override + @DS("#header.poolName") + public List selectWmsRawOrderInList(WmsRawOrderIn wmsRawOrderIn) { + return wmsRawOrderInMapper.selectWmsRawOrderInList(wmsRawOrderIn); + } + + /** + * 新增白坯手动入库单 + * + * @param wmsRawOrderIn 白坯手动入库单 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int insertWmsRawOrderIn(WmsRawOrderIn wmsRawOrderIn) { + wmsRawOrderIn.setRawOrderInId(IdUtils.fastSimpleUUID()); + wmsRawOrderIn.setFactoryCode("1000"); + wmsRawOrderIn.setWhCode("A"); + wmsRawOrderIn.setWaCode("A"); + wmsRawOrderIn.setWlCode("A-A01"); + wmsRawOrderIn.setDnNo("202312"); + wmsRawOrderIn.setOrderStatus("0"); + wmsRawOrderIn.setActiveFlag("1"); + wmsRawOrderIn.setSupplyCode("0000102874"); + wmsRawOrderIn.setSapFactoryCode("1000"); + return wmsRawOrderInMapper.insertWmsRawOrderIn(wmsRawOrderIn); + } + + /** + * 修改白坯手动入库单 + * + * @param wmsRawOrderIn 白坯手动入库单 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int updateWmsRawOrderIn(WmsRawOrderIn wmsRawOrderIn) { + wmsRawOrderIn.setFactoryCode("1000"); + wmsRawOrderIn.setWhCode("A"); + wmsRawOrderIn.setWaCode("A"); + wmsRawOrderIn.setWlCode("A-A01"); + wmsRawOrderIn.setDnNo("202312"); + wmsRawOrderIn.setOrderStatus("0"); + wmsRawOrderIn.setActiveFlag("1"); + wmsRawOrderIn.setSupplyCode("0000102874"); + wmsRawOrderIn.setSapFactoryCode("1000"); + wmsRawOrderIn.setQualityStatus("0"); + return wmsRawOrderInMapper.updateWmsRawOrderIn(wmsRawOrderIn); + } + + /** + * 批量删除白坯手动入库单 + * + * @param rawOrderInIds 需要删除的白坯手动入库单主键 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int deleteWmsRawOrderInByRawOrderInIds(String[] rawOrderInIds) { + return wmsRawOrderInMapper.deleteWmsRawOrderInByRawOrderInIds(rawOrderInIds); + } + + /** + * 删除白坯手动入库单信息 + * + * @param rawOrderInId 白坯手动入库单主键 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int deleteWmsRawOrderInByRawOrderInId(String rawOrderInId) { + return wmsRawOrderInMapper.deleteWmsRawOrderInByRawOrderInId(rawOrderInId); + } +} diff --git a/op-modules/op-quality/src/main/resources/bootstrap.yml b/op-modules/op-quality/src/main/resources/bootstrap.yml index b73385328..bcce7b90f 100644 --- a/op-modules/op-quality/src/main/resources/bootstrap.yml +++ b/op-modules/op-quality/src/main/resources/bootstrap.yml @@ -14,12 +14,12 @@ spring: nacos: discovery: namespace: lanju-op - group: zxl + group: chj # 服务注册地址 server-addr: 175.27.215.92:8848 config: namespace: lanju-op - group: zxl + group: chj # 服务注册地址 server-addr: 175.27.215.92:8848 # 配置文件格式 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 429cf9f7e..386a43408 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 @@ -193,6 +193,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" check_type, type_code, sample_quality, + order_type, #{recordId}, @@ -227,9 +228,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{checkType}, #{typeCode}, #{sampleQuality}, + #{orderType}, + update qc_check_task @@ -270,6 +273,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update qc_check_task set check_status = #{checkStatus}, + check_man_code = #{updateBy}, check_time = #{checkTime}, sample_quality = #{sampleQuality}, noOk_quality = #{noOkQuality}, @@ -304,4 +308,55 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{recordId} + + + + + + insert into qc_check_task_user( + record_id,belong_to,check_no, + check_man_code,check_man_name, + create_by,create_time,factory_code + ) values + + ( + #{item.id},#{item.belongTo},#{item.checkNo}, + #{item.userCode},#{item.userName}, + #{item.createBy},#{item.createTime},#{item.factoryCode} + ) + + + + insert into qc_check_task_defect( + record_id,belong_to, + defect_code,defect_subclass, + noOk_quality, + create_by,create_time,factory_code + ) values + + ( + #{item.recordId},#{item.belongTo}, + #{item.defectCode},#{item.defectSubclass}, + #{item.noOkQuality}, + #{item.createBy},#{item.createTime},#{item.factoryCode} + ) + + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml index 401b4ae79..1ad7a3206 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskProduceMapper.xml @@ -107,8 +107,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from qc_check_type where type_code = #{typeCode} and del_flag='0' + - + insert into qc_check_task record_id, @@ -146,7 +175,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" del_flag, check_type, type_code, - sample_quality, #{recordId}, @@ -184,7 +212,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{delFlag}, #{checkType}, #{typeCode}, - #{sampleQuality}, @@ -223,7 +250,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = #{updateTime}, factory_code = #{factoryCode}, del_flag = #{delFlag}, - sample_quality = #{sampleQuality}, where record_id = #{recordId} @@ -238,4 +264,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{recordId} + + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskUserMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskUserMapper.xml new file mode 100644 index 000000000..06375fb7e --- /dev/null +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskUserMapper.xml @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + select record_id, check_no, check_man_code, check_man_name, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, factory_code, del_flag from qc_check_task_user + + + + + + + + insert into qc_check_task_user + + record_id, + check_no, + check_man_code, + check_man_name, + attr1, + attr2, + attr3, + attr4, + create_by, + create_time, + update_by, + update_time, + factory_code, + del_flag, + belong_to, + + + #{recordId}, + #{checkNo}, + #{checkManCode}, + #{checkManName}, + #{attr1}, + #{attr2}, + #{attr3}, + #{attr4}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{factoryCode}, + #{delFlag}, + #{belongTo}, + + + + + update qc_check_task_user + + check_no = #{checkNo}, + check_man_code = #{checkManCode}, + check_man_name = #{checkManName}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + attr4 = #{attr4}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + factory_code = #{factoryCode}, + del_flag = #{delFlag}, + belong_to = #{belongTo}, + + where record_id = #{recordId} + + + + delete from qc_check_task_user where record_id = #{recordId} + + + + delete from qc_check_task_user where record_id in + + #{recordId} + + + + + delete from qc_check_task_user where belong_to = #{belongTo} + + + + insert into qc_check_task_user( + record_id, + check_no, + check_man_code, + check_man_name, + attr1, + attr2, + attr3, + attr4, + create_by, + create_time, + update_by, + update_time, + factory_code, + del_flag, + belong_to + ) + values + + ( + #{item.recordId}, + #{item.checkNo}, + #{item.checkManCode}, + #{item.checkManName}, + #{item.attr1}, + #{item.attr2}, + #{item.attr3}, + #{item.attr4}, + #{item.createBy}, + #{item.createTime}, + #{item.updateBy}, + #{item.updateTime}, + #{item.factoryCode}, + #{item.delFlag}, + #{item.belongTo} + ) + + + + + + + delete from qc_check_task_user where belong_to in + + #{belongTo} + + + + \ No newline at end of file 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 debdfb6eb..9d16ea667 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 @@ -131,6 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" type_code, noOk_quality, sample_quality, + order_type, #{recordId}, @@ -165,6 +166,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{typeCode}, #{noOkQuality}, #{sampleQuality}, + #{orderType}, diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeMapper.xml index ac85dcb58..79d641439 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTypeMapper.xml @@ -48,8 +48,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" '检验任务' attr1 from qc_check_task qct left join qc_check_type qc on qct.check_type = qc.order_code - left join qc_user_material qum on qum.material_code = qct.material_code - where qct.check_status = '0' and qum.user_code = #{checkManCode} + left join qc_check_task_user qctu on qctu.belong_to = qct.record_id + where qct.check_status = '0' and qctu.check_man_code = #{checkManCode} group by qct.check_type,qc.check_name union all select '','', @@ -57,8 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" '不合格处理' attr1 from qc_check_unqualified qcu left join qc_check_task qct on qcu.task_id = qct.record_id - left join qc_user_material qum on qum.material_code = qct.material_code - where qcu.status != '2' and qum.user_code = #{checkManCode} + where qcu.status != '2' and qct.check_man_code = #{checkManCode} insert into qc_check_type 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 12c5f80f1..e8e191236 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 @@ -118,8 +118,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and workorder_code_sap like concat like ('%',#{orderNo}) order by product_date desc + - + insert into qc_check_unqualified id, @@ -186,8 +199,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update wms_raw_order_in set quality_status = #{checkResult} where order_no = #{orderNo} - - update pro_order_workorder set status = #{status} where workorder_code_sap = #{orderNo} + + update pro_order_workorder_batch set qc_status = #{status} where batch_code = #{incomeBatchNo} diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml index 6f0b51af1..edad5b1b3 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcInterfaceMapper.xml @@ -241,4 +241,23 @@ where belong_to = #{recordId} and status = 'N' and del_flag='0' + + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml index c08df09b7..6aadc6428 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcProCheckMapper.xml @@ -256,12 +256,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" qct.status,qct.create_by,qct.create_time,qct.check_type, qct.noOk_quality,qct.aNoOkquality,qct.bNoOkquality,qct.cNoOkquality,qct.sample_quality from qc_check_task qct + left join qc_check_task_user qctu on qctu.belong_to = qct.record_id and qct.del_flag = '0' and qct.check_type = #{checkType} - and qct.check_man_code = #{checkManCode} + and qctu.check_man_code = #{checkManCode} and qct.check_status in (${checkStatus}) order by qct.create_time desc + + diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/WmsRawOrderInMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/WmsRawOrderInMapper.xml new file mode 100644 index 000000000..130dfc136 --- /dev/null +++ b/op-modules/op-quality/src/main/resources/mapper/quality/WmsRawOrderInMapper.xml @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select raw_order_in_id, factory_code, wh_code, wa_code, wl_code, order_in_type, order_no, dn_no, po_no, po_line, po_type, material_code, material_desc, unit, buyer_group, supply_code, sap_factory_code, send_spot, request_amount, receipt_amount, shelves_amount, location, request_time, quality_status, order_status, receipt_operator, receipt_time, shelves_operator, return_amount, return_name, return_time, return_status, shelves_time, return_message, accounting_status, accounting_time, accounting_message, user_defined1, user_defined2, user_defined3, user_defined4, user_defined5, user_defined6, user_defined7, user_defined8, user_defined9, user_defined10, create_by, gmt_create, last_modified_by, gmt_modified, active_flag from wms_raw_order_in + + + + + + + + insert into wms_raw_order_in + + raw_order_in_id, + factory_code, + wh_code, + wa_code, + wl_code, + order_in_type, + order_no, + dn_no, + po_no, + po_line, + po_type, + material_code, + material_desc, + unit, + buyer_group, + supply_code, + sap_factory_code, + send_spot, + request_amount, + receipt_amount, + shelves_amount, + location, + request_time, + quality_status, + order_status, + receipt_operator, + receipt_time, + shelves_operator, + return_amount, + return_name, + return_time, + return_status, + shelves_time, + return_message, + accounting_status, + accounting_time, + accounting_message, + user_defined1, + user_defined2, + user_defined3, + user_defined4, + user_defined5, + user_defined6, + user_defined7, + user_defined8, + user_defined9, + user_defined10, + create_by, + gmt_create, + last_modified_by, + gmt_modified, + active_flag, + + + #{rawOrderInId}, + #{factoryCode}, + #{whCode}, + #{waCode}, + #{wlCode}, + #{orderInType}, + #{orderNo}, + #{dnNo}, + #{poNo}, + #{poLine}, + #{poType}, + #{materialCode}, + #{materialDesc}, + #{unit}, + #{buyerGroup}, + #{supplyCode}, + #{sapFactoryCode}, + #{sendSpot}, + #{requestAmount}, + #{receiptAmount}, + #{shelvesAmount}, + #{location}, + #{requestTime}, + #{qualityStatus}, + #{orderStatus}, + #{receiptOperator}, + #{receiptTime}, + #{shelvesOperator}, + #{returnAmount}, + #{returnName}, + #{returnTime}, + #{returnStatus}, + #{shelvesTime}, + #{returnMessage}, + #{accountingStatus}, + #{accountingTime}, + #{accountingMessage}, + #{userDefined1}, + #{userDefined2}, + #{userDefined3}, + #{userDefined4}, + #{userDefined5}, + #{userDefined6}, + #{userDefined7}, + #{userDefined8}, + #{userDefined9}, + #{userDefined10}, + #{createBy}, + #{gmtCreate}, + #{lastModifiedBy}, + #{gmtModified}, + #{activeFlag}, + + + + + update wms_raw_order_in + + factory_code = #{factoryCode}, + wh_code = #{whCode}, + wa_code = #{waCode}, + wl_code = #{wlCode}, + order_in_type = #{orderInType}, + order_no = #{orderNo}, + dn_no = #{dnNo}, + po_no = #{poNo}, + po_line = #{poLine}, + po_type = #{poType}, + material_code = #{materialCode}, + material_desc = #{materialDesc}, + unit = #{unit}, + buyer_group = #{buyerGroup}, + supply_code = #{supplyCode}, + sap_factory_code = #{sapFactoryCode}, + send_spot = #{sendSpot}, + request_amount = #{requestAmount}, + receipt_amount = #{receiptAmount}, + shelves_amount = #{shelvesAmount}, + location = #{location}, + request_time = #{requestTime}, + quality_status = #{qualityStatus}, + order_status = #{orderStatus}, + receipt_operator = #{receiptOperator}, + receipt_time = #{receiptTime}, + shelves_operator = #{shelvesOperator}, + return_amount = #{returnAmount}, + return_name = #{returnName}, + return_time = #{returnTime}, + return_status = #{returnStatus}, + shelves_time = #{shelvesTime}, + return_message = #{returnMessage}, + accounting_status = #{accountingStatus}, + accounting_time = #{accountingTime}, + accounting_message = #{accountingMessage}, + user_defined1 = #{userDefined1}, + user_defined2 = #{userDefined2}, + user_defined3 = #{userDefined3}, + user_defined4 = #{userDefined4}, + user_defined5 = #{userDefined5}, + user_defined6 = #{userDefined6}, + user_defined7 = #{userDefined7}, + user_defined8 = #{userDefined8}, + user_defined9 = #{userDefined9}, + user_defined10 = #{userDefined10}, + create_by = #{createBy}, + gmt_create = #{gmtCreate}, + last_modified_by = #{lastModifiedBy}, + gmt_modified = #{gmtModified}, + active_flag = #{activeFlag}, + + where raw_order_in_id = #{rawOrderInId} + + + + delete from wms_raw_order_in where raw_order_in_id = #{rawOrderInId} + + + + delete from wms_raw_order_in where raw_order_in_id in + + #{rawOrderInId} + + + \ No newline at end of file diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java index de54e9d5e..945a80500 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java @@ -184,8 +184,15 @@ public WmsToWCSDTO packingMaterialsOutBoundCompleted(@RequestBody WmsToWCSDTO wc Integer result= odsProcureOrderService.ProductionMaterialRequisitionAdd(orderList); return success(result); } + + /** + * 采购提单 + * @param odsProcureOrder + * @return + */ @PostMapping("/sapPurchaseOrderSync") public AjaxResult sapPurchaseOrderSync(@RequestBody OdsProcureOrder odsProcureOrder){ + AjaxResult result= odsProcureOrderService.sapPurchaseOrderSync(odsProcureOrder); return result; } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java index 064a3a04d..f88747b42 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java @@ -8,10 +8,7 @@ import com.alibaba.fastjson.JSONObject; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - +import java.util.*; import com.op.common.core.domain.R; @@ -22,6 +19,7 @@ import com.op.common.security.utils.SecurityUtils; import com.op.system.api.RemoteSapService; import com.op.system.api.domain.sap.SapBackflushMPQuery; import com.op.system.api.domain.sap.SapMaterialPosting; +import com.op.system.api.domain.sap.SapPurchaseOrderQuery; import okhttp3.OkHttpClient; import okhttp3.MediaType; import okhttp3.RequestBody; @@ -30,6 +28,7 @@ import okhttp3.Response; import java.io.IOException; + import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.utils.uuid.IdUtils; @@ -554,13 +553,19 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { sapBackflushMPQueryList.add(sapBackflushMPQuery); R result2= remoteSapService.sapBackflushMP(sapBackflushMPQueryList);//x int code= result2.getCode(); + String msg= result2.getMsg(); odsProcureOutOrder.setUserDefined11(msg); if (code==200){//过账成功 + Map map=new HashMap(); + map= (Map) result2.getData(); + String userDefined9= (String) map.get("MATERIALDOCUMENT"); + odsProcureOutOrder.setUserDefined9(userDefined9); odsProcureOutOrder.setUserDefined10("2");//成功 odsProcureOutOrderMapper.updateOdsProcureOutOrderByid(odsProcureOutOrder); }else {// + odsProcureOutOrder.setUserDefined9(""); odsProcureOutOrder.setUserDefined10("3");//失败 odsProcureOutOrderMapper.updateOdsProcureOutOrderByid(odsProcureOutOrder); } @@ -578,14 +583,20 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { sapMaterialPosting.setBatch(odsProcureOutOrder.getUserDefined2()); //批号 sapMaterialPostingList.add(sapMaterialPosting); R result= remoteSapService.sapMaterialPosting(sapMaterialPostingList); + int code= result.getCode(); String msg= result.getMsg(); odsProcureOutOrder.setUserDefined11(msg); if (code==200){//过账成功 + Map map=new HashMap(); + map= (Map) result.getData(); + String userDefined9= (String) map.get("MATERIALDOCUMENT"); + odsProcureOutOrder.setUserDefined9(userDefined9); odsProcureOutOrder.setUserDefined10("2");//成功 odsProcureOutOrderMapper.updateOdsProcureOutOrderByid(odsProcureOutOrder); }else {// + odsProcureOutOrder.setUserDefined9(""); odsProcureOutOrder.setUserDefined10("3");//失败 odsProcureOutOrderMapper.updateOdsProcureOutOrderByid(odsProcureOutOrder); } @@ -597,8 +608,38 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { @Override public AjaxResult sapPurchaseOrderSync(OdsProcureOrder odsProcureOrder) { - //remoteSapService.sapPurchaseOrderSync(); - return null; + DynamicDataSourceContextHolder.push("ds_" +odsProcureOrder.getFactoryCode()); + SapPurchaseOrderQuery sapPurchaseOrderQuery=new SapPurchaseOrderQuery(); + sapPurchaseOrderQuery.setEbeln(odsProcureOrder.getProcureCode()); + R result= remoteSapService.sapPurchaseOrderSync(sapPurchaseOrderQuery); + List> mapList = new ArrayList<>(); + mapList= (List>) result.getData(); + for(Map sapPurchaseOrderQuery1:mapList){ + OdsProcureOrder order =new OdsProcureOrder(); + order.setProcureCode(sapPurchaseOrderQuery1.get("ebeln")); + order.setSiteCode(sapPurchaseOrderQuery1.get("werks")); + order.setUserDefined3(sapPurchaseOrderQuery1.get("ebelp"));//批次 + order.setMaterialCode(sapPurchaseOrderQuery1.get("matnr")); + order.setMaterialDesc(sapPurchaseOrderQuery1.get("maktx")); + order.setActive("1"); + List orderList= odsProcureOrderMapper.selectOdsProcureOrderList(order); + if (orderList.size()>0){ + continue; + } + order.setPlanNumber(new BigDecimal(sapPurchaseOrderQuery1.get("menge"))); + order.setUnit(sapPurchaseOrderQuery1.get("meins")); + order.setSupplierCode(sapPurchaseOrderQuery1.get("lifnr")); + order.setUserDefined9(sapPurchaseOrderQuery1.get("zmenge")); + order.setUserDefined10(sapPurchaseOrderQuery1.get("elikz")); + order.setUserDefined11(sapPurchaseOrderQuery1.get("eindt")); + order.setCreateBy(odsProcureOrder.getCreateBy()); + order.setPlanDate(new Date()); + order.setOrderStatus("0"); + //order.setID(IdUtils.fastSimpleUUID()); + order.setCreateDate(new Date()); + odsProcureOrderMapper.insertOdsProcureOrder(order); + } + return AjaxResult.success(); } public String DesignatedPalletOutboundWCS(WMSDesignatedPalle wmsDesignatedPalle){ diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml index c5088b303..5e69ab7d2 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml @@ -281,6 +281,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update ods_procure_out_order set User_Defined10 = #{userDefined10}, + User_Defined9 = #{userDefined9}, User_Defined11 = #{userDefined11} where ID = #{ID}