Merge remote-tracking branch 'origin/master'

master
Yangwl 2 years ago
commit cf0d987365

@ -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.<clinit>(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.<clinit>(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

@ -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 不存在
<RfcGetException
Error: >Tue Dec 05 10:01:14,955< >RfcGetException rc (7) message: 数值范围对象 ZMESPROID 不存在
<RfcGetException
**** Error file opened at 20231208 164650 China Standard Time Rel 3.0.8 (2011-11-28) [721.619]
Error: >Fri Dec 08 16:46:50,007< >RfcGetException rc (7) message: ##.#####,####
<RfcGetException
Error: >Fri Dec 08 16:49:21,354< >RfcGetException rc (7) message: ##.#####,####
<RfcGetException
**** Error file opened at 20231208 165102 China Standard Time Rel 3.0.8 (2011-11-28) [721.619]
Error: >Fri Dec 08 16:51:02,041< >RfcGetException rc (7) message: ##.#####,####
<RfcGetException
**** Error file opened at 20231211 151721 China Standard Time Rel 3.0.8 (2011-11-28) [721.619]
Error: >Mon Dec 11 15:17:21,694< >RfcGetException rc (7) message: ##.#####,####
<RfcGetException
**** Error file opened at 20231211 160016 China Standard Time Rel 3.0.8 (2011-11-28) [721.619]
Error: [1] >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 .
<RfcGetException
Error: >Mon Dec 11 17:30:08,292< >RfcGetException rc (7) message: Syntax error in program SAPLZMES .
<RfcGetException
Error: >Mon Dec 11 17:30:54,764< >RfcGetException rc (7) message: Syntax error in program SAPLZMES .
<RfcGetException
**** Error file opened at 20231211 173328 China Standard Time Rel 3.0.8 (2011-11-28) [721.619]
Error: >Mon Dec 11 17:33:28,521< >RfcGetException rc (7) message: Syntax error in program SAPLZMES .
<RfcGetException
Error: >Mon Dec 11 17:35:37,983< >RfcGetException rc (7) message: Syntax error in program SAPLZMES .
<RfcGetException
**** Error file opened at 20231211 173748 China Standard Time Rel 3.0.8 (2011-11-28) [721.619]
Error: >Mon Dec 11 17:37:48,395< >RfcGetException rc (7) message: Syntax error in program SAPLZMES .
<RfcGetException
**** Error file opened at 20231211 182025 China Standard Time Rel 3.0.8 (2011-11-28) [721.619]
Error: >Mon Dec 11 18:20:25,371< >RfcGetException rc (7) message: Syntax error in program SAPLZMES .
<RfcGetException
Error: >Mon Dec 11 18:20:41,130< >RfcGetException rc (7) message: Syntax error in program SAPLZMES .
<RfcGetException
Error: >Mon Dec 11 18:21:52,709< >RfcGetException rc (7) message: Syntax error in program SAPLZMES .
<RfcGetException
**** Error file opened at 20231213 172552 China Standard Time Rel 3.0.8 (2011-11-28) [721.619]
Info: >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.<clinit>(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.<clinit>(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

@ -30,4 +30,7 @@ public interface RemoteDeviceService {
@PostMapping("/deviceTask/createEquipmentOperationTask")
public R createEquipmentOperationTask();
@PostMapping("/deviceTask/equipmentBKTask")
public R equipmentBKTask();
}

@ -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);
}

@ -85,10 +85,10 @@ public interface RemoteSapService {
public R sapProductWarehousing(@RequestBody(required = false) List<Map<String, Object>> mapList);
/**获取采购订单*/
@PostMapping("/sapPurchaseOrderSync")
@PostMapping("/sap/sapPurchaseOrderSync")
public R sapPurchaseOrderSync(@RequestBody SapPurchaseOrderQuery sapPurchaseOrderQuery);
/**采购订单收货过账*/
@PostMapping("/sapPOrderGoodsReceipt")
@PostMapping("/sap/sapPOrderGoodsReceipt")
public R sapPOrderGoodsReceipt(@RequestBody(required = false) List<Map<String, Object>> mapList);
}

@ -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;
}

@ -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<QcCheckTaskDetailDTO> 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<QcCheckTaskDetailDTO> getQcCheckTaskDetails() {
return qcCheckTaskDetails;
}
public void setQcCheckTaskDetails(List<QcCheckTaskDetailDTO> 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();
}
}

@ -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;
}

@ -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)

@ -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<String> 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;
}

@ -42,6 +42,11 @@ public class RemoteDeviceFallbackFactory implements FallbackFactory<RemoteDevice
public R createEquipmentOperationTask() {
return R.fail("设备运行记录生成失败:" + throwable.getMessage());
}
@Override
public R equipmentBKTask() {
return R.fail("设备运行记录数据库备份失败"+throwable.getMessage());
}
};
}
}

@ -0,0 +1,44 @@
package com.op.system.api.factory;
import com.op.common.core.domain.R;
import com.op.system.api.RemoteDeviceService;
import com.op.system.api.RemoteQualityService;
import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO;
import com.op.system.api.domain.quality.QcCheckTaskWarehousingDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
*
*
* @author OP
*/
@Component
public class RemoteQualityFallbackFactory implements FallbackFactory<RemoteQualityService> {
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());
}
};
}
}

@ -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

@ -48,4 +48,6 @@ public class ServiceNameConstants {
* serviceid
*/
public static final String DEVICE_SERVICE = "op-device";
/**质量模块**/
public static final String QMS_SERVICE = "op-quality";
}

@ -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("设备运行记录数据库备份失败");
}
}

@ -66,4 +66,7 @@ public interface DeviceInterfaceMapper {
* @return
*/
List<Map<String, Integer>> selectEquipmentFaultNumForMonth(String groupCode);
// 通过设备编码获取设备运行记录
Map<String, Double> selectSumEquipmentOperation(String equipmentCode);
}

@ -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);
}

@ -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);
}

@ -19,4 +19,6 @@ public interface IDeviceTaskService {
AjaxResult createMaintenancePlanTask();
AjaxResult createEquipmentOperationTask();
AjaxResult equipmentBKTask();
}

@ -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<IEquipmentVO> 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<EquOperationRecord> 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<IEquipmentVO> 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<IEquipmentVO> 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);
}

@ -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());

@ -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<List<Map<String, String>>> dateSources0 = remoteUserService.getPoolNameList(sysUser);
List<Map<String, String>> dateSources = dateSources0.getData();
ExecutorService executorService = new ThreadPoolExecutor(
dateSources.size(),
dateSources.size(),
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
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<EquOperation> 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;// 批次数量

@ -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(",");

@ -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);
}

@ -21,13 +21,22 @@
</select>
<select id="selectEquipmentList" resultType="com.op.device.domain.vo.IEquipmentVO">
select be.equipment_code AS 'equipmentCode', be.equipment_name AS 'equipmentName',be.equipment_status AS 'equipmentStatus'
select be.equipment_code AS 'equipmentCode', be.equipment_name AS 'equipmentName',be.equipment_status AS 'equipmentStatus', (SELECT ROUND(
SUM(CAST(fault_time AS FLOAT)) /
SUM(CAST(actual_operation_time AS FLOAT)),
2)
FROM equ_operation
WHERE equipment_code = be.equipment_code) AS 'failureRate', (
SELECT ROUND(SUM(mrw.quantity_feedback) / SUM(mrw.quantity), 2)
FROM mes_report_work mrw
WHERE mrw.del_flag = '0'
AND mrw.status = 'PREPARE'
AND mrw.machine_code = be.equipment_code
AND mrw.feedback_time >= DATEADD(MONTH, -1, GETDATE())
) AS 'utilizationRatio'
from base_equipment be
where be.equipment_code in (select wo.equipment_code
from equ_repair_work_order wo
where wo.del_flag = '0'
and wo.work_status = '1'
GROUP BY wo.equipment_code)
where be.del_flag = '0'
and be.equipment_category = '0'
</select>
<select id="selectRepairEquipmentList" resultType="com.op.device.domain.vo.IEquipmentVO">
@ -78,10 +87,19 @@
<!--完好设备占比-->
<select id="getEquipmentIntactRate" parameterType="EquOperation" resultType="com.op.device.domain.EquOperation">
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'
</select>
@ -105,4 +123,12 @@
ORDER BY MONTH (eo.create_time)
</select>
<select id="selectSumEquipmentOperation" resultType="java.util.Map">
SELECT
SUM(CAST(actual_operation_time AS FLOAT)) AS actualOperationTime,
SUM(CAST(fault_time AS FLOAT)) AS faultTime
FROM equ_operation
WHERE equipment_code = #{equipmentCode};
</select>
</mapper>

