From 0aa30108d694cefcd4bc506f1b97da6adf300f35 Mon Sep 17 00:00:00 2001 From: mengjiao <3338049200@qq,com> Date: Wed, 6 Nov 2024 14:40:21 +0800 Subject: [PATCH 1/8] =?UTF-8?q?wms=E4=BF=AE=E6=94=B92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OdsProcureOutOrderController.java | 9 + .../WmsOdsMateStorageNewsController.java | 6 + .../wms/mapper/OdsProcureOutOrderMapper.java | 2 + .../service/IOdsProcureOutOrderService.java | 2 + .../IWmsOdsMateStorageNewsService.java | 2 + .../impl/OdsProcureOrderServiceImpl.java | 155 +++++++++--------- .../impl/OdsProcureOutOrderServiceImpl.java | 7 + .../WmsOdsMateStorageNewsServiceImpl.java | 5 + .../impl/WmsProductPutServiceImpl.java | 3 - .../mapper/wms/OdsProcureOutOrderMapper.xml | 75 +++++++++ 10 files changed, 189 insertions(+), 77 deletions(-) diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java index 5537ed77c..1ea09b221 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/OdsProcureOutOrderController.java @@ -147,4 +147,13 @@ public class OdsProcureOutOrderController extends BaseController { List list = odsProcureOutOrderService.listReturnDY(odsProcureOutOrder); return success(list); } + + + //特殊出库 + @PostMapping("/listckTS") + public TableDataInfo listckTS( OdsProcureOutOrder odsProcureOutOrder) { + startPage(); + List list = odsProcureOutOrderService.listckTS(odsProcureOutOrder); + return getDataTable(list); + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsOdsMateStorageNewsController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsOdsMateStorageNewsController.java index 53555a0c4..76db48a43 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsOdsMateStorageNewsController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsOdsMateStorageNewsController.java @@ -111,4 +111,10 @@ public class WmsOdsMateStorageNewsController extends BaseController { List list = wmsOdsMateStorageNewsService.selectWmsOdsMateStorageNewslsList(wmsOdsMateStorageNews); return getDataTable(list); } + @GetMapping("/listWmsOdsMateStorageNews") + public TableDataInfo listWmsOdsMateStorageNews(WmsOdsMateStorageNews wmsOdsMateStorageNews) { + startPage(); + List list = wmsOdsMateStorageNewsService.listWmsOdsMateStorageNews(wmsOdsMateStorageNews); + return getDataTable(list); + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java index ecfc8a14f..c4feace5e 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOutOrderMapper.java @@ -151,4 +151,6 @@ public interface OdsProcureOutOrderMapper { List CKlist(OdsProcureOutOrder odsProcureOutOrder); void updateWMSOdsProcureOutOrdersapById(OdsProcureOutOrder order1); + + List listckTS(OdsProcureOutOrder odsProcureOutOrder); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java index a3fa683c6..350190342 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOutOrderService.java @@ -76,4 +76,6 @@ public interface IOdsProcureOutOrderService { List listReturnSC(OdsProcureOutOrder odsProcureOutOrder); List listReturnDY(OdsProcureOutOrder odsProcureOutOrder); + + List listckTS(OdsProcureOutOrder odsProcureOutOrder); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsOdsMateStorageNewsService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsOdsMateStorageNewsService.java index 281209ae1..921468e30 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsOdsMateStorageNewsService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IWmsOdsMateStorageNewsService.java @@ -62,4 +62,6 @@ public interface IWmsOdsMateStorageNewsService { String addBS(WmsOdsMateStorageNews wmsOdsMateStorageNews); List selectWmsOdsMateStorageNewslsList(WmsOdsMateStorageNews wmsOdsMateStorageNews); + + List listWmsOdsMateStorageNews(WmsOdsMateStorageNews wmsOdsMateStorageNews); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java index fd6e55936..1b4dd2682 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java @@ -2462,86 +2462,89 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { public String NewConMaterialOutSCNew(List orderList, List gzList) { //orderList标识卡这个要·注意重复过账,,gzList注意重复过账--就判断是否有对应标识卡未过账,如果未过账就进行过账 String result="操作成功"; - String factoryCode = orderList.get(0).getFactoryCode(); - DynamicDataSourceContextHolder.push("ds_" + factoryCode); - //我可以在这个循环里面 - for (OdsProcureOutOrder odsProcureOutOrder : - orderList) { - //领料单,物料编号,领料单批次,物料名称,托盘号,出库数量,库位号, - String produceCode= odsProcureOutOrder.getProduceCode();//生产领料单号 - String createBy= odsProcureOutOrder.getCreateBy();//操作人 - String mateOrderInSnId= odsProcureOutOrder.getMateOrderInSnId(); - String waCode= odsProcureOutOrder.getWaCode(); - String whCode= odsProcureOutOrder.getWhCode(); - String wlCode= odsProcureOutOrder.getWlCode(); - String sn= odsProcureOutOrder.getSn(); - String materialCode= odsProcureOutOrder.getMaterialCode(); - String materialDesc= odsProcureOutOrder.getMaterialDesc(); - BigDecimal amount= odsProcureOutOrder.getAmount();//数量 - String userDefined1= odsProcureOutOrder.getUserDefined1();//单位 - String userDefined2= odsProcureOutOrder.getUserDefined2();//批次 - //包材明细表 - WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectWmsOdsMateStorageNewsSnByMateOrderInSnIdk(mateOrderInSnId); - //wms_raw_mission_out--保存 - //ods_procure_out_order--修改 + if(orderList.size()>0){ + String factoryCode = orderList.get(0).getFactoryCode(); + DynamicDataSourceContextHolder.push("ds_" + factoryCode); + //我可以在这个循环里面 + for (OdsProcureOutOrder odsProcureOutOrder : + orderList) { + //领料单,物料编号,领料单批次,物料名称,托盘号,出库数量,库位号, + String produceCode= odsProcureOutOrder.getProduceCode();//生产领料单号 + String createBy= odsProcureOutOrder.getCreateBy();//操作人 + String mateOrderInSnId= odsProcureOutOrder.getMateOrderInSnId(); + String waCode= odsProcureOutOrder.getWaCode(); + String whCode= odsProcureOutOrder.getWhCode(); + String wlCode= odsProcureOutOrder.getWlCode(); + String sn= odsProcureOutOrder.getSn(); + String materialCode= odsProcureOutOrder.getMaterialCode(); + String materialDesc= odsProcureOutOrder.getMaterialDesc(); + BigDecimal amount= odsProcureOutOrder.getAmount();//数量 + String userDefined1= odsProcureOutOrder.getUserDefined1();//单位 + String userDefined2= odsProcureOutOrder.getUserDefined2();//批次 + //包材明细表 + WmsOdsMateStorageNewsSn wmsOdsMateStorageNewsSn = wmsOdsMateStorageNewsSnMapper.selectWmsOdsMateStorageNewsSnByMateOrderInSnIdk(mateOrderInSnId); + //wms_raw_mission_out--保存 + //ods_procure_out_order--修改 // WCSInventoryPlan wcsInventoryPlan = new WCSInventoryPlan(); // wcsInventoryPlan.setSku(odsProcureOutOrder.getMaterialCode()); - // WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectBaseProductByCode(wcsInventoryPlan); - OdsProcureOutOrder order = new OdsProcureOutOrder(); - order.setProduceCode(produceCode);//领料单 - order.setMaterialCode(materialCode);// - order.setMaterialDesc(materialDesc); - order.setUserDefined1(userDefined2);//批次 - order.setUserDefined2(whCode); - order.setUserDefined3(wlCode); - order.setSn(sn); - order.setPlanNumber(amount); - order.setLocCode(waCode);//库区 - order.setID(IdUtils.fastSimpleUUID()); - order.setUnit(userDefined1); - order.setFactoryCode(factoryCode); - order.setActive("1"); - order.setCreateBy(createBy); - order.setCreateDate(new Date()); - OdsProcureOutOrder odsProcureOutOrder1=new OdsProcureOutOrder(); - odsProcureOutOrder1.setProduceCode(produceCode); - odsProcureOutOrder1.setMaterialCode(materialCode); - List odsProcureOutOrders = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrder(odsProcureOutOrder1); - //包材出库单----会有特殊的那种二次过账的单子--就看前端会不会传对应的标识卡了 - OdsProcureOutOrder order1= odsProcureOutOrders.get(0); - order.setUserDefined4(order1.getUserDefined4()); - //出库明细 - odsProcureOutOrderMapper.insertWmsRawMissionOut(order); - //BigDecimal sapNumber =order1.getSapNumber(); - BigDecimal realityNumber1 = order1.getOutNumber();//累出库数 - BigDecimal realityNumber = order1.getPlanNumber();//计划 - BigDecimal planNumber = amount;//本次实际数量 - BigDecimal tem = realityNumber1.add(planNumber); - if (tem.compareTo(realityNumber)>= 0) { - order1.setOrderStatus("3");//3是满足出库数量 - } else { - order1.setOrderStatus("2"); - } - order1.setOutNumber(tem);//这样的话,就可以用已经过账的数量来计算要过账的数量,用出库数量减去已经过账的数量,就是要过账的数量,只要不为0,就可以进行 + // WmsOdsMateStorageNews wmsOdsMateStorageNews = wmsOdsMateStorageNewsMapper.selectBaseProductByCode(wcsInventoryPlan); + OdsProcureOutOrder order = new OdsProcureOutOrder(); + order.setProduceCode(produceCode);//领料单 + order.setMaterialCode(materialCode);// + order.setMaterialDesc(materialDesc); + order.setUserDefined1(userDefined2);//批次 + order.setUserDefined2(whCode); + order.setUserDefined3(wlCode); + order.setSn(sn); + order.setPlanNumber(amount); + order.setLocCode(waCode);//库区 + order.setID(IdUtils.fastSimpleUUID()); + order.setUnit(userDefined1); + order.setFactoryCode(factoryCode); + order.setActive("1"); + order.setCreateBy(createBy); + order.setCreateDate(new Date()); + OdsProcureOutOrder odsProcureOutOrder1=new OdsProcureOutOrder(); + odsProcureOutOrder1.setProduceCode(produceCode); + odsProcureOutOrder1.setMaterialCode(materialCode); + List odsProcureOutOrders = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrder(odsProcureOutOrder1); + //包材出库单----会有特殊的那种二次过账的单子--就看前端会不会传对应的标识卡了 + OdsProcureOutOrder order1= odsProcureOutOrders.get(0); + order.setUserDefined4(order1.getUserDefined4()); + //出库明细 + odsProcureOutOrderMapper.insertWmsRawMissionOut(order); + //BigDecimal sapNumber =order1.getSapNumber(); + BigDecimal realityNumber1 = order1.getOutNumber();//累出库数 + BigDecimal realityNumber = order1.getPlanNumber();//计划 + BigDecimal planNumber = amount;//本次实际数量 + BigDecimal tem = realityNumber1.add(planNumber); + if (tem.compareTo(realityNumber)>= 0) { + order1.setOrderStatus("3");//3是满足出库数量 + } else { + order1.setOrderStatus("2"); + } + order1.setOutNumber(tem);//这样的话,就可以用已经过账的数量来计算要过账的数量,用出库数量减去已经过账的数量,就是要过账的数量,只要不为0,就可以进行 // order1.setSapNumber(sapNumber.add(planNumber));//原本的过账数量 - odsProcureOutOrderMapper.updateWmsOdsProcureOutOrder(order1);//订单修改--会超 - //明细 + odsProcureOutOrderMapper.updateWmsOdsProcureOutOrder(order1);//订单修改--会超 + //明细 // BigDecimal temk= wmsOdsMateStorageNewsSn.getAmount().subtract(amount); - wmsOdsMateStorageNewsSn.setOutNumber(amount); - wmsOdsMateStorageNewsSn.setLastModifiedBy(createBy); - wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSnAddoutNumber(wmsOdsMateStorageNewsSn);//库存明细--包材库存 - WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews(); - wmsOdsEmStorageNews.setWhCode(wmsOdsMateStorageNewsSn.getWhCode());//仓库编码 - wmsOdsEmStorageNews.setWlCode(wmsOdsMateStorageNewsSn.getWlCode());//库位编码 - wmsOdsEmStorageNews.setWaCode(wmsOdsMateStorageNewsSn.getWaCode()); - wmsOdsEmStorageNews.setProductBatch(wmsOdsMateStorageNewsSn.getUserDefined2()); - wmsOdsEmStorageNews.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode()); - wmsOdsEmStorageNews.setAmount(odsProcureOutOrder.getPlanNumber());//库存 - wmsOdsEmStorageNews.setLastModifiedBy(createBy); - wmsOdsMateStorageNewsSnMapper.updatekdd(wmsOdsEmStorageNews);//库存调整 + wmsOdsMateStorageNewsSn.setOutNumber(amount); + wmsOdsMateStorageNewsSn.setLastModifiedBy(createBy); + wmsOdsMateStorageNewsSnMapper.updateWmsOdsMateStorageNewsSnAddoutNumber(wmsOdsMateStorageNewsSn);//库存明细--包材库存 + WmsOdsEmStorageNews wmsOdsEmStorageNews = new WmsOdsEmStorageNews(); + wmsOdsEmStorageNews.setWhCode(wmsOdsMateStorageNewsSn.getWhCode());//仓库编码 + wmsOdsEmStorageNews.setWlCode(wmsOdsMateStorageNewsSn.getWlCode());//库位编码 + wmsOdsEmStorageNews.setWaCode(wmsOdsMateStorageNewsSn.getWaCode()); + wmsOdsEmStorageNews.setProductBatch(wmsOdsMateStorageNewsSn.getUserDefined2()); + wmsOdsEmStorageNews.setMaterialCode(wmsOdsMateStorageNewsSn.getMaterialCode()); + wmsOdsEmStorageNews.setAmount(odsProcureOutOrder.getPlanNumber());//库存 + wmsOdsEmStorageNews.setLastModifiedBy(createBy); + wmsOdsMateStorageNewsSnMapper.updatekdd(wmsOdsEmStorageNews);//库存调整 + } + // } - // + OdsProcureOutOrder order=new OdsProcureOutOrder(); List orderList1 = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrderByOrderStatus(order); @@ -2550,6 +2553,10 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { OutboundPostingzcSAPGY(orderList1); } if (gzList.size()>0) { + for (OdsProcureOutOrder order1: + gzList) { + System.out.print("---------"+order1.getID()); + } OutboundPostingzcSAPGY(gzList); // List odsProcureOutOrders = odsProcureOutOrderMapper.selectWmsOdsProcureOutOrderByIDs(gzList); // if (odsProcureOutOrders.size()>0){ diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java index 645862174..22b182444 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOutOrderServiceImpl.java @@ -241,4 +241,11 @@ public class OdsProcureOutOrderServiceImpl implements IOdsProcureOutOrderService List orderList = odsProcureOutOrderMapper.selectOdsProcureReturnOrderListZC(odsProcureOutOrder); return orderList; } + //特殊出库 + @Override + @DS("#header.poolName") + public List listckTS(OdsProcureOutOrder odsProcureOutOrder) { + List orderList = odsProcureOutOrderMapper.listckTS(odsProcureOutOrder); + return orderList; + } } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsOdsMateStorageNewsServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsOdsMateStorageNewsServiceImpl.java index 49a7d28b2..a34ff4c56 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsOdsMateStorageNewsServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsOdsMateStorageNewsServiceImpl.java @@ -212,6 +212,11 @@ public class WmsOdsMateStorageNewsServiceImpl implements IWmsOdsMateStorageNewsS return wmsOdsMateStorageNewsMapper.selectWmsOdsMateStorageNewslsList(wmsOdsMateStorageNews); } + @Override + public List listWmsOdsMateStorageNews(WmsOdsMateStorageNews wmsOdsMateStorageNews) { + return null; + } + public String dayin( List orderList) { // 定义请求的URL地址 String url = dayinUrl1; diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java index e10cea4f8..d83c9614b 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java @@ -480,10 +480,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { wmsProductPutRecords.setCreateBy(SecurityUtils.getUsername()); wmsProductPutRecords.setCreateTime(new Date()); wmsProductPutRecordsMapper.insertWmsProductPutRecords(wmsProductPutRecords); - - WmsFpStorageNews wmsFpStorageNews = new WmsFpStorageNews(); - wmsFpStorageNews.setWhCode(mesReportWork.getWhCode());//仓库编码 // wmsFpStorageNews.setWlCode(mesReportWork.getWlCode()); wmsFpStorageNews.setStorageType("成品"); diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml index b2b837f95..af5b5f935 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOutOrderMapper.xml @@ -1521,4 +1521,79 @@ set Sap_Number = #{order.sapNumber} where ID = #{order.ID} + From 0284c08961db9aa58c48953e80f2dd6d011a3365 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=83=E6=B0=94=E6=BB=A1=E6=BB=A1=28jgy=29?= Date: Wed, 6 Nov 2024 15:50:56 +0800 Subject: [PATCH 2/8] =?UTF-8?q?2024-11-06=20MES+sys=20API+Device=20?= =?UTF-8?q?=E4=B8=89=E4=B8=AA=E6=A8=A1=E5=9D=97=20=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E5=B7=A5=E5=8D=95=E5=88=87=E7=BA=BF=E3=80=81=E5=88=87=E7=BA=BF?= =?UTF-8?q?=E8=B0=83=E6=8B=A8=E4=BA=A7=E7=94=9F=E6=96=B0=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E7=82=B9=E6=A3=80=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../op/system/api/RemoteDeviceService.java | 5 + .../system/api/domain/device/EquPlanDTO.java | 633 ++++++++++++++++++ .../factory/RemoteDeviceFallbackFactory.java | 5 + .../controller/DeviceTaskController.java | 15 + .../op/device/service/IDeviceTaskService.java | 5 +- .../service/impl/DeviceTaskServiceImpl.java | 132 +++- .../plan/mapper/ProOrderWorkorderMapper.java | 4 + .../impl/ProOrderWorkorderServiceImpl.java | 82 ++- .../mapper/plan/ProOrderWorkorderMapper.xml | 14 + 9 files changed, 878 insertions(+), 17 deletions(-) create mode 100644 op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquPlanDTO.java diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java index 95aa6590d..2a7f15b14 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java @@ -3,6 +3,7 @@ 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.DataSourcePropertyDTO; +import com.op.system.api.domain.device.EquPlanDTO; import com.op.system.api.factory.RemoteDeviceFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -41,4 +42,8 @@ public interface RemoteDeviceService { @PostMapping("/deviceTask/removeDatasource") public R removeDatasource(@RequestBody DataSourcePropertyDTO dataSourceProperty); + + //切线后创建当日新的点检工单 + @PostMapping("/deviceTask/createSpotCheckWorkOrder") + public R createSpotCheckWorkOrder(@RequestBody EquPlanDTO equPlanDTO); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquPlanDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquPlanDTO.java new file mode 100644 index 000000000..4c0efaabd --- /dev/null +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquPlanDTO.java @@ -0,0 +1,633 @@ +package com.op.system.api.domain.device; + +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.util.Date; +import java.util.List; + +/** + * 计划对象 equ_plan + * + * @author Open Platform + * @date 2023-10-16 + */ +public class EquPlanDTO extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String planId; + + /** + * 计划编码 + */ + @Excel(name = "计划编码") + private String planCode; + + /** + * 计划名称 + */ + @Excel(name = "计划名称") + private String planName; + + /** + * 车间 + */ + @Excel(name = "车间编码") + private String planWorkshop; + + /** + * 产线 + */ + private String planProdLine; + + /** + * 设备名称 + */ + private String equipmentName; + + /** + * 设备编码 + */ + private String equipmentCode; + + /** + * 循环周期 + */ + @Excel(name = "循环周期") + private String planLoop; + + /** + * 循环周期类型 + */ + @Excel(name = "循环周期类型") + private String planLoopType; + + /** + * 循环执行时间开始 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "循环执行时间开始", width = 30, dateFormat = "yyyy-MM-dd") + private Date planLoopStart; + + /** + * 循环执行时间结束 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "循环执行时间结束", width = 30, dateFormat = "yyyy-MM-dd") + private Date planLoopEnd; + + /** + * 巡检人员 + */ + private String planPerson; + + /** + * 计划状态 + */ + @Excel(name = "计划状态") + private String planStatus; + + /** + * 是否可生产-限制 + */ + @Excel(name = "是否可生产-限制") + private String planRestrict; + + /** + * 维护类型 + */ + private String planType; + + /** + * 是否委外 + */ + private String planOutsource; + + /** + * 委外工单编码 + */ + @Excel(name = "委外工单编码") + private String workCode; + + /** + * 工厂 + */ + @Excel(name = "工厂") + private String factoryCode; + + /** + * 备用字段1 + */ + private String attr1; + + /** + * 备用字段2 + */ + private String attr2; + + /** + * 备用字段3 + */ + private String attr3; + + /** + * 删除标志 + */ + private String delFlag; + + // 创建日期范围list + private List createTimeArray; + + // 更新日期范围list + private List updateTimeArray; + + // 更新日期开始 + private String updateTimeStart; + + // 更新日期结束 + private String updateTimeEnd; + + // 创建日期开始 + private String createTimeStart; + + // 创建日期结束 + private String createTimeEnd; + + private List planTimeArray; + + private List personListVO; + + private String workCenterName; + + // 保养类型 + @Excel(name = "保养类型") + private String upkeep; + + // 计划保养时间计算规则 + private String calculationRule; + + // 是否停机保养 + @Excel(name = "是否停机保养") + private String shutDown; + private String planEquId; + + private List loopStartArray; + + private Date loopStart; + + private Date loopEnd; + + private List loopEndArray; + + private Date loopEndArrayStart; + + private Date getLoopEndArrayEnd; + + @Excel(name = "委外人员") + private String workPerson; + + @Excel(name = "委外单位") + private String workOutsourcingUnit; + + @Excel(name = "联系方式") + private String workConnection; + + @Excel(name = "委外原因") + private String workReason; + + //jgy 新增 生产线体编码 每天生成线体信息的时候只生成计划生产的 + private String lineCode; + private List lineCodes; + private String workOrderCode;//工单号 + private String changeLineType;//切线类型 + + public String getWorkOutsourcingUnit() { + return workOutsourcingUnit; + } + + public void setWorkOutsourcingUnit(String workOutsourcingUnit) { + this.workOutsourcingUnit = workOutsourcingUnit; + } + + public String getWorkConnection() { + return workConnection; + } + + public void setWorkConnection(String workConnection) { + this.workConnection = workConnection; + } + + public String getWorkReason() { + return workReason; + } + + public void setWorkReason(String workReason) { + this.workReason = workReason; + } + + public String getWorkPerson() { + return workPerson; + } + + public void setWorkPerson(String workPerson) { + this.workPerson = workPerson; + } + + public List getLoopEndArray() { + return loopEndArray; + } + + public void setLoopEndArray(List loopEndArray) { + this.loopEndArray = loopEndArray; + } + + public Date getLoopEndArrayStart() { + return loopEndArrayStart; + } + + public void setLoopEndArrayStart(Date loopEndArrayStart) { + this.loopEndArrayStart = loopEndArrayStart; + } + + public Date getGetLoopEndArrayEnd() { + return getLoopEndArrayEnd; + } + + public void setGetLoopEndArrayEnd(Date getLoopEndArrayEnd) { + this.getLoopEndArrayEnd = getLoopEndArrayEnd; + } + + public Date getLoopEnd() { + return loopEnd; + } + + public void setLoopEnd(Date loopEnd) { + this.loopEnd = loopEnd; + } + + public Date getLoopStart() { + return loopStart; + } + + public void setLoopStart(Date loopStart) { + this.loopStart = loopStart; + } + + public List getLoopStartArray() { + return loopStartArray; + } + + public void setLoopStartArray(List loopStartArray) { + this.loopStartArray = loopStartArray; + } + + public String getPlanEquId() { + return planEquId; + } + + public void setPlanEquId(String planEquId) { + this.planEquId = planEquId; + } + + public String getUpkeep() { + return upkeep; + } + + public void setUpkeep(String upkeep) { + this.upkeep = upkeep; + } + + public String getCalculationRule() { + return calculationRule; + } + + public void setCalculationRule(String calculationRule) { + this.calculationRule = calculationRule; + } + + public String getShutDown() { + return shutDown; + } + + public void setShutDown(String shutDown) { + this.shutDown = shutDown; + } + + public String getWorkCenterName() { + return workCenterName; + } + + public void setWorkCenterName(String workCenterName) { + this.workCenterName = workCenterName; + } + + public List getPersonListVO() { + return personListVO; + } + + public void setPersonListVO(List personListVO) { + this.personListVO = personListVO; + } + + public List getPlanTimeArray() { + return planTimeArray; + } + + public void setPlanTimeArray(List planTimeArray) { + this.planTimeArray = planTimeArray; + } + + public List getCreateTimeArray() { + return createTimeArray; + } + + public void setCreateTimeArray(List createTimeArray) { + this.createTimeArray = createTimeArray; + } + + public List getUpdateTimeArray() { + return updateTimeArray; + } + + public void setUpdateTimeArray(List updateTimeArray) { + this.updateTimeArray = updateTimeArray; + } + + public String getUpdateTimeStart() { + return updateTimeStart; + } + + public void setUpdateTimeStart(String updateTimeStart) { + this.updateTimeStart = updateTimeStart; + } + + public String getUpdateTimeEnd() { + return updateTimeEnd; + } + + public void setUpdateTimeEnd(String updateTimeEnd) { + this.updateTimeEnd = updateTimeEnd; + } + + 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 void setPlanId(String planId) { + this.planId = planId; + } + + public String getPlanId() { + return planId; + } + + public void setPlanCode(String planCode) { + this.planCode = planCode; + } + + public String getPlanCode() { + return planCode; + } + + public void setPlanName(String planName) { + this.planName = planName; + } + + public String getPlanName() { + return planName; + } + + public void setPlanWorkshop(String planWorkshop) { + this.planWorkshop = planWorkshop; + } + + public String getPlanWorkshop() { + return planWorkshop; + } + + public void setPlanProdLine(String planProdLine) { + this.planProdLine = planProdLine; + } + + public String getPlanProdLine() { + return planProdLine; + } + + public void setEquipmentName(String equipmentName) { + this.equipmentName = equipmentName; + } + + public String getEquipmentName() { + return equipmentName; + } + + public void setEquipmentCode(String equipmentCode) { + this.equipmentCode = equipmentCode; + } + + public String getEquipmentCode() { + return equipmentCode; + } + + public void setPlanLoop(String planLoop) { + this.planLoop = planLoop; + } + + public String getPlanLoop() { + return planLoop; + } + + public void setPlanLoopType(String planLoopType) { + this.planLoopType = planLoopType; + } + + public String getPlanLoopType() { + return planLoopType; + } + + public void setPlanLoopStart(Date planLoopStart) { + this.planLoopStart = planLoopStart; + } + + public Date getPlanLoopStart() { + return planLoopStart; + } + + public void setPlanLoopEnd(Date planLoopEnd) { + this.planLoopEnd = planLoopEnd; + } + + public Date getPlanLoopEnd() { + return planLoopEnd; + } + + public void setPlanPerson(String planPerson) { + this.planPerson = planPerson; + } + + public String getPlanPerson() { + return planPerson; + } + + public void setPlanStatus(String planStatus) { + this.planStatus = planStatus; + } + + public String getPlanStatus() { + return planStatus; + } + + public void setPlanRestrict(String planRestrict) { + this.planRestrict = planRestrict; + } + + public String getPlanRestrict() { + return planRestrict; + } + + public void setPlanType(String planType) { + this.planType = planType; + } + + public String getPlanType() { + return planType; + } + + public void setPlanOutsource(String planOutsource) { + this.planOutsource = planOutsource; + } + + public String getPlanOutsource() { + return planOutsource; + } + + public void setWorkCode(String workCode) { + this.workCode = workCode; + } + + public String getWorkCode() { + return workCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + public String getFactoryCode() { + return factoryCode; + } + + 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 setDelFlag(String delFlag) { + this.delFlag = delFlag; + } + + public String getDelFlag() { + return delFlag; + } + + public void setLineCode(String lineCode) { + this.lineCode = lineCode; + } + + public String getLineCode() { + return lineCode; + } + + public void setLineCodes(List lineCodes) { + this.lineCodes = lineCodes; + } + + public List getLineCodes() { + return lineCodes; + } + + public void setWorkOrderCode(String workOrderCode) { + this.workOrderCode = workOrderCode; + } + + public String getWorkOrderCode() { + return workOrderCode; + } + + public void setChangeLineType(String changeLineType) { + this.changeLineType = changeLineType; + } + + public String getChangeLineType() { + return changeLineType; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("planId", getPlanId()) + .append("planCode", getPlanCode()) + .append("planName", getPlanName()) + .append("planWorkshop", getPlanWorkshop()) + .append("planProdLine", getPlanProdLine()) + .append("equipmentName", getEquipmentName()) + .append("equipmentCode", getEquipmentCode()) + .append("planLoop", getPlanLoop()) + .append("planLoopType", getPlanLoopType()) + .append("planLoopStart", getPlanLoopStart()) + .append("planLoopEnd", getPlanLoopEnd()) + .append("planPerson", getPlanPerson()) + .append("planStatus", getPlanStatus()) + .append("planRestrict", getPlanRestrict()) + .append("planType", getPlanType()) + .append("planOutsource", getPlanOutsource()) + .append("workCode", getWorkCode()) + .append("factoryCode", getFactoryCode()) + .append("attr1", getAttr1()) + .append("attr2", getAttr2()) + .append("attr3", getAttr3()) + .append("delFlag", getDelFlag()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java index 866b659c3..f7d224d54 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java @@ -57,6 +57,11 @@ public class RemoteDeviceFallbackFactory implements FallbackFactory addSpotCheckTask = new ArrayList<>(); + /** * 根据点检计划生成点检任务 **/ @@ -263,6 +280,100 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { logger.info("++++++++++++" + poolName + "++++点检结束++++++++++"); } + //切线后 创建点检工单 + public AjaxResult createSpotCheckWorkOrder(com.op.system.api.domain.device.EquPlanDTO equPlanDTO) { + DynamicDataSourceContextHolder.push(equPlanDTO.getFactoryCode());// 这是数据源的key + logger.info(equPlanDTO.getFactoryCode() + "工厂切线接口传输参数:" + JSONArray.toJSONString(equPlanDTO)); + DynamicDataSourceContextHolder.push(equPlanDTO.getFactoryCode());// 这是数据源的key + EquPlan equPlan = new EquPlan(); + equPlan.setPlanType("spotInspection"); + List plans = deviceTaskMapper.getPlans(equPlan);//所有的 + List changeLineCodeList = equPlanDTO.getLineCodes();//切线后的实际传过来的要新增的产线信息 + List addProducePlans = new ArrayList<>();//切线后,真正能生成的生产线 下面的设备的点检计划 + List addProduceLine = new ArrayList<>();//真正能生成的切线生产线 + + if(!CollectionUtils.isEmpty(changeLineCodeList) && !CollectionUtils.isEmpty(plans)){ + for(String lineCode : changeLineCodeList){ + for(EquPlan plan : plans){ + if(!StringUtils.isBlank(plan.getLineCode())){ + if(plan.getLineCode().equals(lineCode)){ + addProducePlans.add(plan); + logger.info(equPlanDTO.getFactoryCode() + "工厂切线后新生成计划信息:" + JSONArray.toJSONString(plan)); + addProduceLine.add(lineCode); + } + } + } + } + } + addProduceLine = addProduceLine.stream().distinct().collect(Collectors.toList()); + logger.info(equPlanDTO.getFactoryCode() + "工厂切线后新生成产线:" + JSONArray.toJSONString(addProduceLine)); + addSpotCheckTask = new ArrayList<>(); + + for (EquPlan plan : addProducePlans) { + EquOrder hasTask = deviceTaskMapper.getNewTaskOrder(plan); + if (hasTask == null || Integer.parseInt(plan.getPlanLoop()) <= hasTask.getDays() || checkHourTask(hasTask, plan)) { + //生成点检计划 + int m = this.createOrderPlan(plan); + if (m == 0) { + error("equ_order相关添加失败"); + return error(); + }else{ + + } + } + } + + logger.info("++++++++++++" + equPlanDTO.getFactoryCode() + "++++切线后创建微信提醒开始++++++++++"); + this.spotCheckSendWeChat(addProduceLine,equPlanDTO); + logger.info("++++++++++++" + equPlanDTO.getFactoryCode() + "++++切线后创建微信提醒结束++++++++++"); + logger.info("++++++++++++" + equPlanDTO.getFactoryCode() + "++++切线后创建点检工单流程结束++++++++++"); + return success(); + } + + private void spotCheckSendWeChat(List addProduceLine, EquPlanDTO equPlanDTO) { + //发企业微信--------------------开始(跟班组有关) + SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式 + SysNoticeGroup noticeQo = new SysNoticeGroup(); + noticeQo.setNoticeId(24L); //id写死了? + List notices = equRepairOrderMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + List wecharts = new ArrayList<>(); + List userCodes = notices.stream() + .map(SysNoticeGroup::getUserCode) + .collect(Collectors.toList()); + for (SysNoticeGroup noticeDto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticeDto.getWxId()); + String contentInfo = noticeDto.getNoticeContent(); + + //在前端填的时候,需要判空!!!!!! + contentInfo = contentInfo + .replace("${n}", "\n") + .replace("${productLineCode}", addProduceLine + "")//产线 + .replace("${changeLineType}", equPlanDTO.getChangeLineType())//切线类型 + .replace("${orderCode}", addSpotCheckTask + "")//点检工单号 + .replace("${workOrderCode}", equPlanDTO.getWorkOrderCode());//工单号 + + //替换标签 + Pattern p= Pattern.compile("<[^>]+>"); + Matcher m = p.matcher(contentInfo); + contentInfo = m.replaceAll(""); + + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info(equPlanDTO.getChangeLineType()+ "后,企业微信提醒维修请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + new Thread(() -> { + AjaxResult wxResult = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("企业微信返回结果:" + JSONObject.toJSONString(wxResult)); + }).start(); + + } + logger.info("企业微信发送维修信息成功!"); + } + } + public void createPatrolCheckPlanFunc(String poolName) { DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key /**equ_plan equ_plan_equ**/ @@ -345,6 +456,7 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { /**equ_order**/ sce = equOrderMapper.insertEquOrder(order); + addSpotCheckTask.add(orderCode);//新增点检任务 System.out.println(plan.getPlanCode() + "========equ_order:" + sce); /**equ_plan_equ_spare->equ_spare_apply*************************************************************/ EquPlanEquSpare equPlanEquSpare = new EquPlanEquSpare(); @@ -564,17 +676,11 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { List produceLine = new ArrayList<>(); for(String str : planProduceLine){ - str = str.substring(1, str.length() - 1); - String[] subArrays = str.split("],\\["); - for (String subArrayStr : subArrays) { - subArrayStr = subArrayStr.substring(1, subArrayStr.length() - 1); - String[] parts = subArrayStr.split("\",\""); - for (int i = 1 ; i < parts.length ; i++) { - if(i == parts.length - 1){ - planProduceLineCode.add(parts[i].replaceAll("\"", "")); - }else{ - planProduceLineCode.add(parts[i]); - } + JSONArray array = JSONArray.parseArray(str); + for (int i = 0; i < array.size(); i++) { + JSONArray subArray = (JSONArray) array.get(i); + for (int j = 1; j < subArray.size(); j++) { + planProduceLineCode.add(subArray.get(j).toString()); } } } @@ -595,8 +701,8 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { } produceLine = produceLine.stream().distinct().collect(Collectors.toList()); - logger.info(poolName + "工厂今日生成的产线:" + JSONArray.toJSONString(produceLine)); - logger.info(poolName + "工厂返回生成今日生产的产线点检计划信息:" + JSONArray.toJSONString(returnPlanList)); + logger.info("工厂:" + poolName + ",时间:" + DateUtils.getDate() + ",今日生产的产线:" + JSONArray.toJSONString(produceLine)); + logger.info("工厂:" + poolName + ",时间:" + DateUtils.getDate() + "凌晨,返回今日生成的点检计划信息:" + JSONArray.toJSONString(returnPlanList)); return returnPlanList; } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java index 6bdac342b..7e538326d 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java @@ -260,5 +260,9 @@ public interface ProOrderWorkorderMapper { List getBatchList(String workorderId); int bpAddBatch(@Param("list") List orders); + + String getPreviousLineCode(String workorderId);//查询之前的产线 + + String getPlanLineCodes(String workorderId); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index 70055aa01..0011ea358 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -21,8 +21,9 @@ import com.op.plan.domain.dto.SplitOrderDTO; import com.op.plan.domain.vo.CascaderDTO; import com.op.plan.mapper.*; import com.op.plan.service.IProOrderWorkorderService; +import com.op.system.api.RemoteDeviceService; import com.op.system.api.RemoteSapService; -import com.op.system.api.domain.SysSapLog; +import com.op.system.api.domain.device.EquPlanDTO; import com.op.system.api.domain.dto.MesPrepareDTO; import com.op.system.api.domain.dto.MesPrepareDetailDTO; import com.op.system.api.domain.sap.*; @@ -73,6 +74,9 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { @Autowired private ProWhiteOrderMapper proWhiteOrderMapper; + @Autowired + private RemoteDeviceService remoteDeviceService; + /** * 查询生产工单 * @@ -926,6 +930,9 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { @DS("#header.poolName") @Transactional public AjaxResult subChangeWorkOrderPro(SplitOrderDTO splitOrderDTO) { + //jgy 设备新增 + String planLineCodes = proOrderWorkorderMapper.getPlanLineCodes(splitOrderDTO.getProOrderWorkorder().getWorkorderId());//查询之前计划的产线范围 + // 获得子工单对象——(这里没有用BeanUtils是因为若依与这个冲突造成死循环得到错误的结果) ProOrderWorkorder proWorkOrder = splitOrderDTO.getProOrderWorkorder(); @@ -1095,10 +1102,14 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { run = false; } } + + /*************************************设备模块 - 判断是否要生成新的点检工单开始************************************/ + String changeLineType = "工单切线"; + this.checkWhetherGenerateNewWorkOrder(splitOrderDTO , planLineCodes , changeLineType); + /*************************************设备模块 - 判断是否要生成新的点检工单结束************************************/ return success("变更成功"); } - return error(500, "批次号不能重复"); } @@ -1731,6 +1742,10 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { @DS("#header.poolName") @Transactional public AjaxResult subChangeWorkOrderM(SplitOrderDTO splitOrderDTO) { + //jgy 设备新增 + //String previousLineCode = proOrderWorkorderMapper.getPreviousLineCode(splitOrderDTO.getProOrderWorkorder().getWorkorderId());//查询之前真正生产的产线 + String planLineCodes = proOrderWorkorderMapper.getPlanLineCodes(splitOrderDTO.getProOrderWorkorder().getWorkorderId());//查询之前计划的产线范围 + ProOrderWorkorder proWorkOrder = splitOrderDTO.getProOrderWorkorder(); proWorkOrder.setProdLineCode(JSONArray.toJSONString(splitOrderDTO.getProdLineCodeArray())); proWorkOrder.setUpdateBy(SecurityUtils.getUsername()); @@ -1750,9 +1765,72 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { sonWorkOrder = proOrderWorkorderMapper.getSonWorkOrder(sonWorkOrder); } } + + /*************************************设备模块 - 判断是否要生成新的点检工单开始************************************/ + String changeLineType = "切线调拨"; + this.checkWhetherGenerateNewWorkOrder(splitOrderDTO,planLineCodes,changeLineType); + /*************************************设备模块 - 判断是否要生成新的点检工单结束************************************/ return success("变更成功"); } + private void checkWhetherGenerateNewWorkOrder(SplitOrderDTO splitOrderDTO, String planLineCodes,String changeLineType) { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + String poolName = request.getHeader(key.substring(8)); + + String [][] currentLineCodes = splitOrderDTO.getProdLineCodeArray();//现在的产线列表 + List currentLines = new ArrayList<>(); + List previousLines = new ArrayList<>(); + List addLines = new ArrayList<>();//新增的需要生成的产线 + + //处理现在的产线信息 prod_line_code + if(currentLineCodes.length > 0){ + for (int i = 0; i < currentLineCodes.length; i++) { + for (int j = 1; j < currentLineCodes[i].length; j++) { + currentLines.add(currentLineCodes[i][j]); + } + } + } + + //解析之前的 prod_line_code + if(!StringUtils.isBlank(planLineCodes)){ + JSONArray array = JSONArray.parseArray(planLineCodes); + for (int i = 0; i < array.size(); i++) { + JSONArray subArray = (JSONArray) array.get(i); + for (int j = 1; j < subArray.size(); j++) { + previousLines.add(subArray.get(j).toString()); + } + } + } + + //找出新增的 + for (String item : currentLines) { + if (!previousLines.contains(item)) { + addLines.add(item); + } +// if(StringUtils.isNotBlank(previousLineCode)){ +// if(!previousLineCode.equals(item)){ +// addLines.add(item); +// } +// } + } + + //去重 + addLines = addLines.stream().distinct().collect(Collectors.toList()); + + if(!CollectionUtils.isEmpty(addLines)){//如果 现在的产线是空 以前可能是空的 也可能不是空的 证明没有进行切线 + EquPlanDTO equPlanDTO = new EquPlanDTO(); + equPlanDTO.setWorkOrderCode(splitOrderDTO.getProOrderWorkorder().getWorkorderCode()); + equPlanDTO.setFactoryCode(poolName); + equPlanDTO.setLineCodes(addLines); + equPlanDTO.setChangeLineType(changeLineType); + logger.info(poolName + "工厂进行切线,生成产线" + addLines + "的新点检信息"); + remoteDeviceService.createSpotCheckWorkOrder(equPlanDTO); + }else{ + logger.info(poolName + "工厂进行切线,没有新产线需要点检。"); + } + } + public static void main(String args[]) { String s = "000800003044"; System.out.println(s.substring(3)); diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml index 3f8b83cd6..0d8e8edfc 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml @@ -1093,4 +1093,18 @@ and del_flag = '0' + + + + From c88726d5807d2c775f010373e884dc0709aa08ab Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Wed, 6 Nov 2024 16:12:33 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/MesReportWorkServiceImpl.java | 27 +++++++++++++------ .../mapper/mes/MesReportWorkMapper.xml | 4 +-- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java index b765b4650..fac6bee2d 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java @@ -490,19 +490,30 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { dto.setTotalWorkTime(sonMesReport.getTotalWorkTime().toString()); // 标准人均效率 实际产量/标准用人/标准工时 - BigDecimal manAvgStandard = new BigDecimal(realQua) - .divide(new BigDecimal(dto.getManStandard()),4,BigDecimal.ROUND_HALF_UP) - .divide(workTimeStandard,2,BigDecimal.ROUND_HALF_UP); - dto.setManAvgStandard(manAvgStandard.toString()); + BigDecimal manAvgStandard = null; + if(StringUtils.isNotBlank(dto.getManStandard())){ + manAvgStandard = new BigDecimal(realQua) + .divide(new BigDecimal(dto.getManStandard()),4,BigDecimal.ROUND_HALF_UP) + .divide(workTimeStandard,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgStandard(manAvgStandard.toString()); + }else{ + dto.setManAvgStandard("0"); + } + // 实际人均效率 实际产量/总工时 BigDecimal manAvgActual = new BigDecimal(realQua) .divide(sonMesReport.getTotalWorkTime(),2,BigDecimal.ROUND_HALF_UP); dto.setManAvgActual(manAvgActual.toString()); // 人均效率达成率 实际人均效率/标准人均效率 - BigDecimal manAvgDo = manAvgActual - .multiply(new BigDecimal("100.00")) - .divide(manAvgStandard,2,BigDecimal.ROUND_HALF_UP); - dto.setManAvgDo(manAvgDo.toString()+"%"); + if(manAvgStandard!=null){ + BigDecimal manAvgDo = manAvgActual + .multiply(new BigDecimal("100.00")) + .divide(manAvgStandard,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgDo(manAvgDo.toString()+"%"); + }else{ + dto.setManAvgDo("0%"); + } + } } diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index 172db8696..e6891b733 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml @@ -689,9 +689,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bp.report_rate reportRate from base_equipment be left join pro_order_workorder pow on be.equipment_code = pow.workorder_name - left join mes_line_product mlp on pow.workorder_name = mlp.line_code and pow.product_code = mlp.product_code + left join mes_line_product mlp on pow.workorder_name = mlp.line_code and pow.product_code = mlp.product_code and mlp.del_flag='0' left join base_product bp on bp.product_code = pow.product_code - where be.del_flag = '0' and be.sap_code is not null and pow.status = 'w3' and mlp.del_flag='0' + where be.del_flag = '0' and be.sap_code is not null and pow.status in ('w2','w3') and pow.parent_order = '0' and pow.del_flag='0' and be.sap_name like concat('%', #{sapName}, '%') and be.workshop_code = #{workCenter} From 036e690fad92a63737bbd2aae140c82e042ecdec Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Wed, 6 Nov 2024 18:10:08 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/quality/QcCheckTaskInventoryMapper.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml index fd1f31f9f..b33242223 100644 --- a/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml +++ b/op-modules/op-quality/src/main/resources/mapper/quality/QcCheckTaskInventoryMapper.xml @@ -304,7 +304,8 @@ and t.materialName like concat('%',#{materialName}, '%') and t.supplierCode like concat('%',#{supplierCode}, '%') and t.supplierName like concat('%',#{supplierName},'%') - + and CONVERT(varchar(10),t.incomeTime, 120) >= #{incomeTimeStart} + and #{incomeTimeEnd} > CONVERT(varchar(10),t.incomeTime, 120) order by t.incomeTime desc,t.materialCode From f32aa42ba7d7c083f07343717b04e7a2f2a41e38 Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Thu, 7 Nov 2024 09:49:13 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/mes/MesPrepareDetailMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml index 64b4f86aa..304f4c669 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml @@ -99,6 +99,7 @@ left join mes_prepare_detail mpd on mp.prepare_id = mpd.prepare_id where ow.product_date = #{productDateStr} and mpd.material_name not like '%白坯%' and mpd.material_name not like '%药液%' + and mpd.material_name not like '0000000208%' and mpd.recoil = #{recoil} and mp.del_flag = '0' and mpd.del_flag = '0' GROUP BY mpd.material_code, mpd.material_name, From 93105ec30849d5317e3bd9a5cef00694c695b5ae Mon Sep 17 00:00:00 2001 From: zhaoxiaolin Date: Thu, 7 Nov 2024 11:37:47 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/mes/MesPrepareDetailMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml index 304f4c669..3d415db2a 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesPrepareDetailMapper.xml @@ -99,7 +99,7 @@ left join mes_prepare_detail mpd on mp.prepare_id = mpd.prepare_id where ow.product_date = #{productDateStr} and mpd.material_name not like '%白坯%' and mpd.material_name not like '%药液%' - and mpd.material_name not like '0000000208%' + and mpd.material_code not like '0000000208%' and mpd.recoil = #{recoil} and mp.del_flag = '0' and mpd.del_flag = '0' GROUP BY mpd.material_code, mpd.material_name, From 3e7339cc3e182ce7a6b47993998beef5ecc8e163 Mon Sep 17 00:00:00 2001 From: Yangwl <1726150332@qq.com> Date: Thu, 7 Nov 2024 17:18:09 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=8D=95=E8=80=97=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DataAnalysisServiceImpl.java | 2 +- .../op/open/service/impl/OpenServiceImpl.java | 18 ++---------------- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java b/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java index d0a40e1b6..d3954431a 100644 --- a/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java +++ b/op-modules/op-energy/src/main/java/com/op/energy/report/service/impl/DataAnalysisServiceImpl.java @@ -1017,7 +1017,7 @@ public class DataAnalysisServiceImpl implements IDataAnalysisService { List reportOrderEnergyDTOList = reportPointDnbMapper.OrderEnergyList(reportOrderEnergyDTO); if (reportOrderEnergyDTOList != null && reportOrderEnergyDTOList.size() > 0) { for (int i = 0; i < reportOrderEnergyDTOList.size(); i++) { - if (reportOrderEnergyDTOList.get(i).getElectricityNo() != null && reportOrderEnergyDTOList.get(i).getStartWorkTime() != null && reportOrderEnergyDTOList.get(i).getEndWorkTime() != null) { + if ((reportOrderEnergyDTOList.get(i).getElectricityNo() != null && !reportOrderEnergyDTOList.get(i).getElectricityNo().isEmpty()) && reportOrderEnergyDTOList.get(i).getStartWorkTime() != null && reportOrderEnergyDTOList.get(i).getEndWorkTime() != null) { //获取这个工单所在产线的电表编号 String monitorid = reportOrderEnergyDTOList.get(i).getElectricityNo(); //获取这个工单的开始日期和结束日期 diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index 0627c90b9..a06451f94 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -1,8 +1,10 @@ package com.op.open.service.impl; +import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.JSONWriter; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.constant.Constants; import com.op.common.core.utils.DateUtils; @@ -792,23 +794,7 @@ public class OpenServiceImpl implements OpenService { return false; } - public static void main(String args[]){ -// // 创建两个日期时间对象 -// LocalDateTime dateTime1 = LocalDateTime.of(2024, 4, 18, 9, 33); // 2023年1月1日 10:30 -// LocalDateTime dateTime2 = LocalDateTime.now(); // 2023年1月2日 11:45 -// // 计算分钟差 -// long minutesBetween = Duration.between(dateTime1, dateTime2).toMinutes(); -// if(minutesBetween<=1){ -// System.out.println("++++++++++++检验任务1分钟内生成过,不再重复创建++++++++++++++"); -// } - int f = -100; - if(f != -100){ - System.out.println("-100"); - }else{ - System.out.println("0"); - } - } @Override public AjaxResult getDeliveryNoteDetail(Map paramMap) { From e31986dd44b6687829a1cb2cfc77039a91acb541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=83=E6=B0=94=E6=BB=A1=E6=BB=A1=28jgy=29?= Date: Fri, 8 Nov 2024 12:04:03 +0800 Subject: [PATCH 8/8] =?UTF-8?q?2024-11-8=20=E8=AE=BE=E5=A4=87-=E5=88=87?= =?UTF-8?q?=E7=BA=BF=E8=B0=83=E6=8B=A8=E3=80=81=E5=B7=A5=E5=8D=95=E5=88=87?= =?UTF-8?q?=E7=BA=BF=20-=20=E5=BE=AE=E4=BF=A1=E6=8F=90=E9=86=92=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../op/system/api/RemoteDeviceService.java | 4 +- .../system/api/domain/device/EquPlanDTO.java | 633 ------------------ .../domain/device/WorkOrderTangentDTO.java | 97 +++ .../factory/RemoteDeviceFallbackFactory.java | 2 +- .../controller/DeviceTaskController.java | 6 +- .../op/device/service/IDeviceTaskService.java | 4 +- .../service/impl/DeviceTaskServiceImpl.java | 36 +- .../impl/ProOrderWorkorderServiceImpl.java | 16 +- 8 files changed, 133 insertions(+), 665 deletions(-) delete mode 100644 op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquPlanDTO.java create mode 100644 op-api/op-api-system/src/main/java/com/op/system/api/domain/device/WorkOrderTangentDTO.java diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java index 2a7f15b14..11d8c2f4c 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteDeviceService.java @@ -3,7 +3,7 @@ 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.DataSourcePropertyDTO; -import com.op.system.api.domain.device.EquPlanDTO; +import com.op.system.api.domain.device.WorkOrderTangentDTO; import com.op.system.api.factory.RemoteDeviceFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -45,5 +45,5 @@ public interface RemoteDeviceService { //切线后创建当日新的点检工单 @PostMapping("/deviceTask/createSpotCheckWorkOrder") - public R createSpotCheckWorkOrder(@RequestBody EquPlanDTO equPlanDTO); + public R createSpotCheckWorkOrder(@RequestBody WorkOrderTangentDTO workOrderTangentDTO); } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquPlanDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquPlanDTO.java deleted file mode 100644 index 4c0efaabd..000000000 --- a/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/EquPlanDTO.java +++ /dev/null @@ -1,633 +0,0 @@ -package com.op.system.api.domain.device; - -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.util.Date; -import java.util.List; - -/** - * 计划对象 equ_plan - * - * @author Open Platform - * @date 2023-10-16 - */ -public class EquPlanDTO extends BaseEntity { - private static final long serialVersionUID = 1L; - - /** - * 主键 - */ - private String planId; - - /** - * 计划编码 - */ - @Excel(name = "计划编码") - private String planCode; - - /** - * 计划名称 - */ - @Excel(name = "计划名称") - private String planName; - - /** - * 车间 - */ - @Excel(name = "车间编码") - private String planWorkshop; - - /** - * 产线 - */ - private String planProdLine; - - /** - * 设备名称 - */ - private String equipmentName; - - /** - * 设备编码 - */ - private String equipmentCode; - - /** - * 循环周期 - */ - @Excel(name = "循环周期") - private String planLoop; - - /** - * 循环周期类型 - */ - @Excel(name = "循环周期类型") - private String planLoopType; - - /** - * 循环执行时间开始 - */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "循环执行时间开始", width = 30, dateFormat = "yyyy-MM-dd") - private Date planLoopStart; - - /** - * 循环执行时间结束 - */ - @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "循环执行时间结束", width = 30, dateFormat = "yyyy-MM-dd") - private Date planLoopEnd; - - /** - * 巡检人员 - */ - private String planPerson; - - /** - * 计划状态 - */ - @Excel(name = "计划状态") - private String planStatus; - - /** - * 是否可生产-限制 - */ - @Excel(name = "是否可生产-限制") - private String planRestrict; - - /** - * 维护类型 - */ - private String planType; - - /** - * 是否委外 - */ - private String planOutsource; - - /** - * 委外工单编码 - */ - @Excel(name = "委外工单编码") - private String workCode; - - /** - * 工厂 - */ - @Excel(name = "工厂") - private String factoryCode; - - /** - * 备用字段1 - */ - private String attr1; - - /** - * 备用字段2 - */ - private String attr2; - - /** - * 备用字段3 - */ - private String attr3; - - /** - * 删除标志 - */ - private String delFlag; - - // 创建日期范围list - private List createTimeArray; - - // 更新日期范围list - private List updateTimeArray; - - // 更新日期开始 - private String updateTimeStart; - - // 更新日期结束 - private String updateTimeEnd; - - // 创建日期开始 - private String createTimeStart; - - // 创建日期结束 - private String createTimeEnd; - - private List planTimeArray; - - private List personListVO; - - private String workCenterName; - - // 保养类型 - @Excel(name = "保养类型") - private String upkeep; - - // 计划保养时间计算规则 - private String calculationRule; - - // 是否停机保养 - @Excel(name = "是否停机保养") - private String shutDown; - private String planEquId; - - private List loopStartArray; - - private Date loopStart; - - private Date loopEnd; - - private List loopEndArray; - - private Date loopEndArrayStart; - - private Date getLoopEndArrayEnd; - - @Excel(name = "委外人员") - private String workPerson; - - @Excel(name = "委外单位") - private String workOutsourcingUnit; - - @Excel(name = "联系方式") - private String workConnection; - - @Excel(name = "委外原因") - private String workReason; - - //jgy 新增 生产线体编码 每天生成线体信息的时候只生成计划生产的 - private String lineCode; - private List lineCodes; - private String workOrderCode;//工单号 - private String changeLineType;//切线类型 - - public String getWorkOutsourcingUnit() { - return workOutsourcingUnit; - } - - public void setWorkOutsourcingUnit(String workOutsourcingUnit) { - this.workOutsourcingUnit = workOutsourcingUnit; - } - - public String getWorkConnection() { - return workConnection; - } - - public void setWorkConnection(String workConnection) { - this.workConnection = workConnection; - } - - public String getWorkReason() { - return workReason; - } - - public void setWorkReason(String workReason) { - this.workReason = workReason; - } - - public String getWorkPerson() { - return workPerson; - } - - public void setWorkPerson(String workPerson) { - this.workPerson = workPerson; - } - - public List getLoopEndArray() { - return loopEndArray; - } - - public void setLoopEndArray(List loopEndArray) { - this.loopEndArray = loopEndArray; - } - - public Date getLoopEndArrayStart() { - return loopEndArrayStart; - } - - public void setLoopEndArrayStart(Date loopEndArrayStart) { - this.loopEndArrayStart = loopEndArrayStart; - } - - public Date getGetLoopEndArrayEnd() { - return getLoopEndArrayEnd; - } - - public void setGetLoopEndArrayEnd(Date getLoopEndArrayEnd) { - this.getLoopEndArrayEnd = getLoopEndArrayEnd; - } - - public Date getLoopEnd() { - return loopEnd; - } - - public void setLoopEnd(Date loopEnd) { - this.loopEnd = loopEnd; - } - - public Date getLoopStart() { - return loopStart; - } - - public void setLoopStart(Date loopStart) { - this.loopStart = loopStart; - } - - public List getLoopStartArray() { - return loopStartArray; - } - - public void setLoopStartArray(List loopStartArray) { - this.loopStartArray = loopStartArray; - } - - public String getPlanEquId() { - return planEquId; - } - - public void setPlanEquId(String planEquId) { - this.planEquId = planEquId; - } - - public String getUpkeep() { - return upkeep; - } - - public void setUpkeep(String upkeep) { - this.upkeep = upkeep; - } - - public String getCalculationRule() { - return calculationRule; - } - - public void setCalculationRule(String calculationRule) { - this.calculationRule = calculationRule; - } - - public String getShutDown() { - return shutDown; - } - - public void setShutDown(String shutDown) { - this.shutDown = shutDown; - } - - public String getWorkCenterName() { - return workCenterName; - } - - public void setWorkCenterName(String workCenterName) { - this.workCenterName = workCenterName; - } - - public List getPersonListVO() { - return personListVO; - } - - public void setPersonListVO(List personListVO) { - this.personListVO = personListVO; - } - - public List getPlanTimeArray() { - return planTimeArray; - } - - public void setPlanTimeArray(List planTimeArray) { - this.planTimeArray = planTimeArray; - } - - public List getCreateTimeArray() { - return createTimeArray; - } - - public void setCreateTimeArray(List createTimeArray) { - this.createTimeArray = createTimeArray; - } - - public List getUpdateTimeArray() { - return updateTimeArray; - } - - public void setUpdateTimeArray(List updateTimeArray) { - this.updateTimeArray = updateTimeArray; - } - - public String getUpdateTimeStart() { - return updateTimeStart; - } - - public void setUpdateTimeStart(String updateTimeStart) { - this.updateTimeStart = updateTimeStart; - } - - public String getUpdateTimeEnd() { - return updateTimeEnd; - } - - public void setUpdateTimeEnd(String updateTimeEnd) { - this.updateTimeEnd = updateTimeEnd; - } - - 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 void setPlanId(String planId) { - this.planId = planId; - } - - public String getPlanId() { - return planId; - } - - public void setPlanCode(String planCode) { - this.planCode = planCode; - } - - public String getPlanCode() { - return planCode; - } - - public void setPlanName(String planName) { - this.planName = planName; - } - - public String getPlanName() { - return planName; - } - - public void setPlanWorkshop(String planWorkshop) { - this.planWorkshop = planWorkshop; - } - - public String getPlanWorkshop() { - return planWorkshop; - } - - public void setPlanProdLine(String planProdLine) { - this.planProdLine = planProdLine; - } - - public String getPlanProdLine() { - return planProdLine; - } - - public void setEquipmentName(String equipmentName) { - this.equipmentName = equipmentName; - } - - public String getEquipmentName() { - return equipmentName; - } - - public void setEquipmentCode(String equipmentCode) { - this.equipmentCode = equipmentCode; - } - - public String getEquipmentCode() { - return equipmentCode; - } - - public void setPlanLoop(String planLoop) { - this.planLoop = planLoop; - } - - public String getPlanLoop() { - return planLoop; - } - - public void setPlanLoopType(String planLoopType) { - this.planLoopType = planLoopType; - } - - public String getPlanLoopType() { - return planLoopType; - } - - public void setPlanLoopStart(Date planLoopStart) { - this.planLoopStart = planLoopStart; - } - - public Date getPlanLoopStart() { - return planLoopStart; - } - - public void setPlanLoopEnd(Date planLoopEnd) { - this.planLoopEnd = planLoopEnd; - } - - public Date getPlanLoopEnd() { - return planLoopEnd; - } - - public void setPlanPerson(String planPerson) { - this.planPerson = planPerson; - } - - public String getPlanPerson() { - return planPerson; - } - - public void setPlanStatus(String planStatus) { - this.planStatus = planStatus; - } - - public String getPlanStatus() { - return planStatus; - } - - public void setPlanRestrict(String planRestrict) { - this.planRestrict = planRestrict; - } - - public String getPlanRestrict() { - return planRestrict; - } - - public void setPlanType(String planType) { - this.planType = planType; - } - - public String getPlanType() { - return planType; - } - - public void setPlanOutsource(String planOutsource) { - this.planOutsource = planOutsource; - } - - public String getPlanOutsource() { - return planOutsource; - } - - public void setWorkCode(String workCode) { - this.workCode = workCode; - } - - public String getWorkCode() { - return workCode; - } - - public void setFactoryCode(String factoryCode) { - this.factoryCode = factoryCode; - } - - public String getFactoryCode() { - return factoryCode; - } - - 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 setDelFlag(String delFlag) { - this.delFlag = delFlag; - } - - public String getDelFlag() { - return delFlag; - } - - public void setLineCode(String lineCode) { - this.lineCode = lineCode; - } - - public String getLineCode() { - return lineCode; - } - - public void setLineCodes(List lineCodes) { - this.lineCodes = lineCodes; - } - - public List getLineCodes() { - return lineCodes; - } - - public void setWorkOrderCode(String workOrderCode) { - this.workOrderCode = workOrderCode; - } - - public String getWorkOrderCode() { - return workOrderCode; - } - - public void setChangeLineType(String changeLineType) { - this.changeLineType = changeLineType; - } - - public String getChangeLineType() { - return changeLineType; - } - - @Override - public String toString() { - return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) - .append("planId", getPlanId()) - .append("planCode", getPlanCode()) - .append("planName", getPlanName()) - .append("planWorkshop", getPlanWorkshop()) - .append("planProdLine", getPlanProdLine()) - .append("equipmentName", getEquipmentName()) - .append("equipmentCode", getEquipmentCode()) - .append("planLoop", getPlanLoop()) - .append("planLoopType", getPlanLoopType()) - .append("planLoopStart", getPlanLoopStart()) - .append("planLoopEnd", getPlanLoopEnd()) - .append("planPerson", getPlanPerson()) - .append("planStatus", getPlanStatus()) - .append("planRestrict", getPlanRestrict()) - .append("planType", getPlanType()) - .append("planOutsource", getPlanOutsource()) - .append("workCode", getWorkCode()) - .append("factoryCode", getFactoryCode()) - .append("attr1", getAttr1()) - .append("attr2", getAttr2()) - .append("attr3", getAttr3()) - .append("delFlag", getDelFlag()) - .append("createBy", getCreateBy()) - .append("createTime", getCreateTime()) - .append("updateBy", getUpdateBy()) - .append("updateTime", getUpdateTime()) - .toString(); - } -} diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/WorkOrderTangentDTO.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/WorkOrderTangentDTO.java new file mode 100644 index 000000000..4f437509c --- /dev/null +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/device/WorkOrderTangentDTO.java @@ -0,0 +1,97 @@ +package com.op.system.api.domain.device; + +import com.op.common.core.web.domain.BaseEntity; +import java.util.List; + +/** + * 工单切线传输对象 workOrderTangent + * + * @author jgy + * @date 2024-11-7 + */ +public class WorkOrderTangentDTO extends BaseEntity { + private static final long serialVersionUID = 1L; + + private String planProdLine;//产线 + private String equipmentName;//设备名称 + private String equipmentCode;//设备编码 + private String factoryCode;//工厂 + + //jgy 新增 切线调拨 工单切线能用到的参数 + private String lineCode; + private List addLineCodes; + private String workOrderCode;//工单号 + private String changeLineType;//切线类型 + private List previousLineCodes;//之前的产线 + private List currentLineCodes;//现在的产线 + + public void setPlanProdLine(String planProdLine) { + this.planProdLine = planProdLine; + } + public String getPlanProdLine() { + return planProdLine; + } + + public void setEquipmentName(String equipmentName) { + this.equipmentName = equipmentName; + } + public String getEquipmentName() { + return equipmentName; + } + + public void setEquipmentCode(String equipmentCode) { + this.equipmentCode = equipmentCode; + } + public String getEquipmentCode() { + return equipmentCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + public String getFactoryCode() { + return factoryCode; + } + + public void setLineCode(String lineCode) { + this.lineCode = lineCode; + } + public String getLineCode() { + return lineCode; + } + + public void setAddLineCodes(List addLineCodes) { + this.addLineCodes = addLineCodes; + } + public List getAddLineCodes() { + return addLineCodes; + } + + public void setWorkOrderCode(String workOrderCode) { + this.workOrderCode = workOrderCode; + } + public String getWorkOrderCode() { + return workOrderCode; + } + + public void setChangeLineType(String changeLineType) { + this.changeLineType = changeLineType; + } + public String getChangeLineType() { + return changeLineType; + } + + public void setPreviousLineCodes(List previousLineCodes) { + this.previousLineCodes = previousLineCodes; + } + public List getPreviousLineCodes() { + return previousLineCodes; + } + + public void setCurrentLineCodes(List currentLineCodes) { + this.currentLineCodes = currentLineCodes; + } + public List getCurrentLineCodes() { + return currentLineCodes; + } +} diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java index f7d224d54..b36bf7cf7 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteDeviceFallbackFactory.java @@ -59,7 +59,7 @@ public class RemoteDeviceFallbackFactory implements FallbackFactory plans = deviceTaskMapper.getPlans(equPlan);//所有的 - List changeLineCodeList = equPlanDTO.getLineCodes();//切线后的实际传过来的要新增的产线信息 + List changeLineCodeList = workOrderTangentDTO.getAddLineCodes();//切线后的实际传过来的要新增的产线信息 List addProducePlans = new ArrayList<>();//切线后,真正能生成的生产线 下面的设备的点检计划 List addProduceLine = new ArrayList<>();//真正能生成的切线生产线 @@ -298,7 +298,7 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { if(!StringUtils.isBlank(plan.getLineCode())){ if(plan.getLineCode().equals(lineCode)){ addProducePlans.add(plan); - logger.info(equPlanDTO.getFactoryCode() + "工厂切线后新生成计划信息:" + JSONArray.toJSONString(plan)); + logger.info(workOrderTangentDTO.getFactoryCode() + "工厂切线后新生成计划信息:" + JSONArray.toJSONString(plan)); addProduceLine.add(lineCode); } } @@ -306,7 +306,7 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { } } addProduceLine = addProduceLine.stream().distinct().collect(Collectors.toList()); - logger.info(equPlanDTO.getFactoryCode() + "工厂切线后新生成产线:" + JSONArray.toJSONString(addProduceLine)); + logger.info(workOrderTangentDTO.getFactoryCode() + "工厂切线后新生成产线:" + JSONArray.toJSONString(addProduceLine)); addSpotCheckTask = new ArrayList<>(); for (EquPlan plan : addProducePlans) { @@ -323,14 +323,14 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { } } - logger.info("++++++++++++" + equPlanDTO.getFactoryCode() + "++++切线后创建微信提醒开始++++++++++"); - this.spotCheckSendWeChat(addProduceLine,equPlanDTO); - logger.info("++++++++++++" + equPlanDTO.getFactoryCode() + "++++切线后创建微信提醒结束++++++++++"); - logger.info("++++++++++++" + equPlanDTO.getFactoryCode() + "++++切线后创建点检工单流程结束++++++++++"); + logger.info("++++++++++++" + workOrderTangentDTO.getFactoryCode() + "++++切线后创建微信提醒开始++++++++++"); + this.spotCheckSendWeChat(addProduceLine,workOrderTangentDTO); + logger.info("++++++++++++" + workOrderTangentDTO.getFactoryCode() + "++++切线后创建微信提醒结束++++++++++"); + logger.info("++++++++++++" + workOrderTangentDTO.getFactoryCode() + "++++切线后创建点检工单流程结束++++++++++"); return success(); } - private void spotCheckSendWeChat(List addProduceLine, EquPlanDTO equPlanDTO) { + private void spotCheckSendWeChat(List addProduceLine, WorkOrderTangentDTO workOrderTangentDTO) { //发企业微信--------------------开始(跟班组有关) SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式 SysNoticeGroup noticeQo = new SysNoticeGroup(); @@ -349,10 +349,12 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { //在前端填的时候,需要判空!!!!!! contentInfo = contentInfo .replace("${n}", "\n") - .replace("${productLineCode}", addProduceLine + "")//产线 - .replace("${changeLineType}", equPlanDTO.getChangeLineType())//切线类型 + .replace("${previousLines}", workOrderTangentDTO.getPreviousLineCodes() + "\n")//切线前产线 + .replace("${currentLines}", workOrderTangentDTO.getCurrentLineCodes() + "\n")//切线后产线 + .replace("${addLines}", addProduceLine + "\n")//新增产线 + .replace("${changeLineType}", workOrderTangentDTO.getChangeLineType())//切线类型 .replace("${orderCode}", addSpotCheckTask + "")//点检工单号 - .replace("${workOrderCode}", equPlanDTO.getWorkOrderCode());//工单号 + .replace("${workOrderCode}", workOrderTangentDTO.getWorkOrderCode());//工单号 //替换标签 Pattern p= Pattern.compile("<[^>]+>"); @@ -362,7 +364,7 @@ public class DeviceTaskServiceImpl implements IDeviceTaskService { wechart0.setText(contentInfo); wecharts.add(wechart0); } - logger.info(equPlanDTO.getChangeLineType()+ "后,企业微信提醒维修请求:" + JSONObject.toJSONString(wecharts)); + logger.info(workOrderTangentDTO.getChangeLineType()+ "后,企业微信提醒维修请求:" + JSONObject.toJSONString(wecharts)); if (!CollectionUtils.isEmpty(wecharts)) { new Thread(() -> { AjaxResult wxResult = remoteOpenService.sendWeChartMessage(wecharts); diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index 0011ea358..284857d25 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -23,7 +23,7 @@ import com.op.plan.mapper.*; import com.op.plan.service.IProOrderWorkorderService; import com.op.system.api.RemoteDeviceService; import com.op.system.api.RemoteSapService; -import com.op.system.api.domain.device.EquPlanDTO; +import com.op.system.api.domain.device.WorkOrderTangentDTO; import com.op.system.api.domain.dto.MesPrepareDTO; import com.op.system.api.domain.dto.MesPrepareDetailDTO; import com.op.system.api.domain.sap.*; @@ -1819,13 +1819,15 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { addLines = addLines.stream().distinct().collect(Collectors.toList()); if(!CollectionUtils.isEmpty(addLines)){//如果 现在的产线是空 以前可能是空的 也可能不是空的 证明没有进行切线 - EquPlanDTO equPlanDTO = new EquPlanDTO(); - equPlanDTO.setWorkOrderCode(splitOrderDTO.getProOrderWorkorder().getWorkorderCode()); - equPlanDTO.setFactoryCode(poolName); - equPlanDTO.setLineCodes(addLines); - equPlanDTO.setChangeLineType(changeLineType); + WorkOrderTangentDTO workOrderTangentDTO = new WorkOrderTangentDTO(); + workOrderTangentDTO.setWorkOrderCode(splitOrderDTO.getProOrderWorkorder().getWorkorderCode()); + workOrderTangentDTO.setFactoryCode(poolName); + workOrderTangentDTO.setAddLineCodes(addLines); + workOrderTangentDTO.setChangeLineType(changeLineType); + workOrderTangentDTO.setPreviousLineCodes(previousLines); + workOrderTangentDTO.setCurrentLineCodes(currentLines); logger.info(poolName + "工厂进行切线,生成产线" + addLines + "的新点检信息"); - remoteDeviceService.createSpotCheckWorkOrder(equPlanDTO); + remoteDeviceService.createSpotCheckWorkOrder(workOrderTangentDTO); }else{ logger.info(poolName + "工厂进行切线,没有新产线需要点检。"); }