From b1c131d4dbbbdd2cd0a642a743fb2f6a46be6029 Mon Sep 17 00:00:00 2001
From: liyongde <1419499670@qq.com>
Date: Tue, 29 Oct 2024 09:27:12 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8F=8D=E9=A6=88MES=E6=B3=A5=E6=96=99?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=E3=80=81=E7=A0=96=E5=9D=97=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../brick/service/dao/MdBaseBrickInfo.java | 1 +
.../ext/acs/service/dto/to/BaseResponse.java | 2 +-
.../acs/service/impl/AcsToWmsServiceImpl.java | 1 +
.../service/dao/mapper/MesRequestMapper.xml | 4 +-
.../mes/service/dto/MesMudConsumptionDto.java | 4 ++
.../mes/service/impl/WmsToMesServiceImpl.java | 11 +++-
.../impl/PdmBdWorkorderServiceImpl.java | 3 +
.../ISchBaseVehiclematerialgroupService.java | 8 +++
...chBaseVehiclematerialgroupServiceImpl.java | 54 ++++++++++++++++++
.../task_manage/task/tasks/hn/HNMLTask.java | 2 +-
lms/nladmin-ui/src/assets/images/ma.png | Bin 0 -> 29841 bytes
.../src/layout/components/Sidebar/Logo.vue | 2 +-
12 files changed, 85 insertions(+), 7 deletions(-)
create mode 100644 lms/nladmin-ui/src/assets/images/ma.png
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java
index 43f660a..d082cf4 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/MdBaseBrickInfo.java
@@ -39,6 +39,7 @@ public class MdBaseBrickInfo implements Serializable {
private String grinding_number;
+ /** 实际重量 */
private String weight;
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseResponse.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseResponse.java
index f624625..8755bec 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseResponse.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/to/BaseResponse.java
@@ -33,7 +33,7 @@ public class BaseResponse implements Serializable {
private String responseDate;
/**
- * 结果 200成功
+ * 结果 200成功|400异常,(其他定义)
*/
private int code;
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
index f3face8..fde49d7 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
@@ -735,6 +735,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
mesMudConsumptionDto.setSENDTIM(DateUtil.now());
mesMudConsumptionDto.setCREATE_TM(DateUtil.now());
mesMudConsumptionDto.setOP_FLAG(GeneralDefinition.NO);
+ mesMudConsumptionDto.setDATA_FLAG("1");
mesMudConsumptionDto.setSLEEP_TIME(CommonUtils.dTOAMinutes(one.getInstorage_time(), DateUtil.now()));
log.info("泥料消耗上报参数:{}", mesMudConsumptionDto);
// 反馈数据给acs
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml
index 9a66f88..1c29cb5 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml
@@ -4,9 +4,9 @@
INSERT INTO "LMSTELCOM"."RECEIVE_MUDMATERIEL_OUT"( MSGID, PWORKSCHE_ID, OUT_FINNUM, PRESSUNIT, FBAGCODE, LOGT
, SENDTIM
- , CREATE_TM, OP_FLAG, SLEEP_TIME)
+ , CREATE_TM, OP_FLAG, SLEEP_TIME, DATA_FLAG)
VALUES ( #{MSGID}, #{PWORKSCHE_ID}, #{OUT_FINNUM}, #{PRESSUNIT}, #{FBAGCODE}, #{LOGT}
- , #{SENDTIM}, #{CREATE_TM}, #{OP_FLAG}, #{SLEEP_TIME})
+ , #{SENDTIM}, #{CREATE_TM}, #{OP_FLAG}, #{SLEEP_TIME}, #{DATA_FLAG})
INSERT INTO "LMSTELCOM"."RECEIVE_R_SEMIPRODUCT"( MSGID, FORDER_NO, PWORKSCHE_ID, FPRODUCT_MATERIAL_ID
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java
index 5b308a2..c08fa94 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesMudConsumptionDto.java
@@ -89,5 +89,9 @@ public class MesMudConsumptionDto implements Serializable {
* 实际困料时间
*/
private BigDecimal SLEEP_TIME;
+ /**
+ * 数据类型:1表示自动排料上传,2表示冲突解绑上传
+ */
+ private String DATA_FLAG;
}
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
index 4be284c..265541c 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/impl/WmsToMesServiceImpl.java
@@ -33,6 +33,7 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -564,10 +565,15 @@ public class WmsToMesServiceImpl implements WmsToMesService {
throw new BadRequestException("工单不存在,上报MES失败");
}
MdBaseMaterial material = mdBaseMaterialService.getById(workorder.getMaterial_id());
- String singleWeight = material.getSingle_weight();
+ String singleWeight = brickInfo.getWeight();
String volume = brickInfo.getVolume();
double w = Double.parseDouble(singleWeight);
double v = Double.parseDouble(volume);
+ // 计算 w / v 并乘以 1000
+ double result = v == 0 ? 0 : (w / v) * 1000;
+ // 使用 BigDecimal 保留3位小数
+ BigDecimal bd = new BigDecimal(result);
+ bd = bd.setScale(3, RoundingMode.HALF_UP);
MesQSPressMonitorData monitorData = new MesQSPressMonitorData();
monitorData.setBRICK_ID(brickInfo.getBrick_id());
monitorData.setGET_STATION(device.getExt_point_code());
@@ -588,7 +594,8 @@ public class WmsToMesServiceImpl implements WmsToMesService {
monitorData.setMATERIAL_NAME(material.getMaterial_name());
monitorData.setMATERIAL_SPEC(material.getMaterial_spec());
monitorData.setMATERIAL_MODEL(material.getMaterial_model());
- monitorData.setMACHINE_WET(String.valueOf(v == 0 ? "0" : (w / v)));
+ monitorData.setMACHINE_WET(bd.toString());
+ log.info("计算实时重量:{} / 体积:{} = {}", w, v, monitorData.getMACHINE_WET());
monitorData.setUNQUALIFIED_QTY(brickInfo.getUnqualified_qty());
monitorData.setWORKORDER_CODE(brickInfo.getWorkorder_code());
monitorData.setCREATE_TM(DateUtil.now());
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java
index 36ee965..910f2d8 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/impl/PdmBdWorkorderServiceImpl.java
@@ -193,6 +193,9 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl lam = new QueryWrapper().lambda();
lam.eq(PdmBdWorkorder::getWorkorder_code, orderCode);
return pdmBdWorkorderMapper.selectOne(lam);
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java
index fd8199d..391b283 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/ISchBaseVehiclematerialgroupService.java
@@ -100,6 +100,14 @@ public interface ISchBaseVehiclematerialgroupService extends IService queryAll(SchBaseVehiclematerialgroupQuery whereJson, PageQuery page) {
@@ -142,6 +156,46 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl lambda = new QueryWrapper().lambda();
+ lambda.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode)
+ .eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType)
+ // 不是解绑的
+ .ne(SchBaseVehiclematerialgroup::getGroup_bind_material_status, GroupBindMaterialStatusEnum.UNBOUND.getValue())
+ .eq(SchBaseVehiclematerialgroup::getIs_delete, false);
+ List list = vehiclematerialgroupMapper.selectList(lambda);
+ list.forEach(schBaseVehiclematerialgroup -> {
+ String workorderCode = schBaseVehiclematerialgroup.getWorkorder_code();
+ PdmBdWorkorder order = workorderService.getByCode(workorderCode);
+ // 上报MES 记录泥料
+ MesMudConsumptionDto mesMudConsumptionDto = new MesMudConsumptionDto();
+ mesMudConsumptionDto.setMSGID(IdUtil.getSnowflake(1, 1).nextIdStr());
+ mesMudConsumptionDto.setPWORKSCHE_ID(workorderCode);
+ mesMudConsumptionDto.setOUT_FINNUM(schBaseVehiclematerialgroup.getMaterial_weight());
+ if (ObjectUtil.isNotEmpty(order)) {
+ SchBasePoint devicePoint = pointService.getById(order.getPoint_code());
+ mesMudConsumptionDto.setPRESSUNIT(devicePoint.getExt_point_code());
+ } else {
+ mesMudConsumptionDto.setPRESSUNIT("-");
+ }
+ mesMudConsumptionDto.setFBAGCODE(schBaseVehiclematerialgroup.getPcsn());
+ mesMudConsumptionDto.setLOGT("配料仓");
+ mesMudConsumptionDto.setSENDTIM("-");
+ mesMudConsumptionDto.setCREATE_TM(schBaseVehiclematerialgroup.getCreate_time());
+ mesMudConsumptionDto.setOP_FLAG(GeneralDefinition.NO);
+ mesMudConsumptionDto.setSLEEP_TIME(BigDecimal.valueOf(0));
+ mesMudConsumptionDto.setDATA_FLAG("2");
+ log.info("泥料消耗上报参数:{}", mesMudConsumptionDto);
+ // 回传给mes系统
+ wmsToMesService.reportMudConsumption(mesMudConsumptionDto);
+ schBaseVehiclematerialgroup.setRemark("冲突解绑");
+ schBaseVehiclematerialgroup.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
+ TaskUtils.setGroupUpdateByAcs(schBaseVehiclematerialgroup);
+ });
+ this.updateBatchById(list);
+ }
+
@Override
public SchBaseVehiclematerialgroup getOneByVehicleCode(String vehicleCode, String value) {
List list = new ArrayList<>();
diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java
index 5dbb1a1..1dba263 100644
--- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java
+++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java
@@ -336,7 +336,7 @@ public class HNMLTask extends AbstractTask {
// 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入
// 找到不直接返回,用那条数据进行修改
// 解绑同载具的信息
- vehiclematerialgroupService.unBindingSameVehicleMaterial(vehicleCode, vehicleType);
+ vehiclematerialgroupService.unBindingSameVehicleMaterialToMes(vehicleCode, vehicleType);
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
// 要把数据存到组盘表
diff --git a/lms/nladmin-ui/src/assets/images/ma.png b/lms/nladmin-ui/src/assets/images/ma.png
new file mode 100644
index 0000000000000000000000000000000000000000..7da55c9339253d56033adfe20a65078c448fa026
GIT binary patch
literal 29841
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
literal 0
HcmV?d00001
diff --git a/lms/nladmin-ui/src/layout/components/Sidebar/Logo.vue b/lms/nladmin-ui/src/layout/components/Sidebar/Logo.vue
index c331a60..54942c1 100644
--- a/lms/nladmin-ui/src/layout/components/Sidebar/Logo.vue
+++ b/lms/nladmin-ui/src/layout/components/Sidebar/Logo.vue
@@ -14,7 +14,7 @@