@ -89,6 +89,7 @@
<if test="createTimeStart != null "> and CONVERT(date,create_time) >= #{createTimeStart}</if>
<if test="createTimeEnd != null "> and #{createTimeEnd} >= CONVERT(date,create_time)</if>
</where>
order by CAST(create_time AS DATE) desc,group_line
</select>
<select id="selectEquOperationById" parameterType="String" resultMap="EquOperationResult">
@ -119,6 +120,14 @@
where CONVERT(date, create_time) = CONVERT(date, GETDATE())
</select>
<select id="checkBackupOperation" resultMap="EquOperationResult">
select top 1 id from equ_operation_backup where YEAR(create_time) = YEAR(GETDATE())-2
</select>
<select id="getBackupOperationNum" resultType="java.lang.Integer">
select count(id) from equ_operation where YEAR(create_time) = YEAR(GETDATE())-2
</select>
<insert id="insertEquOperation" parameterType="EquOperation">
insert into equ_operation
<trim prefix="(" suffix=")" suffixOverrides=",">
@ -188,6 +197,15 @@
</foreach>
</insert>
<insert id="backupOperation">
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
</insert>
<update id="updateEquOperation" parameterType="EquOperation">
update equ_operation
<trim prefix="SET" suffixOverrides=",">
@ -230,4 +248,12 @@
#{id}
</foreach>
</delete>
<delete id="deleteOperation">
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)
</delete>
</mapper>

@ -207,4 +207,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where work_code = #{orderCode} and del_flag = '0'
</select>
<select id="getSparePartsCost" resultType="java.math.BigDecimal">
select SUM(a.spare_quantity * w.unit_price)
from equ_spare_apply a
left join wms_ods_mate_storage_news_attached w on a.spare_code = w.primary_code
where a.work_code = #{orderCode}
</select>
</mapper>

@ -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日150执行 **/
public void equipmentBKTask(){
logger.info("++设备运行记录+数据库备份的数据+开始++equipmentBkTask+++++");
remoteDeviceService.equipmentBKTask();
}
/************质量管理系统定时任务开始*****************/
//过程巡检每15分钟执行一次
public void createProduceXJTask(){
logger.info("++质量管理系统+过程巡检+开始++createProduceXJTask+++++");
remoteQualityService.createProduceXJTask();
}
/************质量管理系统定时任务结束*****************/
}

@ -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<MesBoard> getTechnologyBoard(@RequestBody MesBoard mesBoard) {
return mesInterfaceService.getTechnologyBoard(mesBoard);
}
}

@ -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<BaseFileData> 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<BaseFileData> getFiles() {
return files;
}
public void setFiles(List<BaseFileData> 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;
}
}

@ -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;

@ -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<Map<String, String>> selectdryingRoomListInfo();
void deleteDateByTableName0(@Param("table")String table,@Param("ymdhms")String ymdhms);
List<MesBoard> getTechnologyBoard(MesBoard mesBoard);
List<BaseFileData> getTechnologyFiles(MesBoard dto);
}

@ -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<MesBoard> getTechnologyBoard(MesBoard mesBoard);
}

@ -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();
}

@ -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<MesBoard> getTechnologyBoard(MesBoard mesBoard) {
DynamicDataSourceContextHolder.push(mesBoard.getFactoryCode());
List<MesBoard> dtos= mesMapper.getTechnologyBoard(mesBoard);
for(MesBoard dto:dtos){
//取附件
List<BaseFileData> files = mesMapper.getTechnologyFiles(dto);
dto.setFiles(files);
}
return dtos;
}
}

@ -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())

@ -205,4 +205,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
delete from ${table} where #{ymdhms} > CONVERT(varchar(30),creter_time, 120)
</delete>
<select id="getTechnologyBoard" resultType="com.op.mes.domain.MesBoard">
select pow.workorder_code workorderCode,
pow.workorder_code_sap workorderCodeSap,
pow.workorder_name workorderName,
pow.product_code productCode,
pow.product_name productName,
pr.route_code routeCode,
pr.route_id routeId,
equ.equipment_name equipmentName,
equ.workshop_code workshopCode,
equ.workshop_name workshopName
from pro_order_workorder pow
left join pro_route pr on pow.route_code = pr.route_code
left join base_equipment equ on pow.workorder_name = equ.equipment_code
where pow.parent_order = '0'
and pow.product_date = CONVERT(varchar(10),GETDATE(), 120)
and pow.del_flag='0'
</select>
<select id="getTechnologyFiles" resultType="com.op.common.core.domain.BaseFileData">
select file_name fileName,
file_address fileAddress
from base_file
where source_id = #{routeId}
</select>
</mapper>

