diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IDcsForEquipmentService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IDcsForEquipmentService.java
new file mode 100644
index 0000000..c7196d5
--- /dev/null
+++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IDcsForEquipmentService.java
@@ -0,0 +1,20 @@
+package cn.estsh.i3plus.ext.mes.pcn.api.busi;
+
+public interface IDcsForEquipmentService {
+
+ String doGetConsoleItemCode(String organizeCode,String barcode,String custCode,String custPlantCode,String workCenterCode, String workCellCode);
+
+
+ /**
+ *
+ * @param organizeCode
+ * @param barcode
+ * @param partNo 客户零件号
+ * @param result
+ * @param workCenterCode
+ * @param workCellCode
+ * @param custCode
+ * @return
+ */
+ String doFillConsoleResultExt(String organizeCode,String barcode,String partNo,String result,String workCenterCode, String workCellCode,String custCode);
+}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/pom.xml b/modules/i3plus-ext-mes-pcn-apiservice/pom.xml
index 37467ed..b7eacef 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/pom.xml
+++ b/modules/i3plus-ext-mes-pcn-apiservice/pom.xml
@@ -14,6 +14,11 @@
jar
+
+
+ org.apache.cxf
+ cxf-spring-boot-starter-jaxws
+
com.google.guava
guava
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/config/WebServiceConfig.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/config/WebServiceConfig.java
new file mode 100644
index 0000000..a035b0a
--- /dev/null
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/config/WebServiceConfig.java
@@ -0,0 +1,59 @@
+///**
+// * Licensed to the Apache Software Foundation (ASF) under one
+// * or more contributor license agreements. See the NOTICE file
+// * distributed with this work for additional information
+// * regarding copyright ownership. The ASF licenses this file
+// * to you under the Apache ImppLicense, Version 2.0 (the
+// * "ImppLicense"); you may not use this file except in compliance
+// * with the ImppLicense. You may obtain a copy of the ImppLicense at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing,
+// * software distributed under the ImppLicense is distributed on an
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// * KIND, either express or implied. See the ImppLicense for the
+// * specific language governing permissions and limitations
+// * under the ImppLicense.
+// */
+//package cn.estsh.i3plus.ext.mes.pcn.apiservice.config;
+//
+//
+//
+//import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.webservice.DcsForEquipmentServer;
+//import org.apache.cxf.Bus;
+//import org.apache.cxf.jaxws.EndpointImpl;
+//import org.apache.cxf.transport.servlet.CXFServlet;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.web.servlet.ServletRegistrationBean;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//
+//import javax.xml.ws.Endpoint;
+//
+///**
+// * @Description : WebService Server 服务配置
+// * WSDL URL: /block/softswitch/server/web-service?wsdl
+// * @Reference :
+// * @Author : wei.peng
+// * @CreateDate : 2019/9/10 下午3:13
+// * @Modify:
+// **/
+//@Configuration
+//public class WebServiceConfig {
+//
+// @Autowired
+// private Bus bus;
+//
+// @Bean("cxfServletRegistration")
+// public ServletRegistrationBean dispatcherServlet() {
+// return new ServletRegistrationBean(new CXFServlet(), "/*");
+// }
+//
+// @Bean
+// public Endpoint endpoint() {
+// EndpointImpl endpoint = new EndpointImpl(bus, new DcsForEquipmentServer());
+// endpoint.publish("/DCSForEquipmentService");
+// return endpoint;
+// }
+//}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesCutRawErrorProofingController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesCutRawErrorProofingController.java
index 3a221fa..fe28eb6 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesCutRawErrorProofingController.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesCutRawErrorProofingController.java
@@ -12,10 +12,7 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
-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.bind.annotation.*;
/**
* @Description: 裁片原材料防错
@@ -32,7 +29,8 @@ public class MesCutRawErrorProofingController {
@PostMapping("/scan-sn")
@ApiOperation(value = "扫描裁片工单/原材料条码")
- public ResultBean doScanSn(MesCutRawErrorProofingModel model) {
+ public ResultBean doScanSn(@RequestBody MesCutRawErrorProofingModel model) {
+
try {
MesCutRawErrorProofingModel result = cutRawErrorProofingService.doScanSn(model);
return ResultBean.success(StringUtils.isEmpty(result.getShowInfo()) ? "扫描成功" : result.getShowInfo()).setResultObject(result);
@@ -74,7 +72,7 @@ public class MesCutRawErrorProofingController {
@PostMapping("/update-raw-length")
@ApiOperation(value = "修改原材料条码长度")
- public ResultBean doUpdateLengthByScanSn(MesCutUpdateRawLengthModel model) {
+ public ResultBean doUpdateLengthByScanSn(@RequestBody MesCutUpdateRawLengthModel model) {
try {
cutRawErrorProofingService.doUpdateLengthByScanSn(model);
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/model/MesConsoleItemCodeExt.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/model/MesConsoleItemCodeExt.java
new file mode 100644
index 0000000..4f55b5d
--- /dev/null
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/model/MesConsoleItemCodeExt.java
@@ -0,0 +1,23 @@
+package cn.estsh.i3plus.ext.mes.pcn.apiservice.model;
+
+import lombok.Data;
+
+/**
+ * 点测试 GetConsoleItemCodeExt
+ */
+@Data
+public class MesConsoleItemCodeExt {
+
+ //条码
+ private String barcode;
+ //客户编码
+ private String custCode;
+ //客户工厂
+ private String custPlantCode;
+ //装配线
+ private String assemblyLine;
+ //工位
+ private String location;
+ //工厂代码
+ private String organizeCode;
+}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/model/MesConsoleResultExt.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/model/MesConsoleResultExt.java
new file mode 100644
index 0000000..d58ac93
--- /dev/null
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/model/MesConsoleResultExt.java
@@ -0,0 +1,15 @@
+package cn.estsh.i3plus.ext.mes.pcn.apiservice.model;
+
+import lombok.Data;
+
+@Data
+public class MesConsoleResultExt {
+ private String barcode;
+ private String partNO;
+ private String result;
+ private String assemblyLine;
+ private String location;
+ private String custCode;
+ private String organizeCode;
+
+}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java
index 30ed6f6..463d866 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportNoSortJob.java
@@ -3,19 +3,16 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.schedulejob;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionRecordService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService;
+import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
-import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
-import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.repository.MesProductionRecordRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
-import cn.estsh.impp.framework.base.schedule.BaseImppScheduleJob;
+import cn.estsh.i3plus.pojo.model.wms.WmsJobParamModel;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.init.ApplicationProperties;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
@@ -25,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -55,25 +51,24 @@ public class MesReportNoSortJob extends BaseMesScheduleJob {
@Override
@Transactional
public void executeMesJob(JobExecutionContext context, ApplicationProperties applicationProperties) {
- JSONObject jsonObject= new JSONObject();
-
- jsonObject.putIfAbsent("organizeCode", "CK01");
- jsonObject.putIfAbsent("userName", "job");
-
- String organizeCode = jsonObject.getStr("organizeCode");
- String userName = jsonObject.getStr("userName");
- if (null == organizeCode){
- log.error("请添加需要报工的工厂代码!");
- return;
- }
- if (null == userName){
- userName = "JOB";
+ List wmsJobParamModelList = JsonUtilTool.toList(this.getJobParam(), WmsJobParamModel.class);
+ if (!CollectionUtils.isEmpty(wmsJobParamModelList)) {
+ for (WmsJobParamModel wmsJobParamModel : wmsJobParamModelList) {
+ try {
+ long startTime = System.currentTimeMillis();
+ // 处理无工单
+ handlerNoOrder(wmsJobParamModel.getOrganizeCode(), "JOB");
+ // 处理有工单
+ handlerHasOrder(wmsJobParamModel.getOrganizeCode(), "JOB");
+ long endTime = System.currentTimeMillis();
+ log.info("工厂{}非排序报工JOB --- END --- 耗时: {} ms", wmsJobParamModel.getOrganizeCode(), endTime - startTime);
+ } catch (Exception e) {
+ log.info("工厂{}非排序报工JOB 执行失败{}", wmsJobParamModel.getOrganizeCode(), e);
+ }
+ }
+ }else{
+ log.info("非排序报工JOB 参数不能为空");
}
- // 处理无工单
- handlerNoOrder(organizeCode, userName);
- // 处理有工单
- handlerHasOrder(organizeCode, userName);
- // }
}
private void handlerNoOrder(String organizeCode, String userName) {
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java
index bfff550..3ea7347 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/schedulejob/MesReportSortJob.java
@@ -48,6 +48,8 @@ public class MesReportSortJob extends BaseMesScheduleJob {
log.info("工厂{}排序报工job 执行失败{}", wmsJobParamModel.getOrganizeCode(), e);
}
}
+ }else{
+ log.info("排序报工job 参数不能为空");
}
}
}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/DcsForEquipmentServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/DcsForEquipmentServiceImpl.java
new file mode 100644
index 0000000..d33d46e
--- /dev/null
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/DcsForEquipmentServiceImpl.java
@@ -0,0 +1,141 @@
+package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
+
+import cn.estsh.i3plus.ext.mes.pcn.api.busi.IDcsForEquipmentService;
+import cn.estsh.i3plus.platform.common.convert.ConvertBean;
+import cn.estsh.i3plus.platform.common.tool.TimeTool;
+import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
+import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
+import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
+import cn.estsh.i3plus.pojo.mes.bean.*;
+import cn.estsh.i3plus.pojo.mes.repository.*;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class DcsForEquipmentServiceImpl implements IDcsForEquipmentService {
+
+ @Autowired
+ private MesCustomerSnTransformService mesCustomerSnTransformService;
+
+ @Autowired
+ private MesProduceSnRepository mesProduceSnRao;
+
+ @Autowired
+ private MesConfigRepository mesConfigRao;
+
+ @Autowired
+ private MesPcScanLogRepository scanLogRao;
+
+
+ @Autowired
+ private MesCustomerPartRepository customerPartRao;
+
+ @Override
+ public String doGetConsoleItemCode(String organizeCode,String barcode, String custCode, String custPlantCode, String workCenterCode, String workCellCode) {
+ //通用二维码组成部分('RS'为记录分隔符ASCII:30,'GS'为分组符ASCII:29,'EOT'为传输结束符ASCII:04)
+ //[)>+'RS'+06+'GS'+Y+vpps+'GS'+P+8位客户零件号+'GS'+12V+DUNS+'GS'+T+1位line num+1位班次号+2位年份+3位天数+1位追溯(精确追溯A,批次追溯@)+2工程更改记录+2位自定义+4位流水号+'RS'+'EOT'
+ //如:[)>+'RS'+06+'GS'+Y+4110000000000X+'GS'+P+12345678+'GS'+12V+545295227+'GS'+T+1A13304A2B4C0001+'RS'+'EOT'
+ //包含ASCII码的条码 65位,不包含的 58位
+
+ barcode = mesCustomerSnTransformService.transformBarCodeGm(barcode);
+
+ //todo 读取配置文件 获取工厂
+ if (StringUtils.isBlank(organizeCode)) {
+ DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
+ DdlPreparedPack.getStringEqualPack("ORGANIZE_CODE","cfgCode",ddlPackBean);
+ List organizeConfig = mesConfigRao.findByHqlWhere(ddlPackBean);
+ if (!organizeConfig.isEmpty()) {
+ organizeCode = organizeConfig.get(0).getCfgValue();
+ }
+ }
+ //2.根据条码表查询一条,排序条码表条码唯一
+ DdlPackBean producePackBean = DdlPackBean.getDdlPackBean(organizeCode);
+ DdlPreparedPack.getStringEqualPack(barcode,"custSn",producePackBean);
+ DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), producePackBean);
+ List produceSnList = mesProduceSnRao.findByHqlTopWhere(producePackBean, 1);
+
+
+ //4.如果在条码表中能查询出数据,插入到scanMonitor一条记录
+ if (!produceSnList.isEmpty()) {
+ MesPcScanLog scanLog = new MesPcScanLog();
+ scanLog.setScanTime(TimeTool.getNowTime(true));
+ scanLog.setWorkCenterCode(workCenterCode);
+ scanLog.setWorkCellCode(workCellCode);
+ scanLog.setCustSn(barcode);
+ scanLog.setOrganizeCode(organizeCode);
+ ConvertBean.saveOrUpdate(scanLog,"JOB");
+ scanLogRao.insert(scanLog);
+ //4.返回客户条码
+ return produceSnList.get(0).getCustPartNo();
+ }
+ return "";
+ }
+
+ @Override
+ public String doFillConsoleResultExt(String organizeCode, String barcode, String partNo, String result, String workCenterCode, String workCellCode, String custCode) {
+ barcode = mesCustomerSnTransformService.transformBarCodeGm(barcode);
+
+ if (StringUtils.isBlank(organizeCode)) {
+ DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
+ DdlPreparedPack.getStringEqualPack("ORGANIZE_CODE","cfgCode",ddlPackBean);
+ List organizeConfig = mesConfigRao.findByHqlWhere(ddlPackBean);
+ if (!organizeConfig.isEmpty()) {
+ organizeCode = organizeConfig.get(0).getCfgValue();
+ }
+ }
+
+ MesPcScanLog scanLog = new MesPcScanLog();
+ scanLog.setScanTime(TimeTool.getNowTime(true));
+ scanLog.setWorkCenterCode(workCenterCode);
+ scanLog.setWorkCellCode(workCellCode);
+ scanLog.setCustSn(barcode);
+ scanLog.setOrganizeCode(organizeCode);
+ scanLog.setRemark(partNo+":"+result);
+ ConvertBean.saveOrUpdate(scanLog,"JOB");
+ scanLogRao.insert(scanLog);
+
+ String erpPartNo = "";
+ //查询erp零件号 根据客户零件号
+ DdlPackBean custPartPackBean = DdlPackBean.getDdlPackBean(organizeCode);
+ DdlPreparedPack.getStringEqualPack(partNo,"custPartNo",custPartPackBean);
+ DdlPreparedPack.getStringEqualPack(custCode,"custCode",custPartPackBean);
+ List customerPartList = customerPartRao.findByHqlTopWhere(custPartPackBean, 1);
+ if (!customerPartList.isEmpty()){
+ erpPartNo = customerPartList.get(0).getErpPartNo();
+ }
+
+ if (StringUtils.isNotBlank(erpPartNo)){
+ //更新条码表的状态
+
+ //插入生产记录表
+
+ //插入装配件生产记录表
+ }
+ return "1";
+ }
+
+
+ private String createBarCode(String barcode){
+ String barcodeResult = "";
+ if (StringUtils.isEmpty(barcode)){
+ return barcodeResult;
+ }
+ //缺少了ascii码,根据规则拼接出来
+ //正常65 [)>06Y4110000000000XP2656085012V545238347T1A24269A2B4C0003
+ //异常58 [)>06Y4110000000000XP2656085012V545238347T1A24269A2B4C0003
+ if (barcode.length() == 58){
+ String part1 = barcode.substring(0, 3);
+ String part2 = barcode.substring(3, 5);
+ String part3 = barcode.substring(5, 20);
+ String part4 = barcode.substring(20, 29);
+ String part5 = barcode.substring(29,41);
+ String part6 = barcode.substring(41);
+
+ barcodeResult = part1 + (char)30 + part2 +(char)29 + part3 + (char)29 + part4 +(char)29 + part5 +(char)29 + part6 + (char)30 + (char)04;
+ }
+ return barcodeResult;
+ }
+}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java
index 3cef6a4..283ebfc 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesAssemblyExtService.java
@@ -85,9 +85,8 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
//【排序线】获取生产工单装配件清单
List workOrderAssemblyList = filterWorkOrderAssemblyList(getWorkOrderAssemblyList(prodRuleContext), prodRuleContext.getEquipmentCode());
- // 显示前道所有工序装配件工步: 不携带工位
- workOrderAssemblyList = !StringUtils.isEmpty(prodRuleContext.getWorkCellCode()) ? workOrderAssemblyList :
- workOrderAssemblyList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()) != 0)).collect(Collectors.toList());
+ // 搜集非已装配的数据
+ workOrderAssemblyList = workOrderAssemblyList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()) != 0)).collect(Collectors.toList());
if (CollectionUtils.isEmpty(workOrderAssemblyList)) return null;
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java
index 8890000..678df66 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java
@@ -415,6 +415,14 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
}
if (Objects.isNull(srcLocateNo)) {
srcLocateNo = configService.getCfgValue(org, "LGORT");
+
+ DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
+ DdlPreparedPack.getStringEqualPack(model.getPartNo(), "partNo", ddlPackBean);
+
+ MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
+ if (version != null) {
+ srcLocateNo = version.getShipInventoryPoint();
+ }
}
if (model.getOptType() != 2) {
//移库
@@ -480,7 +488,17 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
//移库
if (model.getOptType() != 2) {
- MesMove move = createMove(model, configService.getCfgValue(org, "LGORT"), configService.getCfgValue(org, "UMLGO"), org, null == produceSn ? model.getWorkCenterCode() : produceSn.getWorkCenterCode());
+ String srcLocateNo = configService.getCfgValue(org, "LGORT");
+
+ DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
+ DdlPreparedPack.getStringEqualPack(model.getPartNo(), "partNo", ddlPackBean);
+
+ MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
+ if (version != null) {
+ srcLocateNo = version.getShipInventoryPoint();
+ }
+
+ MesMove move = createMove(model, srcLocateNo, configService.getCfgValue(org, "UMLGO"), org, null == produceSn ? model.getWorkCenterCode() : produceSn.getWorkCenterCode());
moveRepository.save(move);
}
@@ -734,10 +752,10 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
* @return
*/
private MesMove createMove(MesPartInspectionInputModel model, String source, String target, String org, String workCenterCode) {
+ if (StringUtils.isEmpty(model.getUserInfo())) model.setUserInfo("系统");
GenSerialNoModel serialNoModel = new GenSerialNoModel("INPUT_DEFECT_ZRSUM");
serialNoModel.setPartNo(model.getPart().getPartNo());
-// ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, AuthUtil.getSessionUser().getUserName(), org, 1);
- ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, "系统", org, 1);
+ ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, model.getUserInfo(), org, 1);
String zrsum = "";
if (null != rb && !CollectionUtils.isEmpty(rb.getResultList())) {
zrsum = (rb.getResultList().get(0)).toString();
@@ -758,8 +776,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
move.setMoveType(MesExtEnumUtil.MOVE_TYPE.SUSPICIOUS_MOVE.getValue());
move.setProductSn(model.getSn());
move.setWorkCenter(prodOrgExtService.getErpWorkCenterCode(org, workCenterCode));
-// ConvertBean.serviceModelInitialize(move, AuthUtil.getSessionUser().getUserName());
- ConvertBean.serviceModelInitialize(move, "系统");
+ ConvertBean.serviceModelInitialize(move, model.getUserInfo());
return move;
}
@@ -935,7 +952,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
private List checkPartInspectionDetail(MesPartInspection partInspection, String org) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(org);
- DdlPreparedPack.getNumEqualPack(partInspection.getId(), "pid", packBean);
+ DdlPreparedPack.getNumEqualPack(partInspection.getId(), MesPcnExtConstWords.PID, packBean);
List detailList = partInspectionDetailRepository.findByHqlWhere(packBean);
return detailList;
@@ -945,7 +962,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
public void saveSusPartInspection(MesPartInspectionInputModel model, String org) {
MesPartInspection partInspection = new MesPartInspection();
- BeanUtils.copyProperties(model, partInspection);
+ BeanUtils.copyProperties(model, partInspection, MesPcnExtConstWords.ID);
partInspection.setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue());
partInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.CREATE.getValue());
partInspection.setOrganizeCode(org);
@@ -959,8 +976,8 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
partInspection.setDefectTypeCode(defectType.getDefectTypeCode());
partInspection.setDefectTypeId(defectType.getId());
-
- partInspectionRepository.save(partInspection);
+ ConvertBean.serviceModelInitialize(partInspection, model.getUserInfo());
+ partInspection = partInspectionRepository.insert(partInspection);
log.info("生成的缺陷记录id ={}", partInspection);
MesPartInspectionDetail detail = new MesPartInspectionDetail();
@@ -974,7 +991,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
detail.setDefectTypeName(defectType.getDefectTypeName());
detail.setId(null);
detail.setOrganizeCode(org);
- ConvertBean.serviceModelInitialize(detail, "系统");
+ ConvertBean.serviceModelInitialize(detail, model.getUserInfo());
partInspectionDetailRepository.insert(detail);
//
String source = configService.getCfgValue(org, "LGORT");
@@ -996,7 +1013,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
}
}
MesMove move = createMove(model, source, configService.getCfgValue(org, "UMLGO"), org, model.getWorkCenterCode());
- moveRepository.save(move);
+ moveRepository.insert(move);
}
@ApiOperation(value = "客退品查询")
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java
index cd930d3..6ab03b2 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesNcProcessingService.java
@@ -397,8 +397,17 @@ public class MesNcProcessingService implements IMesNcProcessingService {
partInspectionRepository.save(model.getPartInspection());
+ String target = configService.getCfgValue(org, "LGORT");
+ DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
+ DdlPreparedPack.getStringEqualPack(model.getPart().getPartNo(), "partNo", ddlPackBean);
+
+ MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
+ if (version != null) {
+ target = version.getShipInventoryPoint();
+ }
+
//移库 转正常、放行:8000移至2000
- MesMove move = createMove(model, sourceValue, configService.getCfgValue(org, "LGORT"), org, null == sn ? workCenterCode : sn.getWorkCenterCode(), MesExtEnumUtil.MOVE_TYPE.NORMAL_MOVE);
+ MesMove move = createMove(model, sourceValue, target, org, null == sn ? workCenterCode : sn.getWorkCenterCode(), MesExtEnumUtil.MOVE_TYPE.NORMAL_MOVE);
ConvertBean.serviceModelInitialize(move,model.getUserName());
moveRepository.save(move);
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java
index e064a1b..dc94dfb 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java
@@ -10,7 +10,6 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
-import cn.estsh.i3plus.pojo.mes.bean.MesProdShiftRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesQueueOrder;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
@@ -160,10 +159,11 @@ public class MesProduceSnExtService implements IMesProduceSnExtService {
@Override
public void saveProduceSnList(StationRequestBean reqBean, Integer snStatus, List idList) {
-
- DdlPackBean packBean = new DdlPackBean();
- DdlPreparedPack.getStringEqualPack(reqBean.getOrganizeCode(), MesPcnExtConstWords.ORGANIZE_CODE, packBean);
- DdlPreparedPack.getInPackList(idList, MesPcnExtConstWords.ID, packBean);
+ idList = CollectionUtils.isEmpty(idList) ? idList : idList.stream().filter(o -> !StringUtils.isEmpty(o)).distinct().collect(Collectors.toList());
+ if (CollectionUtils.isEmpty(idList)) return;
+ DdlPackBean packBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
+ if (idList.size() == 1) DdlPreparedPack.getNumEqualPack(idList.get(0), MesPcnExtConstWords.ID, packBean);
+ else DdlPreparedPack.getInPackList(idList, MesPcnExtConstWords.ID, packBean);
produceSnRepository.updateByProperties(
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE, MesPcnExtConstWords.SN_STATUS},
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), snStatus},
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java
index 839cd12..0494fcc 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPullingOrderInfoService.java
@@ -7,6 +7,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesPullingOrderInfoService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
+import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@@ -185,6 +186,7 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService {
pullingOrderInfo.setPullingOrderPartInfos(pullingOrderPartInfos);
}
+ pullingOrderInfo.setPrintTime(TimeTool.getNowTime(true));
pullingOrderInfo.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue());
ConvertBean.serviceModelUpdate(pullingOrderInfo, userName);
}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java
index e23434c..53f0bd9 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesRawPartChargingServiceImpl.java
@@ -128,10 +128,14 @@ public class MesRawPartChargingServiceImpl implements IMesRawPartChargingService
if (!CollectionUtils.isEmpty(mesRawPartCharging)) {
MesPcnException.throwMesBusiException("料筒条码【%s】与原料条码【%s】已绑定", mesRawPartChargingModel.getPackageSn(), mesRawPartCharging.iterator().next().getSn());
}
- //保存生产控制加料
- MesRawPartCharging charging = insertRawPartCharging(mesRawPartChargingModel);
- //保存日志
- saveLog(mesRawPartChargingModel, charging, MesExtEnumUtil.CHARGING_LOG_STATUS.FEEDING);
+ //保存生产控制加料 43302 加料防错扫码流程优化
+ String[] split = mesRawPartChargingModel.getSn().split(",");
+ for (String sn : split) {
+ mesRawPartChargingModel.setSn(sn);
+ MesRawPartCharging charging = insertRawPartCharging(mesRawPartChargingModel);
+ //保存日志
+ saveLog(mesRawPartChargingModel, charging, MesExtEnumUtil.CHARGING_LOG_STATUS.FEEDING);
+ }
}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java
index 5ee9b3a..6caad26 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java
@@ -179,7 +179,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.PUBLISHED.getValue(), "status", orderPackBean);
DdlPreparedPack.getStringEqualPack(shippingGroupNo, "shippingGroupCode", orderPackBean);
- DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"seq"}, orderPackBean);
+ DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.ASC.getValue()}, new String[]{"seq"}, orderPackBean);
return shippingOrderManagementRepository.getByProperty(orderPackBean);
}
@@ -395,14 +395,19 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
DdlPackBean packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(orderManagement.getShippingCode(),"shippingCode",packBean);
MesLoadingListDetail listDetail = listDetailRepository.getByProperty(packBean);
+ MesLoadingList loadingList = null;
if(!Objects.isNull(listDetail)){
packBean = DdlPackBean.getDdlPackBean(orderManagement.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(listDetail.getPid(), "id", packBean);
- MesLoadingList loadingList = listRepository.getByProperty(packBean);
+ loadingList = listRepository.getByProperty(packBean);
if(!Objects.isNull(loadingList)){
orderManagement.setOrderCode(loadingList.getOrderCode());
orderManagement.setLoadingListId(loadingList.getId());
}
+ //更新装车单明细对应的发运单状态=发运
+ listDetail.setStatus(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
+ ConvertBean.serviceModelUpdate(listDetail, userInfo);
+ listDetailRepository.update(listDetail);
}
//发运单状态修改为校验完成
orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE);
@@ -422,18 +427,17 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//根据扫描的条码查询条码是否存在
packBean = DdlPackBean.getDdlPackBean(organizeCode);
if (Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) {
- DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean);
+ DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "custSn", packBean);
} else {
List mesShippingOrderManagementDetails = custInfoSeqMap.get(detail.getCustInfoSeq());
MesShippingOrderManagementDetail managementDetail = mesShippingOrderManagementDetails.get(0);
detail.setRemark(managementDetail.getRemark());
detail.setStatus(managementDetail.getStatus());
detail.setBarcode(managementDetail.getBarcode());
- DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "productSn", packBean);
+ detail.setVisualOrderNo(managementDetail.getVisualOrderNo());
+ DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "custSn", packBean);
}
- detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
- detail.setActualQty(1);
- ConvertBean.serviceModelUpdate(detail, userInfo);
+ //更新条码信息,更新目视单信息
if(!StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)){
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
MesProduceSn produceSn = produceSnRepository.getByProperty(packBean);
@@ -447,6 +451,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
if(!StringUtils.isEmpty(detail.getVisualOrderNo())){
MesWorkOrder workOrder = mesWorkOrderExtService.getWorkOrder(organizeCode, detail.getVisualOrderNo());
if(!Objects.isNull(workOrder)){
+ workOrder.setShippingTime(TimeTool.getNowTime(true));
workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.SHIPPING.getValue());
produceSn.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(workOrder, userInfo);
@@ -454,7 +459,13 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
}
}
}
-
+ //条码格式(扫描目视单,扫描条码)
+ if(!StringUtil.isEmpty(detail.getVisualOrderNo())){
+ detail.setBarcode(new StringJoiner(MesPcnExtConstWords.COMMA).add(detail.getVisualOrderNo()).add(detail.getBarcode()).toString());
+ }
+ detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
+ detail.setActualQty(MesPcnExtConstWords.ONE);
+ ConvertBean.serviceModelUpdate(detail, userInfo);
}
//更新条码
if(!CollectionUtils.isEmpty(produceSnList)){
@@ -467,15 +478,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//更新发运单
ConvertBean.serviceModelUpdate(orderManagement,userInfo);
update(orderManagement);
- shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
- //1.更新装车单明细对应的发运单状态=发运
- DdlPackBean vehiclesOrderDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode);
- DdlPreparedPack.getStringEqualPack(orderManagement.getShippingCode(), "shippingCode", vehiclesOrderDetailPackBean);
- MesLoadingListDetail vehiclesOrderDetail = vehiclesOrderDetailRepository.getByProperty(vehiclesOrderDetailPackBean);
- if(!StringUtil.isEmpty(vehiclesOrderDetail)){
- vehiclesOrderDetail.setStatus(MesExtEnumUtil.LOADING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
- ConvertBean.serviceModelUpdate(vehiclesOrderDetail, userInfo);
- vehiclesOrderDetailRepository.save(vehiclesOrderDetail);
+ //不记忆时更新明细
+ if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && !Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)){
+ shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
}
if(StringUtils.isEmpty(orderManagement.getOrderCode()) || StringUtils.isEmpty(orderManagement.getLoadingListId())){
//发送数据给辊道线
@@ -502,15 +507,12 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//保存当前发运单明细报工
jisShippingRepository.saveAll(getMesJisShippings(mesShippingOrderManagement,userInfo));
}
-
- if(!StringUtil.isEmpty(vehiclesOrderDetail)){
- MesLoadingList loadingList = vehiclesOrderRepository.getById(vehiclesOrderDetail.getPid());
- if (!StringUtils.isEmpty(loadingList)) {
- loadingList.setSystemSyncStatus(CommonEnumUtil.FALSE);
- loadingList.setStatus(MesExtEnumUtil.MES_LOADING_STATUS.ASN.getValue());
- ConvertBean.serviceModelUpdate(loadingList, userInfo);
- shippingLoadingCheckService.update(loadingList);
- }
+ //更新装车单
+ if (!StringUtils.isEmpty(loadingList)) {
+ loadingList.setSystemSyncStatus(CommonEnumUtil.FALSE);
+ loadingList.setStatus(MesExtEnumUtil.MES_LOADING_STATUS.ASN.getValue());
+ ConvertBean.serviceModelUpdate(loadingList, userInfo);
+ shippingLoadingCheckService.update(loadingList);
}
}
}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java
index ecb9751..c0a68ba 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java
@@ -674,7 +674,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
//保存数据
List mesProductOffLineList = new ArrayList<>();
- MesProductOffLine newMesProductOffLine;
+ List mesMoveList = new ArrayList<>();
// 排除重复的数据
Map> map = mesBoms.stream().collect(Collectors.groupingBy(mesBom -> {
MesBom bom = new MesBom();
@@ -682,45 +682,33 @@ public class MesWorkOrderService implements IMesWorkOrderService {
bom.setItemPartNo(mesBom.getItemPartNo());
return bom;
}));
- for (Map.Entry> entry : map.entrySet()) {
- MesBom mesBom = entry.getValue().get(0);
- newMesProductOffLine = new MesProductOffLine();
- newMesProductOffLine.setReportPartNo(oldMesWorkOrder.getPartNo());
- newMesProductOffLine.setReportPartNameRdd(oldMesWorkOrder.getPartName());
- newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo());
- newMesProductOffLine.setItemPartName(mesBom.getItemPartName());
- newMesProductOffLine.setItemQty(mesBom.getItemQty());
- newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint());
- newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint());
- newMesProductOffLine.setQty(1d);
- newMesProductOffLine.setReportSn(productionRecord.getProductSn());
- newMesProductOffLine.setBomVersion(oldMesWorkOrder.getProductVersion());
- newMesProductOffLine.setSerialNumber(productionRecord.getSerialNumber());
- newMesProductOffLine.setUnit(mesBom.getUnit());
- newMesProductOffLine.setBomCode(mesBom.getBomCode());
- newMesProductOffLine.setItemUnit(mesBom.getItemUnit());
- newMesProductOffLine.setWorkOrderNo(oldMesWorkOrder.getWorkOrderNo());
- newMesProductOffLine.setWorkOrderType(oldMesWorkOrder.getWorkOrderType());
- newMesProductOffLine.setWorkCenterCode(oldMesWorkOrder.getWorkCenterCode());
- newMesProductOffLine.setWorkCellCode(oldMesWorkOrder.getWorkCellCode());
- newMesProductOffLine.setReportType(oldMesWorkOrder.getReportType());
- newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode());
- newMesProductOffLine.setOrganizeCode(oldMesWorkOrder.getOrganizeCode());
- newMesProductOffLine.setDescription(productionRecord.getCompleteDateTime());
- ConvertBean.serviceModelInitialize(newMesProductOffLine, userName);
- mesProductOffLineList.add(newMesProductOffLine);
+ if(MesExtEnumUtil.NOSORT_REPORT_TYPE.REPORT.getValue() == productionRecord.getReportType()){
+ for (Map.Entry> entry : map.entrySet()) {
+ mesProductOffLineList.add(getMesProductOffLine(productionRecord, userName, oldMesWorkOrder, mesProductVersion, entry.getValue().get(0)));
+ }
+ } else if (MesExtEnumUtil.NOSORT_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue() == productionRecord.getReportType()) {
+ customerSupplyMove(productionRecord,oldMesWorkOrder, mesProductVersion, mesBoms, productionRecord.getProductSn(), mesProductOffLineList, mesMoveList,userName);
+ } else {
+ LOGGER.info("汇报类型不存在");
+ return;
+ }
+
+ if(!CollectionUtils.isEmpty(mesProductOffLineList)){
+ mesProductOffLineRDao.saveAll(mesProductOffLineList);
+ }
+
+ if(!CollectionUtils.isEmpty(mesMoveList)){
+ mesMoveRepository.saveAll(mesMoveList);
}
- mesProductOffLineRDao.saveAll(mesProductOffLineList);
// 同步工单信息给加工记录、条码信息
- DdlPackBean snDdlPackBean = DdlPackBean.getDdlPackBean();
+ DdlPackBean snDdlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(productionRecord.getId(), "id", snDdlPackBean);
- DdlPreparedPack.getStringEqualPack(organizeCode, "organizeCode", snDdlPackBean);
mesProduceSnRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "workOrderNo"},
new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo()}, snDdlPackBean);
- DdlPackBean packBean = DdlPackBean.getDdlPackBean();
+ DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(productionRecord.getId(), "id", packBean);
productionRecordRao.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "workOrderNo", "reportStatus"},
new Object[]{userName, TimeTool.getNowTime(true), oldMesWorkOrder.getWorkOrderNo(), MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue()}, packBean);
@@ -729,6 +717,34 @@ public class MesWorkOrderService implements IMesWorkOrderService {
}
+ private MesProductOffLine getMesProductOffLine(MesProductionRecord productionRecord, String userName, MesWorkOrder oldMesWorkOrder, MesProductVersion mesProductVersion, MesBom mesBom) {
+ MesProductOffLine newMesProductOffLine = new MesProductOffLine();
+ newMesProductOffLine.setReportPartNo(oldMesWorkOrder.getPartNo());
+ newMesProductOffLine.setReportPartNameRdd(oldMesWorkOrder.getPartName());
+ newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo());
+ newMesProductOffLine.setItemPartName(mesBom.getItemPartName());
+ newMesProductOffLine.setItemQty(mesBom.getItemQty());
+ newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint());
+ newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint());
+ newMesProductOffLine.setQty(1d);
+ newMesProductOffLine.setReportSn(productionRecord.getProductSn());
+ newMesProductOffLine.setBomVersion(oldMesWorkOrder.getProductVersion());
+ newMesProductOffLine.setSerialNumber(productionRecord.getSerialNumber());
+ newMesProductOffLine.setUnit(mesBom.getUnit());
+ newMesProductOffLine.setBomCode(mesBom.getBomCode());
+ newMesProductOffLine.setItemUnit(mesBom.getItemUnit());
+ newMesProductOffLine.setWorkOrderNo(oldMesWorkOrder.getWorkOrderNo());
+ newMesProductOffLine.setWorkOrderType(oldMesWorkOrder.getWorkOrderType());
+ newMesProductOffLine.setWorkCenterCode(oldMesWorkOrder.getWorkCenterCode());
+ newMesProductOffLine.setWorkCellCode(oldMesWorkOrder.getWorkCellCode());
+ newMesProductOffLine.setReportType(oldMesWorkOrder.getReportType());
+ newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode());
+ newMesProductOffLine.setOrganizeCode(oldMesWorkOrder.getOrganizeCode());
+ newMesProductOffLine.setDescription(productionRecord.getCompleteDateTime());
+ ConvertBean.serviceModelInitialize(newMesProductOffLine, userName);
+ return newMesProductOffLine;
+ }
+
/**
* 获取对应的工单
*
@@ -1151,7 +1167,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
} catch (Exception e) {
String msg = e.getMessage();
if (e instanceof ImppBusiException) {
- msg = ((ImppBusiException) e).getErrorMsg();
+ msg = ((ImppBusiException) e).getErrorDetail();
}
log.error("工单:{}报工失败{}", orderNo, ExceptionUtils.getStackTrace(e));
productionRecordService.updateProductionRecord(model.getMesProductionRecordMap().get(orderNo), userName, MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_40.getValue(), msg);
@@ -1503,6 +1519,64 @@ public class MesWorkOrderService implements IMesWorkOrderService {
}
}
+ private void customerSupplyMove(MesProductionRecord productionRecord,MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, List mesBoms, String sn, List mesProductOffLineList, List mesMoveList,String userName) {
+ boolean isItemMove;
+ boolean isItemReport;
+ MesMoveRule moveRule;
+ //查询零件生产组的移库规则
+ List moveRules = mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(mesWorkOrder.getPartProdGroupCode(), mesWorkOrder.getOrganizeCode());
+ Map> mesMoveRuleMap = moveRules.stream().filter(t -> Objects.nonNull(t.getSrcType())).collect(Collectors.groupingBy(MesMoveRule::getSrcType));
+ List itemPartNoList = mesBoms.stream().map(MesBom::getItemPartNo).collect(Collectors.toList());
+ //子物料SAP下发信息
+ Map> mesPartSapMap = getPartSapMap(mesWorkOrder, itemPartNoList);
+ //获取物料信息
+ Map> itemPartMap = getItemPartMap(mesWorkOrder, itemPartNoList);
+ for (MesBom mesBom : mesBoms) {
+ isItemReport = false;
+ isItemMove = false;
+ moveRule = null;
+ if (itemPartMap.containsKey(mesBom.getItemPartNo())) {
+ MesPart itemPart = itemPartMap.get(mesBom.getItemPartNo()).iterator().next();
+ if (!StringUtil.isEmpty(itemPart.getEsd()) && mesMoveRuleMap.containsKey(itemPart.getEsd())) {
+ moveRule = mesMoveRuleMap.get(itemPart.getEsd()).iterator().next();
+ if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT_MOVE.getValue() == moveRule.getReportType()) {
+ isItemMove = true;
+ isItemReport = true;
+ } else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT.getValue() == moveRule.getReportType()) {
+ isItemReport = true;
+ } else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.MOVE.getValue() == moveRule.getReportType()) {
+ isItemMove = true;
+ }
+ }
+ }
+ //汇报
+ if (isItemReport) {
+ mesProductOffLineList.add(getMesProductOffLine(productionRecord, userName, mesWorkOrder, mesProductVersion, mesBom));
+ }
+ //移库
+ if (isItemMove) {
+ MesPartSap mesPartSap = null;
+ if (mesPartSapMap.containsKey(mesBom.getItemPartNo())) {
+ mesPartSap = mesPartSapMap.get(mesBom.getItemPartNo()).iterator().next();
+ }
+ MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), mesBom.getOrganizeCode(), mesWorkOrder.getErpWorkCenter(), mesBom.getItemQty(), MesExtEnumUtil.MOVE_TYPE.RAW_MATERIAL_MOVE.getValue());
+ move.setMatnr(mesBom.getItemPartNo());
+ ConvertBean.serviceModelInitialize(move, userName);
+ mesMoveList.add(move);
+ }
+ }
+ }
+
+ private Map> getPartSapMap(MesWorkOrder mesWorkOrder, List itemPartNoList) {
+ List mesPartSapList = iMesPartService.findMesPartSapByPartNo(itemPartNoList, mesWorkOrder.getOrganizeCode());
+ return mesPartSapList.stream().filter(t -> Objects.nonNull(t.getPartNo())).collect(Collectors.groupingBy(MesPartSap::getPartNo));
+ }
+
+ private Map> getItemPartMap(MesWorkOrder mesWorkOrder, List itemPartNoList) {
+ List itemPartList = iMesPartService.findMesPartByPartNo(itemPartNoList, mesWorkOrder.getOrganizeCode());
+ return itemPartList.stream().filter(t -> Objects.nonNull(t.getPartNo())).collect(Collectors.groupingBy(MesPart::getPartNo));
+ }
+
private MesWorkOrder getMesWorkOrder(Map> workOrderMap, String workOrderNo) {
MesWorkOrder workOrder = Objects.isNull(workOrderMap) || StringUtils.isEmpty(workOrderNo) || !workOrderMap.containsKey(workOrderNo) ? null : workOrderMap.get(workOrderNo).iterator().next();
if (Objects.isNull(workOrder)) {
@@ -1608,4 +1682,21 @@ public class MesWorkOrderService implements IMesWorkOrderService {
ConvertBean.serviceModelInitialize(move, userName);
return move;
}
+
+ private MesMove createMove(MesPartSap mesPart, String source, String target, String org, String workCenterCode, double qty, Integer moveType) {
+ MesMove move = new MesMove();
+ if (!Objects.isNull(mesPart)) {
+ move.setMeins(mesPart.getUnit());
+ }
+ move.setOrganizeCode(org);
+ move.setFactoryCode(org);
+ move.setLgort(source);
+ move.setUmlgo(target);
+ move.setMenge(qty);
+ move.setPostDate(TimeTool.getToday());
+ move.setMoveType(moveType);
+ move.setPostTime(TimeTool.getTimeShortWithColon());
+ move.setWorkCenter(workCenterCode);
+ return move;
+ }
}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java
index 6bccefa..5ad1559 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnAndOrderStrategyServiceImpl.java
@@ -30,10 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -70,25 +67,23 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin
@Override
public MesSortShippingCheckModel doScan(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup) {
if (!Objects.isNull(model.getLastShippingDetailId())) {
- //校验目视单是否已经扫描
- if (model.getDetailList().stream().anyMatch(t -> !StringUtils.isEmpty(t.getVisualOrderNo()) && t.getVisualOrderNo().equals(model.getSn()))) {
- throw new ImppBusiException(String.format("【%s】此目视单已经扫描过,请检查数据!", model.getSn()));
- }
+ //校验条码
+ MesProduceSn produceSn = checkSn(model);
//更新单据信息
model.getDetailList().stream().filter(t -> t.getId().equals(model.getLastShippingDetailId())).forEach(detail -> {
- detail.setVisualOrderNo(model.getSn());
- updateOrderManagementDetails(orderManagement, detail, getWorkOrder(model, detail), model.getUserInfo());
+ detail.setBarcode(model.getSn());
+ updateOrderManagementDetails(orderManagement, detail, getMesWorkOrder(model, produceSn, detail), produceSn, model.getUserInfo());
});
model.setLastShippingDetailId(null);
} else {
- //校验条码
- MesProduceSn produceSn = checkSn(model);
+ //校验目视单
+ MesWorkOrder workOrder = getWorkOrder(model);
boolean scanFlg = false;
for (MesShippingOrderManagementDetail detail : model.getDetailList()) {
- if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(detail.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) {
+ if (detail.getPartNo().equals(workOrder.getPartNo()) && StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(detail.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) {
//校验发运明细
- checkShippingDetails(model, orderManagement, shippingGroup, produceSn, detail);
- detail.setBarcode(model.getSn());
+ checkShippingDetails(model, orderManagement, shippingGroup, workOrder.getPartNo(), detail);
+ detail.setVisualOrderNo(model.getSn());
//校验通过的明细ID
model.setLastShippingDetailId(detail.getId());
scanFlg = true;
@@ -96,16 +91,15 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin
}
}
if (!scanFlg) {
- throw new ImppBusiException(String.format("【%s】此条码对应的【%s】物料号与发运单中物料号不匹配,请检查数据!", model.getSn(), produceSn.getPartNo()));
+ throw new ImppBusiException(String.format("【%s】此目视单对应的【%s】物料号与发运单中物料号不匹配,请检查数据!", model.getSn(), workOrder.getPartNo()));
}
}
return model;
}
-
- private MesWorkOrder getWorkOrder(MesSortShippingCheckModel model, MesShippingOrderManagementDetail detail) {
- MesWorkOrder workOrder = mesWorkOrderExtService.getWorkOrder(model.getOrganizeCode(), model.getSn());
+ private MesWorkOrder getMesWorkOrder(MesSortShippingCheckModel model, MesProduceSn produceSn, MesShippingOrderManagementDetail detail) {
+ MesWorkOrder workOrder = mesWorkOrderExtService.getWorkOrder(model.getOrganizeCode(), detail.getVisualOrderNo());
if (Objects.isNull(workOrder)) {
throw new ImppBusiException(String.format("目视单【%s】不存在,请检查数据!", model.getSn()));
}
@@ -114,17 +108,35 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin
throw new ImppBusiException(String.format("目视单【%s】状态为【%s】质量状态为【%s】,不允许发运!", model.getSn(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()), MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(workOrder.getQcStatus())));
}
//校验条码是否匹配
- if (!Objects.equals(detail.getBarcode(), workOrder.getCustSn())) {
- throw new ImppBusiException(String.format("目视单【%s】条码【%s】与扫描条码【%s】,不匹配!", model.getSn(), workOrder.getCustSn(), detail.getBarcode()));
+ if (!Objects.equals(produceSn.getCustSn(), workOrder.getCustSn())) {
+ throw new ImppBusiException(String.format("目视单【%s】条码【%s】与扫描条码【%s】,不匹配!", detail.getVisualOrderNo(), workOrder.getCustSn(), model.getSn()));
}
//校验零件是否匹配
- if (!Objects.equals(detail.getPartNo(), workOrder.getPartNo())) {
- throw new ImppBusiException(String.format("目视单【%s】零件【%s】与发运单零件【%s】,不匹配!", model.getSn(), workOrder.getPartNo(), detail.getPartNo()));
+ if (!Objects.equals(produceSn.getPartNo(), workOrder.getPartNo())) {
+ throw new ImppBusiException(String.format("目视单【%s】零件【%s】与发运单零件【%s】,不匹配!", detail.getVisualOrderNo(), workOrder.getPartNo(), detail.getPartNo()));
}
return workOrder;
}
- private void checkShippingDetails(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup, MesProduceSn produceSn, MesShippingOrderManagementDetail detail) {
+
+ private MesWorkOrder getWorkOrder(MesSortShippingCheckModel model) {
+ //校验目视单是否已经扫描
+ if (model.getDetailList().stream().anyMatch(t -> !StringUtils.isEmpty(t.getVisualOrderNo()) && t.getVisualOrderNo().equals(model.getSn()))) {
+ throw new ImppBusiException(String.format("【%s】此目视单已经扫描过,请检查数据!", model.getSn()));
+ }
+ //查询工单
+ MesWorkOrder workOrder = mesWorkOrderExtService.getWorkOrder(model.getOrganizeCode(), model.getSn());
+ if (Objects.isNull(workOrder)) {
+ throw new ImppBusiException(String.format("目视单【%s】不存在,请检查数据!", model.getSn()));
+ }
+ //校验目视单状态
+ if (MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue() != workOrder.getWorkOrderStatus() || MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue() != workOrder.getQcStatus()) {
+ throw new ImppBusiException(String.format("目视单【%s】状态为【%s】质量状态为【%s】,不允许发运!", model.getSn(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus()), MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(workOrder.getQcStatus())));
+ }
+ return workOrder;
+ }
+
+ private void checkShippingDetails(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup, String partNo, MesShippingOrderManagementDetail detail) {
//校验发运单明细顺序
if (!Objects.isNull(shippingGroup) && !StringUtils.isEmpty(shippingGroup.getIsEnableShippingFailSafe()) && CommonEnumUtil.VALID == shippingGroup.getIsEnableShippingFailSafe()) {
Optional first = model.getDetailList().stream().filter(k -> k.getCustInfoSeq().compareTo(detail.getCustInfoSeq()) < 0 && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).findFirst();
@@ -135,10 +147,10 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin
//判断是否需要排序校验 默认排序则需要校验
if (!StringUtils.isEmpty(orderManagement.getScanSeqWay()) && orderManagement.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
//获取明细中最小的
- Optional minPartNo = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getBarcode()))
+ Optional minPartNo = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getBarcode()) && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER))
.min(Comparator.comparingLong(MesShippingOrderManagementDetail::getCustInfoSeq)).map(MesShippingOrderManagementDetail::getPartNo);
//若扫描的不是最小顺序 则报错
- if (minPartNo.isPresent() && !minPartNo.get().equals(produceSn.getPartNo())) {
+ if (minPartNo.isPresent() && !minPartNo.get().equals(partNo)) {
throw new ImppBusiException(String.format("【%s】此条码扫描顺序错误,请检查数据!", model.getSn()));
}
}
@@ -215,7 +227,7 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin
return mesShippingOrderManagementDetail;
}
- private void updateOrderManagementDetails(MesShippingOrderManagement orderManagement, MesShippingOrderManagementDetail detail, MesWorkOrder workOrder, String userInfo) {
+ private void updateOrderManagementDetails(MesShippingOrderManagement orderManagement, MesShippingOrderManagementDetail detail, MesWorkOrder workOrder,MesProduceSn produceSn, String userInfo) {
if (StringUtils.isEmpty(orderManagement.getCheckSeqCode())) {
detail.setIsScanFlg(MesCommonConstant.TRUE_INTEGER);
detail.setStatus(MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue());
@@ -232,14 +244,14 @@ public class MesShippingScanSnAndOrderStrategyServiceImpl implements IMesShippin
orderManagement.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(orderManagement, userInfo);
update(orderManagement);
-
- detail.setActualQty(1);
+ //条码格式(扫描目视单,扫描条码)
+ detail.setBarcode(new StringJoiner(MesPcnExtConstWords.COMMA).add(detail.getVisualOrderNo()).add(detail.getBarcode()).toString());
+ detail.setActualQty(MesPcnExtConstWords.ONE);
detail.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(detail, userInfo);
updateDetail(detail);
- MesProduceSn produceSn = getMesProduceSn(orderManagement.getOrganizeCode(), detail.getBarcode());
//内部条码更新条码状态
- if (!Objects.isNull(produceSn)) {
+ if (!Objects.isNull(produceSn.getId())) {
produceSn.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.SHIPPED.getValue());
produceSn.setSystemSyncStatus(CommonEnumUtil.FALSE);
ConvertBean.serviceModelUpdate(produceSn, userInfo);
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java
index febefba..f28dcf2 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java
@@ -93,7 +93,7 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr
//判断是否需要排序校验 默认排序则需要校验
if (!StringUtils.isEmpty(orderManagement.getScanSeqWay()) && orderManagement.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
//获取明细中最小的
- Optional minPartNo = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getBarcode()))
+ Optional minPartNo = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getBarcode()) && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER))
.min(Comparator.comparingLong(MesShippingOrderManagementDetail::getCustInfoSeq)).map(MesShippingOrderManagementDetail::getPartNo);
//若扫描的不是最小顺序 则报错
if (minPartNo.isPresent() && !minPartNo.get().equals(produceSn.getPartNo())) {
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java
index 9ba63e6..d669b57 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionNoSortModuleService.java
@@ -162,14 +162,14 @@ public class MesProductionNoSortModuleService extends BaseModuleService {
if (CollectionUtils.isEmpty(workOrderList)) {
StationKvBeanUtil.addStationKvBeanList(orderQtyKvBeans, new ArrayList<>(),
new StationKvBean(MesPcnExtConstWords.QTY, "工单计划数", MesPcnExtConstWords.ZERO_STR),
- new StationKvBean(MesPcnExtConstWords.COMPLATED_QTY, "工单完成数", MesPcnExtConstWords.ZERO_STR));
+ new StationKvBean(MesPcnExtConstWords.COMPLETE_QTY, "工单完成数", MesPcnExtConstWords.ZERO_STR));
} else {
Double qty = workOrderList.stream().map(MesWorkOrder::getQty).reduce((a, b) -> a + b).get();
Double complateQty = workOrderList.stream().map(MesWorkOrder::getCompleteQty).reduce((a, b) -> a + b).get();
StationKvBeanUtil.addStationKvBeanList(orderQtyKvBeans, new ArrayList<>(),
new StationKvBean(MesPcnExtConstWords.QTY, "工单计划数", qty.toString()),
- new StationKvBean(MesPcnExtConstWords.COMPLATED_QTY, "工单完成数", complateQty.toString()));
+ new StationKvBean(MesPcnExtConstWords.COMPLETE_QTY, "工单完成数", complateQty.toString()));
}
if (!CollectionUtils.isEmpty(productionPartContextList)) {
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java
index d2b9d71..e1786eb 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/MesProductionSortModuleService.java
@@ -159,7 +159,7 @@ public class MesProductionSortModuleService extends BaseModuleService {
}
MesQueueOrder queueOrder = getNewQueueOrder(reqBean);
- return Stream.of(queueOrder.getPartProdGroupCode()).collect(Collectors.toList());
+ return queueOrder == null ? null : Stream.of(queueOrder.getPartProdGroupCode()).collect(Collectors.toList());
}
private MesQueueOrder getNewQueueOrder(StationRequestBean reqBean) {
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionStatisticsService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionStatisticsService.java
index 80ea88f..2460337 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionStatisticsService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/station/function/MesFunctionProductionStatisticsService.java
@@ -104,14 +104,14 @@ public class MesFunctionProductionStatisticsService extends BaseSwsService imple
if (CollectionUtils.isEmpty(workOrderList)) {
StationKvBeanUtil.addStationKvBeanList(orderQtyKvBeans, new ArrayList<>(),
new StationKvBean(MesPcnExtConstWords.QTY, "工单计划数", 0 + ""),
- new StationKvBean(MesPcnExtConstWords.COMPLATED_QTY, "工单完成数", 0 + ""));
+ new StationKvBean(MesPcnExtConstWords.COMPLETE_QTY, "工单完成数", 0 + ""));
} else {
double qty = workOrderList.stream().map(MesWorkOrder::getQty).reduce((a, b) -> a + b).get();
double complateQty = workOrderList.stream().map(MesWorkOrder::getCompleteQty).reduce((a, b) -> a + b).get();
StationKvBeanUtil.addStationKvBeanList(orderQtyKvBeans, new ArrayList<>(),
new StationKvBean(MesPcnExtConstWords.QTY, "工单计划数", qty + ""),
- new StationKvBean(MesPcnExtConstWords.COMPLATED_QTY, "工单完成数", complateQty + ""));
+ new StationKvBean(MesPcnExtConstWords.COMPLETE_QTY, "工单完成数", complateQty + ""));
}
resultBean.setResultList(orderQtyKvBeans);
} else if (Objects.equal(MesExtEnumUtil.WORK_FILE_TYPE.PROD_VIDEO.getValue(), mesWorkCell.getIsShowMsg())) {
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java
index a6fd965..c2060e0 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblySaveStepService.java
@@ -179,8 +179,8 @@ public class MesAssemblySaveStepService extends BaseStepService {
private void saveWorkOrderAssembly(StationRequestBean reqBean, MesProductionAssemblyContext productionAssemblyContext) {
workOrderAssemblyRepository.updateByProperties(
- new String[]{MesPcnExtConstWords.ID},
- new Object[]{productionAssemblyContext.getSourceId()},
+ new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
+ new Object[]{productionAssemblyContext.getSourceId(), reqBean.getOrganizeCode()},
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.ASSEMBLY_STATUS},
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), productionAssemblyContext.getAssemblyStatus()});
}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultErrorHandleStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultErrorHandleStepService.java
index af34618..d49cf0c 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultErrorHandleStepService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductResultErrorHandleStepService.java
@@ -157,6 +157,7 @@ public class MesProductResultErrorHandleStepService extends BaseStepService {
model.setPart(mesPartSap);
model.setPartInspectionDetailList(Arrays.asList(mesPartInspectionDetail));
if (Objects.equal(MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_SCRAP.getValue(), result)) {
+ //TODO 有问题 需要修改条码质量状态
ncProcessingService.saveNc(model, reqBean.getOrganizeCode(), true);
} else {
MesPartInspectionInputModel inspectModel = new MesPartInspectionInputModel();
@@ -169,6 +170,7 @@ public class MesProductResultErrorHandleStepService extends BaseStepService {
inspectModel.setPartInspection(partInspection);
inspectModel.setShiftCode(mesProduceSn.getShiftCode());
inspectModel.setProductVersion(productVersion);
+ inspectModel.setUserInfo(reqBean.getUserInfo());
inputDefectRecordService.saveSusPartInspection(inspectModel, reqBean.getOrganizeCode());
}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java
index bc644cc..2dab440 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductionRecordGenerateStepService.java
@@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepSer
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionRecordService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
+import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
@@ -123,7 +124,7 @@ public class MesProductionRecordGenerateStepService extends BaseStepService {
MesProdRuleContext prodRuleContext = CollectionUtils.isEmpty(prMap) ? null : prMap.get(productionPsOutContext.getForeignKey());
MesProductionRecord productionRecord = new MesProductionRecord();
- BeanUtils.copyProperties(productionPsOutContext, productionRecord);
+ BeanUtils.copyProperties(productionPsOutContext, productionRecord, MesPcnExtConstWords.BASE_BEAN_FIELDS);
productionRecord.setMouldNo(mouldNo);
productionRecord.setEquipmentCode(cellEquipContext.getEquipmentCode());
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendCavityGroupParamsCmdStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendCavityGroupParamsCmdStepService.java
index 0d4ca2e..92ca612 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendCavityGroupParamsCmdStepService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesSendCavityGroupParamsCmdStepService.java
@@ -105,14 +105,14 @@ public class MesSendCavityGroupParamsCmdStepService extends BaseStepService {
for (MesCavityGroupDetailCfg mesCavityGroupDetailCfg : mesCavityGroupDetailCfgs) {
index ++;
// 获取加工参数
- DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
+ DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(mesCavityGroupDetailCfg.getId(), "sourceId", ddlPackBean);
List mesEquipmentProdParamCfgs = mesEquipmentProdParamCfgRepository.findByHqlWhere(ddlPackBean);
for (MesEquipmentProdParamCfg mesEquipmentProdParamCfg : mesEquipmentProdParamCfgs) {//
String strategyClass = getStrateClass(mesEquipmentProdParamCfg.getMatchRule());
AbstractWriteVariableService equipVariableRwExtService = ((AbstractWriteVariableService) SpringContextsUtil.getBean(strategyClass));
- DdlPackBean paramPackBean = DdlPackBean.getDdlPackBean();
+ DdlPackBean paramPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(mesEquipmentProdParamCfg.getEquipVariableId(), "id", paramPackBean);
MesEquipmentVariable mesEquipmentVariable = mesEquipmentVariableRepository.getByProperty(paramPackBean);
if (mesEquipmentVariable == null) {
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStepService.java
index 741da0a..5098e2d 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStepService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderQueueSaveStepService.java
@@ -67,8 +67,8 @@ public class MesWorkOrderQueueSaveStepService extends BaseStepService {
private void saveWorkOrderQueue(StationRequestBean reqBean, MesProductionPsInContext productionPsInContext) {
queueOrderRepository.updateByProperties(
- new String[]{MesPcnExtConstWords.ID},
- new Object[]{productionPsInContext.getRelateId()},
+ new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
+ new Object[]{productionPsInContext.getRelateId(), reqBean.getOrganizeCode()},
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.STATUS},
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue()});
}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveNosortStepService.java
index b9016de..cbfc373 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveNosortStepService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveNosortStepService.java
@@ -9,7 +9,6 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.mes.pcn.util.StringUtil;
-import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.MathOperation;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
@@ -126,8 +125,6 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService {
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), workOrder.getWorkOrderNo(), JSONObject.toJSONString(workOrder), calcCompleteQty, prodResult);
- entityManager.detach(workOrder);
-
//工单状态分 排序工单 和非排序工单; 现在必须是非排序工单
if (!MesExtEnumUtil.ORDER_STATUS.checkNosortAllowStatus(workOrder.getWorkOrderStatus()))
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息工单状态[%s]!", entry.getKey(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus())));
@@ -135,17 +132,16 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService {
if (!workOrder.getWorkCenterCode().equals(reqBean.getWorkCenterCode()))
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息所属生产线[%s]与当前生产线[%s]不一致!", entry.getKey(), workOrder.getWorkCenterCode(), reqBean.getWorkCenterCode()));
- List propertyNameList = new ArrayList<>();
+ Map propertyMap = new HashMap<>();
+
//修改完成数量
if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) > 0) {
- workOrder.setCompleteQty(MathOperation.add(workOrder.getCompleteQty(), calcCompleteQty));
- propertyNameList.add(MesPcnExtConstWords.COMPLATED_QTY);
+ propertyMap.put(MesPcnExtConstWords.COMPLETE_QTY, MathOperation.add(workOrder.getCompleteQty(), calcCompleteQty));
}
//修改未完成数量
if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) > 0 && workOrder.getUnCompleteQty().compareTo(new Double(0)) > 0 &&
MathOperation.compareTo(MathOperation.sub(workOrder.getUnCompleteQty(), new Double(calcCompleteQty)), new Double(0)) >= 0) {
- workOrder.setUnCompleteQty(MathOperation.sub(workOrder.getUnCompleteQty(), new Double(calcCompleteQty)));
- propertyNameList.add(MesPcnExtConstWords.UN_COMPLATED_QTY);
+ propertyMap.put(MesPcnExtConstWords.UN_COMPLETE_QTY, MathOperation.sub(workOrder.getUnCompleteQty(), new Double(calcCompleteQty)));
}
/**
@@ -155,43 +151,46 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService {
* 上下文中 已经按照工单分组了,因为有一模多腔问题
*/
-
if (!StringUtils.isEmpty(prodResult)) {
//可疑品
- boolean isSuspicious = MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue() == Integer.parseInt(prodResult);
- if (isSuspicious && !productionPsOutContextList.isEmpty()){
- int suspiciousQty = productionPsOutContextList.size();
- workOrder.setSuspiciousPartQty(MathOperation.add(workOrder.getSuspiciousPartQty(), new Double(suspiciousQty)));
- propertyNameList.add(MesPcnExtConstWords.SUSPICIOUS_PART_QTY);
+ if (Integer.valueOf(prodResult).compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()) == 0 && !CollectionUtils.isEmpty(productionPsOutContextList)){
+ propertyMap.put(MesPcnExtConstWords.SUSPICIOUS_PART_QTY, MathOperation.add(workOrder.getSuspiciousPartQty(), new Double(productionPsOutContextList.size())));
}
//报废数量
- boolean isScrap = MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue() == Integer.parseInt(prodResult);
- if (isScrap && !productionPsOutContextList.isEmpty()){
- int scrapQty = productionPsOutContextList.size();
- workOrder.setScrapPartQty(MathOperation.add(workOrder.getScrapPartQty(), new Double(scrapQty)));
- propertyNameList.add(MesPcnExtConstWords.SCRAP_PART_QTY);
+ if (Integer.valueOf(prodResult).compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()) == 0 && !CollectionUtils.isEmpty(productionPsOutContextList)){
+ propertyMap.put(MesPcnExtConstWords.SCRAP_PART_QTY, MathOperation.add(workOrder.getScrapPartQty(), new Double(productionPsOutContextList.size())));
}
}
if (MathOperation.compareTo(workOrder.getCompleteQty(), workOrder.getQty()) >= 0 && workOrder.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()) != 0) {
- workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
- propertyNameList.add(MesPcnExtConstWords.WORK_ORDER_STATUS);
+ propertyMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
} else if (workOrder.getCompleteQty() > 0 && workOrder.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()) {
- workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
- propertyNameList.add(MesPcnExtConstWords.WORK_ORDER_STATUS);
+ propertyMap.put(MesPcnExtConstWords.WORK_ORDER_STATUS, MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
}
- //如果数量都没有修改,不操作数据库
- if (!propertyNameList.isEmpty()) {
- ConvertBean.serviceModelUpdate(workOrder, reqBean.getUserInfo());
- workOrder.setModifyDatetime((new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()));
- workOrderExtService.update(workOrder);
- log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- UPDATE:{}",
- reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
- StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), workOrder.getWorkOrderNo(), JSONObject.toJSONString(workOrder));
+ if (CollectionUtils.isEmpty(propertyMap)) continue;
+
+ propertyMap.put(MesPcnExtConstWords.MODIFY_DATE_TIME, (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date()));
+ propertyMap.put(MesPcnExtConstWords.MODIFY_USER, reqBean.getUserInfo());
+
+ String[] propertyName = new String[propertyMap.size()];
+ Object[] propertyValue = new Object[propertyMap.size()];
+ Integer index = 0;
+ for (Map.Entry innerEntry : propertyMap.entrySet()) {
+ if (null == innerEntry) continue;
+ propertyName[index] = innerEntry.getKey();
+ propertyValue[index] = innerEntry.getValue();
+ index ++;
}
+
+ workOrderRepository.updateByProperties(new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, new Object[]{workOrder.getId(), reqBean.getOrganizeCode()}, propertyName, propertyValue);
+
+ log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- UPDATE:{}",
+ reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
+ StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), workOrder.getWorkOrderNo(), JSONObject.toJSONString(propertyMap));
}
}
}
+
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveSortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveSortStepService.java
index 66736b5..dfee367 100644
--- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveSortStepService.java
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveSortStepService.java
@@ -93,21 +93,21 @@ public class MesWorkOrderSaveSortStepService extends BaseStepService {
if (null == productionPartContext || StringUtils.isEmpty(productionPartContext.getForeignKey())) continue;
- Boolean isEndWorkCell = (StringUtils.isEmpty(workCell.getIsEndWorkCell()) || workCell.getIsEndWorkCell().compareTo(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) == 0) ? false : true;
+ Boolean isEndWorkCell = (!StringUtils.isEmpty(workCell.getIsEndWorkCell()) && workCell.getIsEndWorkCell().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) ? true : false;
if (!isEndWorkCell && productionPartContext.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()) == 0) continue;
if (!isEndWorkCell) {
workOrderRepository.updateByProperties(
- new String[]{MesPcnExtConstWords.ID},
- new Object[]{productionPartContext.getId()},
+ new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
+ new Object[]{productionPartContext.getId(), reqBean.getOrganizeCode()},
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.WORK_ORDER_STATUS, MesPcnExtConstWords.ONLINE_TIME},
new Object[]{reqBean.getUserInfo(), (new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue(), TimeTool.getNowTime(true)});
} else {
workOrderRepository.updateByProperties(
- new String[]{MesPcnExtConstWords.ID},
- new Object[]{productionPartContext.getId()},
- new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.WORK_ORDER_STATUS, MesPcnExtConstWords.COMPLATED_QTY, MesPcnExtConstWords.UN_COMPLATED_QTY, MesPcnExtConstWords.OFFLINE_TIME},
+ new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
+ new Object[]{productionPartContext.getId(), reqBean.getOrganizeCode()},
+ new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.WORK_ORDER_STATUS, MesPcnExtConstWords.COMPLETE_QTY, MesPcnExtConstWords.UN_COMPLETE_QTY, MesPcnExtConstWords.OFFLINE_TIME},
new Object[]{reqBean.getUserInfo(), (new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue(), new Double(1), new Double(0), TimeTool.getNowTime(true)});
}
diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/webservice/DcsForEquipmentServer.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/webservice/DcsForEquipmentServer.java
new file mode 100644
index 0000000..29a0a60
--- /dev/null
+++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/webservice/DcsForEquipmentServer.java
@@ -0,0 +1,50 @@
+package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.webservice;
+
+import cn.estsh.i3plus.ext.mes.pcn.apiservice.model.MesConsoleItemCodeExt;
+import cn.estsh.i3plus.ext.mes.pcn.apiservice.model.MesConsoleResultExt;
+import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.DcsForEquipmentServiceImpl;
+import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebService;
+
+@Component
+@WebService(targetNamespace = "http://tempuri.org/")
+public class DcsForEquipmentServer {
+ public static final Logger LOGGER = LoggerFactory.getLogger(DcsForEquipmentServer.class);
+ @WebMethod(action = "GetConsoleItemCodeExt", operationName = "GetConsoleItemCodeExt")
+ public String getConsoleItemCodeExt(@WebParam(name = "GetConsoleItemCodeExt") MesConsoleItemCodeExt mesConsoleItemCodeExt) {
+ DcsForEquipmentServiceImpl bean = (DcsForEquipmentServiceImpl) SpringContextsUtil.getBean("DcsForEquipmentServiceImpl");
+ String organizeCode = mesConsoleItemCodeExt.getOrganizeCode();
+ String custCode = mesConsoleItemCodeExt.getCustCode();
+ String assemblyLine = mesConsoleItemCodeExt.getAssemblyLine();
+ String location = mesConsoleItemCodeExt.getLocation();
+ String barcode = mesConsoleItemCodeExt.getBarcode();
+ String custPlantCode = mesConsoleItemCodeExt.getCustPlantCode();
+ return bean.doGetConsoleItemCode(organizeCode,barcode,custCode,custPlantCode,assemblyLine,location);
+ }
+
+// @WebMethod(action = "GetConsoleItemCodeExt", operationName = "GetConsoleItemCodeExt")
+// public String getConsoleItemCodeExt(@WebParam(name = "organizeCode") String organizeCode, @WebParam(name = "custCode") String custCode,@WebParam(name = "assemblyLine")String assemblyLine,@WebParam(name = "location")String location,@WebParam(name = "barcode")String barcode,@WebParam(name = "custPlantCode")String custPlantCode) {
+// DcsForEquipmentServiceImpl bean = (DcsForEquipmentServiceImpl) SpringContextsUtil.getBean("DcsForEquipmentServiceImpl");
+// return bean.doGetConsoleItemCode(organizeCode,barcode,custCode,custPlantCode,assemblyLine,location);
+// }
+
+
+ @WebMethod(action = "FillConsoleResultExt", operationName = "FillConsoleResultExt")
+ public String getConsoleItemCodeExt(@WebParam(name = "FillConsoleResultExt") MesConsoleResultExt mesConsoleResultExt) {
+ DcsForEquipmentServiceImpl bean = (DcsForEquipmentServiceImpl) SpringContextsUtil.getBean("DcsForEquipmentServiceImpl");
+ String organizeCode = mesConsoleResultExt.getOrganizeCode();
+ String custCode = mesConsoleResultExt.getCustCode();
+ String assemblyLine = mesConsoleResultExt.getAssemblyLine();
+ String location = mesConsoleResultExt.getLocation();
+ String barcode = mesConsoleResultExt.getBarcode();
+ String result = mesConsoleResultExt.getResult();
+ String partNo = mesConsoleResultExt.getPartNO();
+ return bean.doFillConsoleResultExt(organizeCode,barcode,partNo,result,assemblyLine,location,custCode);
+ }
+}
diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java
index 698ecfe..d48d55e 100644
--- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java
+++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/context/MesProductionAssemblyNosortContext.java
@@ -53,7 +53,7 @@ public class MesProductionAssemblyNosortContext extends MesProductionAssemblyCon
this.partNo = prodRuleContext.getOutPartNo();
if (StringUtils.isEmpty(this.routeSeq)) this.routeSeq = MesPcnExtConstWords.ZERO;
- if (StringUtils.isEmpty(this.isRepeat)) this.isRepeat = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
+ if (StringUtils.isEmpty(this.isRepeat) || this.isRepeat.compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) != 0) this.isRepeat = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue();
diff --git a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java
index 6576944..2f42e6a 100644
--- a/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java
+++ b/modules/i3plus-ext-mes-pcn-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pcn/pojo/util/MesPcnExtConstWords.java
@@ -98,9 +98,9 @@ public class MesPcnExtConstWords {
// 模具号
public static final String MOULD_NO = "mouldNo";
// 工单完成数
- public static final String COMPLATED_QTY = "complateQty";
+ public static final String COMPLETE_QTY = "completeQty";
// 工单未完成数
- public static final String UN_COMPLATED_QTY = "unCompleteQty";
+ public static final String UN_COMPLETE_QTY = "unCompleteQty";
// 工单可疑品数
public static final String SUSPICIOUS_PART_QTY = "suspiciousPartQty";
// 工单报废品数
diff --git a/pom.xml b/pom.xml
index 8a4dcfd..77012b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,18 @@
-
+
+
+ org.apache.cxf
+ cxf-spring-boot-starter-jaxws
+ 3.3.6
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
+
org.springframework
spring-web