@ -192,23 +192,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="getProductionList" resultType="com.op.mes.domain.MesReportProduction">
select sf2.factory_code factoryCode,
sf2.factory_name factoryName,
sf1.factory_code carCode,
sf1.factory_name carName,
sf.factory_code machineCode,
sf.factory_name machineName,
mrw.product_code productCode,
mrw.product_name productName,
mrw.quantity,
mrw.quantity_feedback quantityFeedback,
mrw.spec productSpc,
mrw.unit
sf2.factory_name factoryName,
sf1.factory_code carCode,
sf1.factory_name carName,
sf.equipment_code machineCode,
sf.equipment_name machineName,
mrw.product_code productCode,
mrw.product_name productName,
mrw.quantity,
mrw.quantity_feedback quantityFeedback,
mrw.spec productSpc,
mrw.unit
from mes_report_work mrw
left join sys_factory sf on sf.factory_code = mrw.machine_code <!--线体-->
left join sys_factory sf1 on sf.parent_id = sf1.factory_id <!--车间-->
left join sys_factory sf2 on sf1.parent_id = sf2.factory_id <!--工厂-->
where
1=1
left join base_equipment sf on sf.equipment_code = mrw.machine_code <!---线体-->
left join sys_factory sf1 on sf.workshop_code = sf1.factory_code <!--车间-->
left join sys_factory sf2 on sf1.parent_id = sf2.factory_id <!--工厂-->
where mrw.parent_order = '0' and mrw.del_flag = '0'
<if test="machineName != null and machineName != ''">and sf.factory_name like concat('%', #{machineName}, '%')</if>
<if test="carName != null and carName != ''">and sf1.factory_name like concat('%', #{carName}, '%')</if>
<if test="factoryName != null and factoryName != ''">and sf2.factory_name like concat('%', #{factoryName}, '%')</if>
@ -265,12 +264,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
bpa.man_standar manStandar,
mrw.use_man useMan,
mrw.work_time workTime
from pro_order_workorder ow
left join mes_report_work mrw on ow.workorder_code = mrw.workorder_code
from mes_report_work mrw
left join pro_order_workorder ow on ow.workorder_code = mrw.workorder_code
left join base_team_t tm on mrw.team_code = tm.Team_Code
left join base_product_attached bpa on bpa.product_code = mrw.product_code
where CONVERT(varchar(100),ow.product_date, 23) = CONVERT(varchar(100), #{productDateStr}, 23)
and mrw.work_center = #{workCenter}
where CONVERT(varchar(10),ow.product_date, 23) = CONVERT(varchar(10), #{productDateStr}, 23)
and mrw.work_center = #{workCenter} and mrw.parent_order != '0'
order by ow.workorder_code
</select>
<select id="getTitleName" resultType="java.lang.String">
@ -436,8 +435,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from pro_order_workorder pow
left join base_shifts_t s on pow.shift_id = s.Shift_Id
left join pro_order_workorder pows on pows.parent_order = pow.workorder_code
left join mes_report_work mrw on mrw.workorder_code = pow.workorder_code
where pow.del_flag = '0' and pow.status = 'w2' and pow.parent_order ='0'
and mrw.upload_status != '1'
<if test="workorderCode != null and workorderCode != ''">
and pow.workorder_code like concat('%', #{workorderCode}, '%')
</if>

@ -76,6 +76,8 @@ public interface OpenMapper {
public int addBatch(@Param("list") List<QcCheckTaskDetailDTO> items);
QcUserMaterialDTO getUserByMaterial(String materialCode);
List<QcUserMaterialDTO> getUserByMaterial(String materialCode);
public int addCheckUsers(@Param("list") List<QcUserMaterialDTO> users);
}

@ -302,7 +302,7 @@ public class OpenServiceImpl implements OpenService {
Date nowDate= DateUtils.getNowDate();
//获取当前所选工厂
String factoryCode = qcCheckTaskProduce.getFactoryCode();
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskProduce.setCheckNo(bpDD+liushuiStr);
/**取检测项**/
@ -311,14 +311,30 @@ public class OpenServiceImpl implements OpenService {
qctp.setMaterialCode(qcCheckTaskProduce.getMaterialCode());//特性
/**qc_user_material取默认检查人**/
QcUserMaterialDTO qcUserMaterialDTO = openMapper.getUserByMaterial(qcCheckTaskProduce.getMaterialCode());
if(qcUserMaterialDTO == null){
qcCheckTaskProduce.setCheckManCode("mobile");
qcCheckTaskProduce.setCheckManName("手持测试用户");
List<QcUserMaterialDTO> users = openMapper.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{
qcCheckTaskProduce.setCheckManCode(qcUserMaterialDTO.getUserCode());
qcCheckTaskProduce.setCheckManName(qcUserMaterialDTO.getUserName());
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=openMapper.addCheckUsers(users);
logger.info("检查人新增"+m+"成功");
/**qc_check_type_project**/
List<QcCheckTaskDetailDTO> items = openMapper.getTPByTypeMaterial(qctp);
@ -338,7 +354,7 @@ public class OpenServiceImpl implements OpenService {
}
/**qc_check_task**/
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskProduce.setRecordId(beLongId);
qcCheckTaskProduce.setFactoryCode(factoryCode);
qcCheckTaskProduce.setCreateTime(nowDate);

@ -196,10 +196,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
order by qctp.sort
</select>
<select id="getUserByMaterial" resultType="com.op.system.api.domain.quality.QcUserMaterialDTO">
select top 1 user_code userCode,
select user_code userCode,
user_name userName
from qc_user_material where material_code = #{materialCode}
order by create_time desc
</select>
<insert id="insertEquRepairOrder" parameterType="DeviceRepairOrder">
@ -358,5 +357,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
)
</foreach>
</insert>
<insert id="addCheckUsers">
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
<foreach item="item" index="index" collection="list" separator=",">
(
#{item.id},#{item.belongTo},#{item.checkNo},
#{item.userCode},#{item.userName},
#{item.createBy},#{item.createTime},#{item.factoryCode}
)
</foreach>
</insert>
</mapper>

@ -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<StringBuilder> batchNumList;
private List<String> 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<String> getBatchInfo() {
return batchInfo;
}

@ -166,5 +166,6 @@ public interface ProOrderWorkorderMapper {
int updateWhiteWorkOrder(ProOrderWorkorder whiteOrder);
ProOrderWorkorder getPWorkOrder(ProOrderWorkorder whiteOrder);
}

@ -38,6 +38,11 @@
<result property="endFlag" column="end_flag" />
<result property="carNum" column="car_num" />
<result property="sortNo" column="sort_no" />
<result property="workorderCodeSap" column="workorder_code_sap" />
<result property="pproductCode" column="pproductCode" />
<result property="pproductName" column="pproductName" />
<result property="pworkorderCodeSap" column="pworkorderCodeSap" />
</resultMap>
<sql id="selectProOrderWorkorderVo">
@ -49,37 +54,33 @@
</sql>
<select id="selectProOrderWorkorderList" parameterType="ProOrderWorkorder" resultMap="ProOrderWorkorderResult">
<include refid="selectProOrderWorkorderVo"/>
select pow.workorder_id, pow.workorder_code, pow.workorder_name, pow.order_id, pow.order_code,
pow.product_code, pow.product_name,pow.product_spc, pow.unit, pow.quantity_split,
pow.route_code, pow.prod_line_code, pow.product_date,
pow.shift_id, pow.parent_order,pow.status, pow.prod_type,pow.factory_code,
pow.end_flag,pow.car_num,pow.sort_no,
pow.workorder_code_sap,
ppow.product_code pproductCode,ppow.product_name pproductName,ppow.workorder_code_sap pworkorderCodeSap
from pro_order_workorder pow
left join pro_order_workorder ppow on pow.parent_order = ppow.workorder_code
<where>
<if test="workorderCode != null and workorderCode != ''"> and workorder_code like concat('%', #{workorderCode}, '%')</if>
<if test="workorderName != null and workorderName != ''"> and workorder_name like concat('%', #{workorderName}, '%')</if>
<if test="orderId != null and orderId != ''"> and order_id = #{orderId}</if>
<if test="orderCode != null and orderCode != ''"> and order_code like concat('%', #{orderCode}, '%')</if>
<if test="productId != null and productId != ''"> and product_id = #{productId}</if>
<if test="productCode != null and productCode != ''"> and product_code like concat('%', #{productCode}, '%')</if>
<if test="productName != null and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
<if test="productSpc != null and productSpc != ''"> and product_spc = #{productSpc}</if>
<if test="unit != null and unit != ''"> and unit = #{unit}</if>
<if test="quantityProduced != null "> and quantity_produced = #{quantityProduced}</if>
<if test="quantitySplit != null "> and quantity_split = #{quantitySplit}</if>
<if test="routeCode != null and routeCode != ''"> and route_code = #{routeCode}</if>
<if test="prodLineCode != null and prodLineCode != ''"> and prod_line_code = #{prodLineCode}</if>
<if test="productDate != null "> and product_date = #{productDate}</if>
<if test="shiftId != null and shiftId != ''"> and shift_id = #{shiftId}</if>
<if test="parentOrder != null and parentOrder != ''"> and parent_order = #{parentOrder}</if>
<if test="ancestors != null and ancestors != ''"> and ancestors = #{ancestors}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
<if test="statusArray != null and statusArray != ''"> and status in (${statusArray})</if>
<if test="attr1 != null and attr1 != ''"> and attr1 = #{attr1}</if>
<if test="attr2 != null and attr2 != ''"> and attr2 = #{attr2}</if>
<if test="attr3 != null and attr3 != ''"> and attr3 = #{attr3}</if>
<if test="attr4 != null and attr4 != ''"> and attr4 = #{attr4}</if>
<if test="prodType != null and prodType != ''"> and prod_type = #{prodType}</if>
<if test="factoryCode != null and factoryCode != ''"> and factory_code = #{factoryCode}</if>
<if test="endFlag != null and endFlag != ''"> and end_flag = #{endFlag}</if>
<if test="productDateStart != null "> and CONVERT(varchar(10),product_date, 120) >= '${productDateStart}'</if>
<if test="productDateEnd != null "> and '${productDateEnd}%' >= CONVERT(varchar(10),product_date, 120)</if>
and del_flag = '0'
<if test="workorderCode != null and workorderCode != ''"> and pow.workorder_code like concat('%', #{workorderCode}, '%')</if>
<if test="workorderName != null and workorderName != ''"> and pow.workorder_name like concat('%', #{workorderName}, '%')</if>
<if test="orderId != null and orderId != ''"> and pow.order_id = #{orderId}</if>
<if test="orderCode != null and orderCode != ''"> and pow.order_code like concat('%', #{orderCode}, '%')</if>
<if test="productCode != null and productCode != ''"> and pow.product_code like concat('%', #{productCode}, '%')</if>
<if test="productName != null and productName != ''"> and pow.product_name like concat('%', #{productName}, '%')</if>
<if test="productDate != null "> and pow.product_date = #{productDate}</if>
<if test="shiftId != null and shiftId != ''"> and pow.shift_id = #{shiftId}</if>
<if test="parentOrder != null and parentOrder != ''"> and pow.parent_order = #{parentOrder}</if>
<if test="status != null and status != ''"> and pow.status = #{status}</if>
<if test="statusArray != null and statusArray != ''"> and pow.status in (${statusArray})</if>
<if test="prodType != null and prodType != ''"> and pow.prod_type = #{prodType}</if>
<if test="factoryCode != null and factoryCode != ''"> and pow.factory_code = #{factoryCode}</if>
<if test="endFlag != null and endFlag != ''"> and pow.end_flag = #{endFlag}</if>
<if test="productDateStart != null "> and CONVERT(varchar(10),pow.product_date, 120) >= '${productDateStart}'</if>
<if test="productDateEnd != null "> and '${productDateEnd}' >= CONVERT(varchar(10),pow.product_date, 120)</if>
and pow.del_flag = '0' and ppow.del_flag = '0'
</where>
</select>

@ -83,6 +83,11 @@
<artifactId>op-common-swagger</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.6.10</version>
</dependency>
</dependencies>
<build>

@ -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<QcCheckTaskIncome> list = qcCheckTaskIncomeService.getWorkOrder(qcCheckTaskIncome);
return getDataTable(list);
}
/**获取入库工单列表**/
@GetMapping("/getProductWorkOrder")
public TableDataInfo getProductWorkOrder(QcCheckTaskIncome qcCheckTaskIncome) {
startPage();
List<QcCheckTaskIncome> list = qcCheckTaskIncomeService.getProductWorkOrder(qcCheckTaskIncome);
return getDataTable(list);
}
@PutMapping("/getBatchList")
public List<QcCheckTaskIncome> getBatchList(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) {
return qcCheckTaskIncomeService.getBatchList(qcCheckTaskIncome);

@ -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();
}
}

@ -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("添加失败:请检查物料的关联检测项");
}
/**
*
*/

@ -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<QcInterface> getMonthOfYearContrast(@RequestBody QcInterface qcInterface) {
return qcInterfaceService.getMonthOfYearContrast(qcInterface);
}
@GetMapping("/getLineQcData")
public QcLineChartDto getLineQcData(QcInterface qcInterface) {
return qcInterfaceService.getLineQcData(qcInterface);
}
}

@ -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<QcProCheck> list(QcProCheck qcProCheck) {
List<QcProCheck> qcProChecks = qcProCheckService.selectQcCheckList(qcProCheck);
return qcProCheckService.selectQcCheckList(qcProCheck);
}
@Log(title = "白坯合格统计", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, QcProCheck qcProCheck) {
List<QcProCheck> list = qcProCheckService.selectQcCheckList(qcProCheck);
ExcelUtil<QcProCheck> util = new ExcelUtil<QcProCheck>(QcProCheck.class);
util.exportExcel(response, list, "白坯合格统计数据");
}
}

@ -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);
}

@ -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<WmsRawOrderIn> 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<WmsRawOrderIn> list = wmsRawOrderInService.selectWmsRawOrderInList(wmsRawOrderIn);
ExcelUtil<WmsRawOrderIn> util = new ExcelUtil<WmsRawOrderIn>(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));
}
}

@ -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();
}
}

@ -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<QcCheckTaskDetail> qcCheckTaskDetails;
private List<QcCheckTaskDefect> 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<QcCheckTaskDefect> getDefects() {
return defects;
}
public void setDefects(List<QcCheckTaskDefect> defects) {
this.defects = defects;
}
public BigDecimal getSampleQuality() {
return sampleQuality;
}

@ -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;
}

@ -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;
/**
* 10
*/
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();
}
}

@ -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;

@ -47,6 +47,33 @@ public class QcInterface extends BaseEntity {
private List<String> 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;

@ -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<String> seriesNames;
private List<String> xAxisDatas;
private List<QcLineChartSeriesDto> seriesDatas;
public List<String> getSeriesNames() {
return seriesNames;
}
public void setSeriesNames(List<String> seriesNames) {
this.seriesNames = seriesNames;
}
public List<String> getxAxisDatas() {
return xAxisDatas;
}
public void setxAxisDatas(List<String> xAxisDatas) {
this.xAxisDatas = xAxisDatas;
}
public List<QcLineChartSeriesDto> getSeriesDatas() {
return seriesDatas;
}
public void setSeriesDatas(List<QcLineChartSeriesDto> seriesDatas) {
this.seriesDatas = seriesDatas;
}
}

@ -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<String> 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<String> getData() {
return data;
}
public void setData(List<String> data) {
this.data = data;
}
}

@ -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<BaseFile> 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<Date> 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<Date> getCreateTimeArray() {
return createTimeArray;
}
public void setCreateTimeArray(List<Date> 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;

@ -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();
}
}

@ -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<QcCheckTaskIncome> getBatchList(QcCheckTaskIncome qcCheckTaskIncome);
String getTypeCode(String checkType);
List<String> selectQcCheckTaskCheckNoByRecordIds(String[] recordIds);
List<QcUserMaterialDTO> getUserByMaterial(String materialCode);
int addCheckUsers(@Param("list") List<QcUserMaterialDTO> users);
int addQcCheckTaskDefects(@Param("list") List<QcCheckTaskDefect> defects);
List<QcCheckTaskDefect> getCkeckDefectList(QcCheckTaskDetail qcCheckTaskDetail);
}

@ -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<QcCheckType> getCheckTypes(QcCheckType qcCheckType);
List<QcCheckTaskProduce> getOrderWorks(ProOrderWorkorderDTO qoWork);
List<String> selectQcCheckTaskCheckNoByRecordIds(String[] recordIds);
}

@ -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<QcCheckTaskUser> 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<QcCheckTaskUser> qcCheckTaskUserList);
public int deleteQcCheckTaskUserByBelongTo(String belongTo);
public QcCheckTaskUser selectQcCheckTaskUserByBelongTo(String belongTo);
public int deleteQcCheckTaskUserByBelongTos(String[] belongToArray);
}

@ -79,5 +79,7 @@ public interface QcCheckUnqualifiedMapper {
List<QcCheckTaskIncome> getWorkOrder(QcCheckTaskIncome qcCheckTaskIncome);
int updateWorkOrderStatus(QcCheckTaskIncome qcCheckTaskIncome);
int updateWorkOrderBatchStatus(QcCheckTaskIncome qcCheckTaskIncome);
List<QcCheckTaskIncome> getProductWorkOrder(QcCheckTaskIncome qcCheckTaskIncome);
}

@ -41,4 +41,8 @@ public interface QcInterfaceMapper {
Map<String, QcInterface> getMothNoOkNum(QcInterface qcInterface);
List<QcCheckTaskDetail> getReasons(QcInterface dto);
List<String> getLineChartsNames(QcInterface qcInterface);
@MapKey("nameDate")
Map<String, QcInterface> getLineChartsDatas(QcInterface qcInterface);
}

@ -37,4 +37,6 @@ public interface QcProCheckMapper {
List<QcProCheck> getDictList(QcProCheck qcProCheck);
List<QcCheckTaskIncome> getCheckTaskList(QcCheckTaskIncome qcCheckTaskIncome);
List<QcProCheck> getQcProCheckList(QcProCheck qcProCheck);
}

@ -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<WmsRawOrderIn> 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);
}

@ -85,4 +85,6 @@ public interface IQcCheckTaskIncomeService {
List<QcCheckTaskIncome> getWorkOrder(QcCheckTaskIncome qcCheckTaskIncome);
List<QcCheckTaskIncome> getBatchList(QcCheckTaskIncome qcCheckTaskIncome);
List<QcCheckTaskIncome> getProductWorkOrder(QcCheckTaskIncome qcCheckTaskIncome);
}

@ -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<QcCheckType> getCheckTypes(QcCheckType qcCheckType);
int changeProduceStatus(QcCheckTaskProduce qcCheckTaskProduce);
AjaxResult createProduceXJTask();
}

@ -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<QcCheckTaskUser> selectQcCheckTaskUserList(QcCheckTaskUser qcCheckTaskUser);
/**
* --
*
* @param qcCheckTaskUser --
* @return
*/
public int insertQcCheckTaskUser(QcCheckTaskUser qcCheckTaskUser);
/**
* --
*
* @param qcCheckTaskUser --
* @return
*/
public int updateQcCheckTaskUser(List<QcCheckTaskUser> 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<QcCheckTaskUser> qcCheckTaskUserList);
/**
*
*/
public QcCheckTaskUser selectQcCheckTaskUserByBelongTo(String belongTo);
}

@ -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

@ -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<QcInterface> getMonthOfYearContrast(QcInterface qcInterface);
QcLineChartDto getLineQcData(QcInterface qcInterface);
}

@ -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<WmsRawOrderIn> 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);
}

@ -34,7 +34,9 @@ public interface QcProCheckService {
List<QcCheckTaskIncome> getCheckTaskList(QcCheckTaskIncome qcCheckTaskIncome);
List<QcCheckTaskDetail > getCheckTaskDetailList(QcCheckTaskDetail qcCheckTaskDetail);
QcCheckTaskIncome getCheckTaskDetailList(QcCheckTaskDetail qcCheckTaskDetail);
List<SysDictData> getQcUnitList(SysDictData sysDictData);
List<QcProCheck> selectQcCheckList(QcProCheck qcProCheck);
}

@ -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<QcCheckTaskUser> 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<QcUserMaterialDTO> 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<QcCheckTaskUser> 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<QcCheckTaskIncome> getProductWorkOrder(QcCheckTaskIncome qcCheckTaskIncome) {
List<QcCheckTaskIncome> 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<QcCheckTaskDetail> 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<QcCheckTaskDefect> 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())){
}

@ -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<QcCheckTaskProduce> selectQcCheckTaskProduceList(QcCheckTaskProduce qcCheckTaskProduce) {
qcCheckTaskProduce.setDelFlag("0");
qcCheckTaskProduce.setTypeCode("produce");
return qcCheckTaskProduceMapper.selectQcCheckTaskProduceList(qcCheckTaskProduce);
}
/**
*
*
* @param qcCheckTaskProduce
* @return
*/
@Override
@DS("#header.poolName")
public List<QcCheckTaskProduce> 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<QcCheckTaskUser> 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<QcUserMaterialDTO> 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<QcCheckTaskUser> 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<List<Map<String, String>>> dateSources0 = remoteUserService.getPoolNameList(sysUser);
List<Map<String, String>> dateSources = dateSources0.getData();
ExecutorService executorService = new ThreadPoolExecutor(
dateSources.size(),
dateSources.size(),
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
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<QcCheckTaskProduce> 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 + "++++过程检验巡检结束++++++++++");
}
}

@ -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<QcCheckTaskUser> 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<QcCheckTaskUser> 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<QcCheckTaskUser> 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);
}
}

@ -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<QcCheckTaskUser> 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<QcUserMaterialDTO> 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<QcCheckTaskUser> 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);
}

@ -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<String> seriesNames = qcInterfaceMapper.getLineChartsNames(qcInterface);
lineChartDto.setSeriesNames(seriesNames);
//日期名称数组
List<String> xAxisDatas = getDays(startTime,endTime);
lineChartDto.setxAxisDatas(xAxisDatas);
Map<String,QcInterface> productdatas = qcInterfaceMapper.getLineChartsDatas(qcInterface);
//值
List<QcLineChartSeriesDto> seriesDatas = new ArrayList<>();
QcLineChartSeriesDto lineChartSeriesDto = null;
for(String productName:seriesNames){
lineChartSeriesDto = new QcLineChartSeriesDto();
lineChartSeriesDto.setName(productName);
lineChartSeriesDto.setType("line");
List<String> 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<String> getDays(String startTime,String endTime) {

@ -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<Boolean> 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<QcProCheck> 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<QcProCheck> 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<QcCheckTaskDetail> getCheckTaskDetailList(QcCheckTaskDetail qcCheckTaskDetail) {
public QcCheckTaskIncome getCheckTaskDetailList(QcCheckTaskDetail qcCheckTaskDetail) {
DynamicDataSourceContextHolder.push(qcCheckTaskDetail.getFactoryCode());
return qcCheckTaskIncomeMapper.getCkeckProjectList(qcCheckTaskDetail);
QcCheckTaskIncome dto = new QcCheckTaskIncome();
List<QcCheckTaskDetail> qcCheckTaskDetails =qcCheckTaskIncomeMapper.getCkeckProjectList(qcCheckTaskDetail);
dto.setQcCheckTaskDetails(qcCheckTaskDetails);
List<QcCheckTaskDefect> 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<QcProCheck> 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);
}
}

@ -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<WmsRawOrderIn> 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);
}
}

@ -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
# 配置文件格式

@ -193,6 +193,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="checkType != null">check_type,</if>
<if test="typeCode != null">type_code,</if>
<if test="sampleQuality != null">sample_quality,</if>
<if test="orderType != null">order_type,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="recordId != null">#{recordId},</if>
@ -227,9 +228,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="checkType != null">#{checkType},</if>
<if test="typeCode != null">#{typeCode},</if>
<if test="sampleQuality != null">#{sampleQuality},</if>
<if test="orderType != null">#{orderType},</if>
</trim>
</insert>
<update id="updateQcCheckTaskIncome" parameterType="QcCheckTaskIncome">
update qc_check_task
<trim prefix="SET" suffixOverrides=",">
@ -270,6 +273,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update qc_check_task
set
check_status = #{checkStatus},
check_man_code = #{updateBy},
<if test="checkTime != null">check_time = #{checkTime},</if>
<if test="sampleQuality != null">sample_quality = #{sampleQuality},</if>
<if test="noOkQuality != null">noOk_quality = #{noOkQuality},</if>
@ -304,4 +308,55 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{recordId}
</foreach>
</delete>
<select id="selectQcCheckTaskCheckNoByRecordIds" parameterType="String" resultMap="QcCheckTaskIncomeResult">
select check_no from qc_check_task where record_id in
<foreach item="recordId" collection="array" open="(" separator="," close=")">
#{recordId}
</foreach>
</select>
<select id="getUserByMaterial" resultType="com.op.system.api.domain.quality.QcUserMaterialDTO">
select user_code userCode,
user_name userName
from qc_user_material where material_code = #{materialCode}
</select>
<select id="getCkeckDefectList" resultType="com.op.quality.domain.QcCheckTaskDefect">
select
record_id recordId,
defect_code defectCode,
defect_subclass defectSubclass,
noOk_quality noOkQuality
from qc_check_task_defect
where del_flag = '0' and belong_to = #{belongTo}
</select>
<insert id="addCheckUsers">
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
<foreach item="item" index="index" collection="list" separator=",">
(
#{item.id},#{item.belongTo},#{item.checkNo},
#{item.userCode},#{item.userName},
#{item.createBy},#{item.createTime},#{item.factoryCode}
)
</foreach>
</insert>
<insert id="addQcCheckTaskDefects">
insert into qc_check_task_defect(
record_id,belong_to,
defect_code,defect_subclass,
noOk_quality,
create_by,create_time,factory_code
) values
<foreach item="item" index="index" collection="list" separator=",">
(
#{item.recordId},#{item.belongTo},
#{item.defectCode},#{item.defectSubclass},
#{item.noOkQuality},
#{item.createBy},#{item.createTime},#{item.factoryCode}
)
</foreach>
</insert>
</mapper>

@ -107,8 +107,37 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from qc_check_type
where type_code = #{typeCode} and del_flag='0'
</select>
<select id="getOrderWorks" resultType="com.op.quality.domain.QcCheckTaskProduce">
select pow.factory_code factoryCode,
powb.batch_code incomeBatchNo,
powb.qc_status,
pow.workorder_code workorderCode,
pow.product_code materialCode,
pow.product_name materialName,
pow.quantity_split quality,
pow.unit,
e.workshop_code supplierCode,
e.workshop_name supplierName,
pow.product_date incomeTime,
task.createTime,
task.order_no orderNo,
task.check_loc checkLoc
from pro_order_workorder pow
left join pro_order_workorder_batch powb on powb.workorder_id = pow.workorder_id
left join base_equipment e on e.equipment_code = pow.workorder_name
left join (
select max(create_time) createTime,income_batch_no,order_no,check_loc
from qc_check_task
where type_code = 'produce'
and CONVERT(varchar(10),income_time, 120) = CONVERT(varchar(10),GETDATE(), 120)
GROUP BY income_batch_no,order_no,check_loc
) task on task.income_batch_no = powb.batch_code
where pow.status = 'w2' and pow.parent_order = '0' and pow.del_flag ='0'
and powb.del_flag = '0' and pow.product_date >= '2023-12-22'
and task.createTime is not null
</select>
<insert id="insertQcCheckTaskProduce" parameterType="QcCheckTaskProduce">
<insert id="insertQcCheckTaskProduce" parameterType="QcCheckTaskProduce">
insert into qc_check_task
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="recordId != null">record_id,</if>
@ -146,7 +175,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="delFlag != null">del_flag,</if>
<if test="checkType != null">check_type,</if>
<if test="typeCode != null">type_code,</if>
<if test="sampleQuality != null">sample_quality,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="recordId != null">#{recordId},</if>
@ -184,7 +212,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="delFlag != null">#{delFlag},</if>
<if test="checkType != null">#{checkType},</if>
<if test="typeCode != null">#{typeCode},</if>
<if test="sampleQuality != null">#{sampleQuality},</if>
</trim>
</insert>
@ -223,7 +250,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="factoryCode != null and factoryCode != ''">factory_code = #{factoryCode},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="sampleQuality != null">sample_quality = #{sampleQuality},</if>
</trim>
where record_id = #{recordId}
</update>
@ -238,4 +264,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{recordId}
</foreach>
</delete>
<select id="selectQcCheckTaskCheckNoByRecordIds" parameterType="String" resultMap="QcCheckTaskProduceResult">
select check_no from qc_check_task where record_id in
<foreach item="recordId" collection="array" open="(" separator="," close=")">
#{recordId}
</foreach>
</select>
</mapper>

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.op.quality.mapper.QcCheckTaskUserMapper">
<resultMap type="QcCheckTaskUser" id="QcCheckTaskUserResult">
<result property="recordId" column="record_id" />
<result property="checkNo" column="check_no" />
<result property="checkManCode" column="check_man_code" />
<result property="checkManName" column="check_man_name" />
<result property="attr1" column="attr1" />
<result property="attr2" column="attr2" />
<result property="attr3" column="attr3" />
<result property="attr4" column="attr4" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="factoryCode" column="factory_code" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectQcCheckTaskUserVo">
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
</sql>
<select id="selectQcCheckTaskUserList" parameterType="QcCheckTaskUser" resultMap="QcCheckTaskUserResult">
<include refid="selectQcCheckTaskUserVo"/>
<where>
<if test="checkNo != null and checkNo != ''"> and check_no = #{checkNo}</if>
<if test="checkManCode != null and checkManCode != ''"> and check_man_code = #{checkManCode}</if>
<if test="checkManName != null and checkManName != ''"> and check_man_name like concat('%', #{checkManName}, '%')</if>
<if test="attr1 != null and attr1 != ''"> and attr1 = #{attr1}</if>
<if test="attr2 != null and attr2 != ''"> and attr2 = #{attr2}</if>
<if test="attr3 != null and attr3 != ''"> and attr3 = #{attr3}</if>
<if test="attr4 != null and attr4 != ''"> and attr4 = #{attr4}</if>
<if test="factoryCode != null and factoryCode != ''"> and factory_code = #{factoryCode}</if>
</where>
</select>
<select id="selectQcCheckTaskUserByRecordId" parameterType="String" resultMap="QcCheckTaskUserResult">
<include refid="selectQcCheckTaskUserVo"/>
where record_id = #{recordId}
</select>
<insert id="insertQcCheckTaskUser" parameterType="QcCheckTaskUser">
insert into qc_check_task_user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="recordId != null">record_id,</if>
<if test="checkNo != null">check_no,</if>
<if test="checkManCode != null">check_man_code,</if>
<if test="checkManName != null">check_man_name,</if>
<if test="attr1 != null">attr1,</if>
<if test="attr2 != null">attr2,</if>
<if test="attr3 != null">attr3,</if>
<if test="attr4 != null">attr4,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="factoryCode != null and factoryCode != ''">factory_code,</if>
<if test="delFlag != null">del_flag,</if>
<if test="belongTo != null">belong_to,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="recordId != null">#{recordId},</if>
<if test="checkNo != null">#{checkNo},</if>
<if test="checkManCode != null">#{checkManCode},</if>
<if test="checkManName != null">#{checkManName},</if>
<if test="attr1 != null">#{attr1},</if>
<if test="attr2 != null">#{attr2},</if>
<if test="attr3 != null">#{attr3},</if>
<if test="attr4 != null">#{attr4},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="factoryCode != null and factoryCode != ''">#{factoryCode},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="belongTo != null">#{belongTo},</if>
</trim>
</insert>
<update id="updateQcCheckTaskUser" parameterType="QcCheckTaskUser">
update qc_check_task_user
<trim prefix="SET" suffixOverrides=",">
<if test="checkNo != null">check_no = #{checkNo},</if>
<if test="checkManCode != null">check_man_code = #{checkManCode},</if>
<if test="checkManName != null">check_man_name = #{checkManName},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="attr3 != null">attr3 = #{attr3},</if>
<if test="attr4 != null">attr4 = #{attr4},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="factoryCode != null and factoryCode != ''">factory_code = #{factoryCode},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="belongTo != null">belong_to = #{belongTo},</if>
</trim>
where record_id = #{recordId}
</update>
<delete id="deleteQcCheckTaskUserByRecordId" parameterType="String">
delete from qc_check_task_user where record_id = #{recordId}
</delete>
<delete id="deleteQcCheckTaskUserByRecordIds" parameterType="String">
delete from qc_check_task_user where record_id in
<foreach item="recordId" collection="array" open="(" separator="," close=")">
#{recordId}
</foreach>
</delete>
<delete id="deleteQcCheckTaskUserByBelongTo" parameterType="String">
delete from qc_check_task_user where belong_to = #{belongTo}
</delete>
<insert id="insertQcCheckTaskUserList" parameterType="List">
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
<foreach collection="list" item="item" index="index" separator=",">
(
#{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}
)
</foreach>
</insert>
<select id="selectQcCheckTaskUserByBelongTo" parameterType="String" resultMap="QcCheckTaskUserResult">
select
STRING_AGG(check_man_code,',') AS 'manCodes',
STRING_AGG(check_man_name,',') AS 'manNames',
belong_to
from qc_check_task_user
where belong_to = #{belongTo}
group by belong_to
</select>
<delete id="deleteQcCheckTaskUserByBelongTos" parameterType="String">
delete from qc_check_task_user where belong_to in
<foreach item="belongTo" collection="Array" open="(" separator="," close=")">
#{belongTo}
</foreach>
</delete>
</mapper>

@ -131,6 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="typeCode != null">type_code,</if>
<if test="noOkQuality != null">noOk_quality,</if>
<if test="sampleQuality != null">sample_quality,</if>
<if test="orderType != null">order_type,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="recordId != null">#{recordId},</if>
@ -165,6 +166,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="typeCode != null">#{typeCode},</if>
<if test="noOkQuality != null">#{noOkQuality},</if>
<if test="sampleQuality != null">#{sampleQuality},</if>
<if test="orderType != null">#{orderType},</if>
</trim>
</insert>

@ -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}
</select>
<insert id="insertQcCheckType" parameterType="QcCheckType">
insert into qc_check_type

@ -118,8 +118,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="orderNo != null">and workorder_code_sap like concat like ('%',#{orderNo})</if>
order by product_date desc
</select>
<select id="getProductWorkOrder" resultType="com.op.quality.domain.QcCheckTaskIncome">
select work_order orderNo,
product_name materialName,
product_code materialCode,
batch_number incomeBatchNo,
plan_quantity quality,
status,
create_time incomeTime
from wms_product_put
where 1=1
<if test="orderNo != null">and work_order like concat like ('%',#{orderNo})</if>
order by create_time desc
</select>
<insert id="insertQcCheckUnqualified" parameterType="QcCheckUnqualified">
<insert id="insertQcCheckUnqualified" parameterType="QcCheckUnqualified">
insert into qc_check_unqualified
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
@ -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>
<update id="updateWorkOrderStatus">
update pro_order_workorder set status = #{status} where workorder_code_sap = #{orderNo}
<update id="updateWorkOrderBatchStatus">
update pro_order_workorder_batch set qc_status = #{status} where batch_code = #{incomeBatchNo}
</update>
<delete id="deleteQcCheckUnqualifiedById" parameterType="String">

@ -241,4 +241,23 @@
where belong_to = #{recordId}
and status = 'N' and del_flag='0'
</select>
<select id="getLineChartsNames" resultType="java.lang.String">
select
distinct supplier_name
from qc_check_task
where type_code = 'produce' and del_flag = '0'
and CONVERT(varchar(10),income_time, 120) >= #{productDateStart}
and #{productDateEnd} >= CONVERT(varchar(10),income_time, 120)
</select>
<select id="getLineChartsDatas" resultType="com.op.quality.domain.QcInterface">
select
sum(sample_quality) quality,
sum(noOk_quality) noOkQuality,
concat(supplier_name,CONVERT(varchar(10),income_time, 120)) nameDate
from qc_check_task
where type_code = 'produce' and del_flag = '0'
and CONVERT(varchar(10),income_time, 120) >= #{productDateStart}
and #{productDateEnd} >= CONVERT(varchar(10),income_time, 120)
group by supplier_name,CONVERT(varchar(10),income_time, 120)
</select>
</mapper>

@ -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
<where>
and qct.del_flag = '0'
<if test="checkType != null and checkType != ''"> and qct.check_type = #{checkType}</if>
<if test="checkManCode != null and checkManCode != ''"> and qct.check_man_code = #{checkManCode}</if>
<if test="checkManCode != null and checkManCode != ''"> and qctu.check_man_code = #{checkManCode}</if>
<if test="checkStatus != null and checkStatus != ''"> and qct.check_status in (${checkStatus})</if>
</where>
order by qct.create_time desc
</select>
<select id="getQcProCheckList" resultType="com.op.quality.domain.QcProCheck">
SELECT q1.machine_code AS machineCode,
MIN(q1.machine_name) AS machineName,
SUM(q2.quality) AS 'acceptanceNumber',
SUM(q3.quality) AS 'unqualifiedNumber',
SUM(q2.quality) * 100 / (SUM(q2.quality) + SUM(q3.quality)) AS 'passRate'
FROM qc_pro_check q1
LEFT JOIN
qc_pro_check q2 ON q1.machine_code = q2.machine_code AND q2.isqua = '1'
LEFT JOIN
qc_pro_check q3 ON q1.machine_code = q3.machine_code AND q3.isqua = '0'
<where>
<if test="workorderCode != null and workorderCode != ''">and q1.workorder_code like concat('%', #{workorderCode}, '%')</if>
<if test="productCode != null and productCode != ''">and q1.product_code like concat('%', #{productCode}, '%')</if>
<if test="machineCode != null and machineCode != ''">and q1.machine_code like concat('%', #{machineCode}, '%')</if>
<if test="createTimeStart != null ">and CONVERT(datetime,q1.create_time) >= #{createTimeStart}</if>
<if test="createTimeEnd != null ">and #{createTimeEnd} >= CONVERT(datetime,q1.create_time)</if>
and q1.machine_name LIKE '%烘房%'
</where>
GROUP BY q1.machine_code
</select>
</mapper>

@ -0,0 +1,307 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.op.quality.mapper.WmsRawOrderInMapper">
<resultMap type="WmsRawOrderIn" id="WmsRawOrderInResult">
<result property="rawOrderInId" column="raw_order_in_id" />
<result property="factoryCode" column="factory_code" />
<result property="whCode" column="wh_code" />
<result property="waCode" column="wa_code" />
<result property="wlCode" column="wl_code" />
<result property="orderInType" column="order_in_type" />
<result property="orderNo" column="order_no" />
<result property="dnNo" column="dn_no" />
<result property="poNo" column="po_no" />
<result property="poLine" column="po_line" />
<result property="poType" column="po_type" />
<result property="materialCode" column="material_code" />
<result property="materialDesc" column="material_desc" />
<result property="unit" column="unit" />
<result property="buyerGroup" column="buyer_group" />
<result property="supplyCode" column="supply_code" />
<result property="sapFactoryCode" column="sap_factory_code" />
<result property="sendSpot" column="send_spot" />
<result property="requestAmount" column="request_amount" />
<result property="receiptAmount" column="receipt_amount" />
<result property="shelvesAmount" column="shelves_amount" />
<result property="location" column="location" />
<result property="requestTime" column="request_time" />
<result property="qualityStatus" column="quality_status" />
<result property="orderStatus" column="order_status" />
<result property="receiptOperator" column="receipt_operator" />
<result property="receiptTime" column="receipt_time" />
<result property="shelvesOperator" column="shelves_operator" />
<result property="returnAmount" column="return_amount" />
<result property="returnName" column="return_name" />
<result property="returnTime" column="return_time" />
<result property="returnStatus" column="return_status" />
<result property="shelvesTime" column="shelves_time" />
<result property="returnMessage" column="return_message" />
<result property="accountingStatus" column="accounting_status" />
<result property="accountingTime" column="accounting_time" />
<result property="accountingMessage" column="accounting_message" />
<result property="userDefined1" column="user_defined1" />
<result property="userDefined2" column="user_defined2" />
<result property="userDefined3" column="user_defined3" />
<result property="userDefined4" column="user_defined4" />
<result property="userDefined5" column="user_defined5" />
<result property="userDefined6" column="user_defined6" />
<result property="userDefined7" column="user_defined7" />
<result property="userDefined8" column="user_defined8" />
<result property="userDefined9" column="user_defined9" />
<result property="userDefined10" column="user_defined10" />
<result property="createBy" column="create_by" />
<result property="gmtCreate" column="gmt_create" />
<result property="lastModifiedBy" column="last_modified_by" />
<result property="gmtModified" column="gmt_modified" />
<result property="activeFlag" column="active_flag" />
</resultMap>
<sql id="selectWmsRawOrderInVo">
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
</sql>
<select id="selectWmsRawOrderInList" parameterType="WmsRawOrderIn" resultMap="WmsRawOrderInResult">
<include refid="selectWmsRawOrderInVo"/>
<where>
<if test="factoryCode != null and factoryCode != ''"> and factory_code = #{factoryCode}</if>
<if test="whCode != null and whCode != ''"> and wh_code = #{whCode}</if>
<if test="waCode != null and waCode != ''"> and wa_code = #{waCode}</if>
<if test="wlCode != null and wlCode != ''"> and wl_code = #{wlCode}</if>
<if test="orderInType != null and orderInType != ''"> and order_in_type = #{orderInType}</if>
<if test="orderNo != null and orderNo != ''"> and order_no = #{orderNo}</if>
<if test="dnNo != null and dnNo != ''"> and dn_no = #{dnNo}</if>
<if test="poNo != null and poNo != ''"> and po_no = #{poNo}</if>
<if test="poLine != null and poLine != ''"> and po_line = #{poLine}</if>
<if test="poType != null and poType != ''"> and po_type = #{poType}</if>
<if test="materialCode != null and materialCode != ''"> and material_code = #{materialCode}</if>
<if test="materialDesc != null and materialDesc != ''"> and material_desc = #{materialDesc}</if>
<if test="unit != null and unit != ''"> and unit = #{unit}</if>
<if test="buyerGroup != null and buyerGroup != ''"> and buyer_group = #{buyerGroup}</if>
<if test="supplyCode != null and supplyCode != ''"> and supply_code = #{supplyCode}</if>
<if test="sapFactoryCode != null and sapFactoryCode != ''"> and sap_factory_code = #{sapFactoryCode}</if>
<if test="sendSpot != null and sendSpot != ''"> and send_spot = #{sendSpot}</if>
<if test="requestAmount != null "> and request_amount = #{requestAmount}</if>
<if test="receiptAmount != null "> and receipt_amount = #{receiptAmount}</if>
<if test="shelvesAmount != null "> and shelves_amount = #{shelvesAmount}</if>
<if test="location != null and location != ''"> and location = #{location}</if>
<if test="requestTime != null "> and request_time = #{requestTime}</if>
<if test="qualityStatus != null and qualityStatus != ''"> and quality_status = #{qualityStatus}</if>
<if test="orderStatus != null and orderStatus != ''"> and order_status = #{orderStatus}</if>
<if test="receiptOperator != null and receiptOperator != ''"> and receipt_operator = #{receiptOperator}</if>
<if test="receiptTime != null "> and receipt_time = #{receiptTime}</if>
<if test="shelvesOperator != null and shelvesOperator != ''"> and shelves_operator = #{shelvesOperator}</if>
<if test="returnAmount != null "> and return_amount = #{returnAmount}</if>
<if test="returnName != null and returnName != ''"> and return_name like concat('%', #{returnName}, '%')</if>
<if test="returnTime != null "> and return_time = #{returnTime}</if>
<if test="returnStatus != null and returnStatus != ''"> and return_status = #{returnStatus}</if>
<if test="shelvesTime != null "> and shelves_time = #{shelvesTime}</if>
<if test="returnMessage != null and returnMessage != ''"> and return_message = #{returnMessage}</if>
<if test="accountingStatus != null and accountingStatus != ''"> and accounting_status = #{accountingStatus}</if>
<if test="accountingTime != null "> and accounting_time = #{accountingTime}</if>
<if test="accountingMessage != null and accountingMessage != ''"> and accounting_message = #{accountingMessage}</if>
<if test="userDefined1 != null and userDefined1 != ''"> and user_defined1 = #{userDefined1}</if>
<if test="userDefined2 != null and userDefined2 != ''"> and user_defined2 = #{userDefined2}</if>
<if test="userDefined3 != null and userDefined3 != ''"> and user_defined3 = #{userDefined3}</if>
<if test="userDefined4 != null and userDefined4 != ''"> and user_defined4 = #{userDefined4}</if>
<if test="userDefined5 != null and userDefined5 != ''"> and user_defined5 = #{userDefined5}</if>
<if test="userDefined6 != null and userDefined6 != ''"> and user_defined6 = #{userDefined6}</if>
<if test="userDefined7 != null and userDefined7 != ''"> and user_defined7 = #{userDefined7}</if>
<if test="userDefined8 != null and userDefined8 != ''"> and user_defined8 = #{userDefined8}</if>
<if test="userDefined9 != null and userDefined9 != ''"> and user_defined9 = #{userDefined9}</if>
<if test="userDefined10 != null and userDefined10 != ''"> and user_defined10 = #{userDefined10}</if>
<if test="gmtCreate != null "> and gmt_create = #{gmtCreate}</if>
<if test="lastModifiedBy != null and lastModifiedBy != ''"> and last_modified_by = #{lastModifiedBy}</if>
<if test="gmtModified != null "> and gmt_modified = #{gmtModified}</if>
<if test="activeFlag != null and activeFlag != ''"> and active_flag = #{activeFlag}</if>
</where>
</select>
<select id="selectWmsRawOrderInByRawOrderInId" parameterType="String" resultMap="WmsRawOrderInResult">
<include refid="selectWmsRawOrderInVo"/>
where raw_order_in_id = #{rawOrderInId}
</select>
<insert id="insertWmsRawOrderIn" parameterType="WmsRawOrderIn">
insert into wms_raw_order_in
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="rawOrderInId != null">raw_order_in_id,</if>
<if test="factoryCode != null">factory_code,</if>
<if test="whCode != null">wh_code,</if>
<if test="waCode != null">wa_code,</if>
<if test="wlCode != null">wl_code,</if>
<if test="orderInType != null">order_in_type,</if>
<if test="orderNo != null">order_no,</if>
<if test="dnNo != null">dn_no,</if>
<if test="poNo != null">po_no,</if>
<if test="poLine != null">po_line,</if>
<if test="poType != null">po_type,</if>
<if test="materialCode != null">material_code,</if>
<if test="materialDesc != null">material_desc,</if>
<if test="unit != null">unit,</if>
<if test="buyerGroup != null">buyer_group,</if>
<if test="supplyCode != null">supply_code,</if>
<if test="sapFactoryCode != null">sap_factory_code,</if>
<if test="sendSpot != null">send_spot,</if>
<if test="requestAmount != null">request_amount,</if>
<if test="receiptAmount != null">receipt_amount,</if>
<if test="shelvesAmount != null">shelves_amount,</if>
<if test="location != null">location,</if>
<if test="requestTime != null">request_time,</if>
<if test="qualityStatus != null">quality_status,</if>
<if test="orderStatus != null">order_status,</if>
<if test="receiptOperator != null">receipt_operator,</if>
<if test="receiptTime != null">receipt_time,</if>
<if test="shelvesOperator != null">shelves_operator,</if>
<if test="returnAmount != null">return_amount,</if>
<if test="returnName != null">return_name,</if>
<if test="returnTime != null">return_time,</if>
<if test="returnStatus != null">return_status,</if>
<if test="shelvesTime != null">shelves_time,</if>
<if test="returnMessage != null">return_message,</if>
<if test="accountingStatus != null">accounting_status,</if>
<if test="accountingTime != null">accounting_time,</if>
<if test="accountingMessage != null">accounting_message,</if>
<if test="userDefined1 != null">user_defined1,</if>
<if test="userDefined2 != null">user_defined2,</if>
<if test="userDefined3 != null">user_defined3,</if>
<if test="userDefined4 != null">user_defined4,</if>
<if test="userDefined5 != null">user_defined5,</if>
<if test="userDefined6 != null">user_defined6,</if>
<if test="userDefined7 != null">user_defined7,</if>
<if test="userDefined8 != null">user_defined8,</if>
<if test="userDefined9 != null">user_defined9,</if>
<if test="userDefined10 != null">user_defined10,</if>
<if test="createBy != null">create_by,</if>
<if test="gmtCreate != null">gmt_create,</if>
<if test="lastModifiedBy != null">last_modified_by,</if>
<if test="gmtModified != null">gmt_modified,</if>
<if test="activeFlag != null">active_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="rawOrderInId != null">#{rawOrderInId},</if>
<if test="factoryCode != null">#{factoryCode},</if>
<if test="whCode != null">#{whCode},</if>
<if test="waCode != null">#{waCode},</if>
<if test="wlCode != null">#{wlCode},</if>
<if test="orderInType != null">#{orderInType},</if>
<if test="orderNo != null">#{orderNo},</if>
<if test="dnNo != null">#{dnNo},</if>
<if test="poNo != null">#{poNo},</if>
<if test="poLine != null">#{poLine},</if>
<if test="poType != null">#{poType},</if>
<if test="materialCode != null">#{materialCode},</if>
<if test="materialDesc != null">#{materialDesc},</if>
<if test="unit != null">#{unit},</if>
<if test="buyerGroup != null">#{buyerGroup},</if>
<if test="supplyCode != null">#{supplyCode},</if>
<if test="sapFactoryCode != null">#{sapFactoryCode},</if>
<if test="sendSpot != null">#{sendSpot},</if>
<if test="requestAmount != null">#{requestAmount},</if>
<if test="receiptAmount != null">#{receiptAmount},</if>
<if test="shelvesAmount != null">#{shelvesAmount},</if>
<if test="location != null">#{location},</if>
<if test="requestTime != null">#{requestTime},</if>
<if test="qualityStatus != null">#{qualityStatus},</if>
<if test="orderStatus != null">#{orderStatus},</if>
<if test="receiptOperator != null">#{receiptOperator},</if>
<if test="receiptTime != null">#{receiptTime},</if>
<if test="shelvesOperator != null">#{shelvesOperator},</if>
<if test="returnAmount != null">#{returnAmount},</if>
<if test="returnName != null">#{returnName},</if>
<if test="returnTime != null">#{returnTime},</if>
<if test="returnStatus != null">#{returnStatus},</if>
<if test="shelvesTime != null">#{shelvesTime},</if>
<if test="returnMessage != null">#{returnMessage},</if>
<if test="accountingStatus != null">#{accountingStatus},</if>
<if test="accountingTime != null">#{accountingTime},</if>
<if test="accountingMessage != null">#{accountingMessage},</if>
<if test="userDefined1 != null">#{userDefined1},</if>
<if test="userDefined2 != null">#{userDefined2},</if>
<if test="userDefined3 != null">#{userDefined3},</if>
<if test="userDefined4 != null">#{userDefined4},</if>
<if test="userDefined5 != null">#{userDefined5},</if>
<if test="userDefined6 != null">#{userDefined6},</if>
<if test="userDefined7 != null">#{userDefined7},</if>
<if test="userDefined8 != null">#{userDefined8},</if>
<if test="userDefined9 != null">#{userDefined9},</if>
<if test="userDefined10 != null">#{userDefined10},</if>
<if test="createBy != null">#{createBy},</if>
<if test="gmtCreate != null">#{gmtCreate},</if>
<if test="lastModifiedBy != null">#{lastModifiedBy},</if>
<if test="gmtModified != null">#{gmtModified},</if>
<if test="activeFlag != null">#{activeFlag},</if>
</trim>
</insert>
<update id="updateWmsRawOrderIn" parameterType="WmsRawOrderIn">
update wms_raw_order_in
<trim prefix="SET" suffixOverrides=",">
<if test="factoryCode != null">factory_code = #{factoryCode},</if>
<if test="whCode != null">wh_code = #{whCode},</if>
<if test="waCode != null">wa_code = #{waCode},</if>
<if test="wlCode != null">wl_code = #{wlCode},</if>
<if test="orderInType != null">order_in_type = #{orderInType},</if>
<if test="orderNo != null">order_no = #{orderNo},</if>
<if test="dnNo != null">dn_no = #{dnNo},</if>
<if test="poNo != null">po_no = #{poNo},</if>
<if test="poLine != null">po_line = #{poLine},</if>
<if test="poType != null">po_type = #{poType},</if>
<if test="materialCode != null">material_code = #{materialCode},</if>
<if test="materialDesc != null">material_desc = #{materialDesc},</if>
<if test="unit != null">unit = #{unit},</if>
<if test="buyerGroup != null">buyer_group = #{buyerGroup},</if>
<if test="supplyCode != null">supply_code = #{supplyCode},</if>
<if test="sapFactoryCode != null">sap_factory_code = #{sapFactoryCode},</if>
<if test="sendSpot != null">send_spot = #{sendSpot},</if>
<if test="requestAmount != null">request_amount = #{requestAmount},</if>
<if test="receiptAmount != null">receipt_amount = #{receiptAmount},</if>
<if test="shelvesAmount != null">shelves_amount = #{shelvesAmount},</if>
<if test="location != null">location = #{location},</if>
<if test="requestTime != null">request_time = #{requestTime},</if>
<if test="qualityStatus != null">quality_status = #{qualityStatus},</if>
<if test="orderStatus != null">order_status = #{orderStatus},</if>
<if test="receiptOperator != null">receipt_operator = #{receiptOperator},</if>
<if test="receiptTime != null">receipt_time = #{receiptTime},</if>
<if test="shelvesOperator != null">shelves_operator = #{shelvesOperator},</if>
<if test="returnAmount != null">return_amount = #{returnAmount},</if>
<if test="returnName != null">return_name = #{returnName},</if>
<if test="returnTime != null">return_time = #{returnTime},</if>
<if test="returnStatus != null">return_status = #{returnStatus},</if>
<if test="shelvesTime != null">shelves_time = #{shelvesTime},</if>
<if test="returnMessage != null">return_message = #{returnMessage},</if>
<if test="accountingStatus != null">accounting_status = #{accountingStatus},</if>
<if test="accountingTime != null">accounting_time = #{accountingTime},</if>
<if test="accountingMessage != null">accounting_message = #{accountingMessage},</if>
<if test="userDefined1 != null">user_defined1 = #{userDefined1},</if>
<if test="userDefined2 != null">user_defined2 = #{userDefined2},</if>
<if test="userDefined3 != null">user_defined3 = #{userDefined3},</if>
<if test="userDefined4 != null">user_defined4 = #{userDefined4},</if>
<if test="userDefined5 != null">user_defined5 = #{userDefined5},</if>
<if test="userDefined6 != null">user_defined6 = #{userDefined6},</if>
<if test="userDefined7 != null">user_defined7 = #{userDefined7},</if>
<if test="userDefined8 != null">user_defined8 = #{userDefined8},</if>
<if test="userDefined9 != null">user_defined9 = #{userDefined9},</if>
<if test="userDefined10 != null">user_defined10 = #{userDefined10},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="gmtCreate != null">gmt_create = #{gmtCreate},</if>
<if test="lastModifiedBy != null">last_modified_by = #{lastModifiedBy},</if>
<if test="gmtModified != null">gmt_modified = #{gmtModified},</if>
<if test="activeFlag != null">active_flag = #{activeFlag},</if>
</trim>
where raw_order_in_id = #{rawOrderInId}
</update>
<delete id="deleteWmsRawOrderInByRawOrderInId" parameterType="String">
delete from wms_raw_order_in where raw_order_in_id = #{rawOrderInId}
</delete>
<delete id="deleteWmsRawOrderInByRawOrderInIds" parameterType="String">
delete from wms_raw_order_in where raw_order_in_id in
<foreach item="rawOrderInId" collection="array" open="(" separator="," close=")">
#{rawOrderInId}
</foreach>
</delete>
</mapper>

@ -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;
}

@ -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<Map<String, String>> mapList = new ArrayList<>();
mapList= (List<Map<String, String>>) result.getData();
for(Map<String, String> 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<OdsProcureOrder> 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){

@ -281,6 +281,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateOdsProcureOutOrderByid">
update ods_procure_out_order
set User_Defined10 = #{userDefined10},
User_Defined9 = #{userDefined9},
User_Defined11 = #{userDefined11}
where ID = #{ID}
</update>

Loading…
Cancel
Save