diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesInsertBatchDao.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesInsertBatchDao.java new file mode 100644 index 0000000..4c619d1 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/dao/IMesInsertBatchDao.java @@ -0,0 +1,19 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.dao; + +import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBindingLog; +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +/** + * @Description : 批量新增数据拼接 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/10/18 17:40 + * @Modify: + **/ +public interface IMesInsertBatchDao { + + @ApiOperation("批量写入回收包装绑定LOG") + int insertMesRecyclablePackageBindingLog(List logList,String organizeCode); +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesInsertBatchDaoImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesInsertBatchDaoImpl.java new file mode 100644 index 0000000..a888b3c --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/daoimpl/MesInsertBatchDaoImpl.java @@ -0,0 +1,106 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.daoimpl; + +import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesInsertBatchDao; +import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; +import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBindingLog; +import groovy.util.logging.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; + +/** + * @Description : 批量新增数据拼接 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/10/18 17:38 + * @Modify: + **/ +@Service +@Slf4j +public class MesInsertBatchDaoImpl implements IMesInsertBatchDao { + + @Value("${mes.sharding.append.org:}") + public String mesShardingAppendOrg; + + @Autowired + private SnowflakeIdMaker snowflakeIdMaker; + + @Autowired + private EntityManager entityManager; + + @Override + public int insertMesRecyclablePackageBindingLog(List logList, String organizeCode) { + //批量导入 + int toNum; + for (int i = 0, len = (logList.size() / MesPcnExtConstWords.FIVE_HUNDRED + 1); i < len; i++) { + toNum = (i + 1) * MesPcnExtConstWords.FIVE_HUNDRED; + if ((i + 1) * MesPcnExtConstWords.FIVE_HUNDRED > logList.size()) { + toNum = logList.size(); + } + insertMesRecyclablePackageBindingLogLimit(logList.subList(i * MesPcnExtConstWords.FIVE_HUNDRED, toNum), organizeCode); + } + return logList.size(); + } + + + public void insertMesRecyclablePackageBindingLogLimit(List logList, String organizeCode) { + String fieldStr = "`id`,`create_date_time`,`create_user`,`description`,`is_deleted`,`is_valid`,`organize_code`,`remark`,`system_sync_date_time`,`system_sync_status`,`hanger_code`,`hanger_package_sn`,`hanger_rule_code`,`lot_number`,`modify_type`,`order_code`,`package_sn`,`part_name`,`part_no`,`product_sn`,`qty`,`status`,`total_qty`,`type_code`"; + //拼接字段 + StringBuilder fieldBuilder = new StringBuilder(); + String[] splitField = fieldStr.split(MesPcnExtConstWords.COMMA); + for (String field : splitField) { + fieldBuilder.append(MesPcnExtConstWords.COLON).append(field).append(MesPcnExtConstWords.E_UNDERLINE).append("%s , "); + } + //新增语句 + StringBuilder insertStr = new StringBuilder(" insert into mes_recyclable_package_binding_log"); + if (!StringUtils.isEmpty(mesShardingAppendOrg) && mesShardingAppendOrg.toUpperCase().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.name())) insertStr.append(MesPcnExtConstWords.E_UNDERLINE).append(organizeCode.toLowerCase()); + insertStr.append("(").append(fieldStr).append(") VALUES( "); + //sql组装 + Map parameterMap = new HashMap<>(); + StringBuilder builder = new StringBuilder(); + for (int i = MesPcnExtConstWords.ZERO; i < logList.size(); i++) { + int j = MesPcnExtConstWords.ZERO; + builder.append(insertStr).append(fieldBuilder.substring(MesPcnExtConstWords.ZERO, fieldBuilder.lastIndexOf(MesPcnExtConstWords.COMMA) - MesPcnExtConstWords.ONE).replaceAll("%s", String.valueOf(i))).append(" ); "); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), snowflakeIdMaker.nextId()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getCreateDatetime()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getCreateUser()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getDescription()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getIsDeleted()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getIsValid()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getOrganizeCode()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getRemark()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getSystemSyncDatetime()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getSystemSyncStatus()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getHangerCode()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getHangerPackageSn()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getHangerRuleCode()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getLotNumber()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getModifyType()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getOrderCode()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getPackageSn()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getPartName()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getPartNo()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getProductSn()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getQty()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getStatus()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j++]).add(String.valueOf(i)).toString(), logList.get(i).getTotalQty()); + parameterMap.put(new StringJoiner(MesPcnExtConstWords.E_UNDERLINE).add(splitField[j]).add(String.valueOf(i)).toString(), logList.get(i).getTypeCode()); + } + Query queryObject = entityManager.createNativeQuery(builder.toString()); + //数据填充 + for (String key : parameterMap.keySet()) { + queryObject.setParameter(key, parameterMap.get(key)); + } + queryObject.executeUpdate(); + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesEmergencyLocationServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesEmergencyLocationServiceImpl.java index 943bdab..dfd77de 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesEmergencyLocationServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesEmergencyLocationServiceImpl.java @@ -25,6 +25,7 @@ import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Objects; +import java.util.UUID; /** * @Description : 应急件库位管理 @@ -117,6 +118,7 @@ public class MesEmergencyLocationServiceImpl implements IMesEmergencyLocationSer locationWorkOrder.setCustPartNo(MesPcnExtConstWords.EMPTY); locationWorkOrder.setPartName(MesPcnExtConstWords.EMPTY); locationWorkOrder.setInDate(MesPcnExtConstWords.EMPTY); + locationWorkOrder.setOutDate(MesPcnExtConstWords.EMPTY); locationWorkOrder.setVehicleNo(MesPcnExtConstWords.EMPTY); locationWorkOrder.setSystemSyncStatus(CommonEnumUtil.FALSE); mesEmergencyLocationRepository.update(locationWorkOrder); @@ -170,11 +172,12 @@ public class MesEmergencyLocationServiceImpl implements IMesEmergencyLocationSer //新增加 while (model.getLocationNumber() > lastNumber) { MesEmergencyLocation location = new MesEmergencyLocation(); + location.setFid(UUID.randomUUID().toString()); location.setOrganizeCode(model.getOrganizeCode()); location.setWorkCenterCode(model.getWorkCenterCode()); location.setStatus(CommonEnumUtil.VALID); - location.setLocationNumber(lastNumber++); - location.setLocation(model.getWorkCenterCode() + "kw" + StringUtilExt.stringFormat(String.valueOf(lastNumber), 4, true, "0")); + location.setLocationNumber(++lastNumber); + location.setLocation(model.getWorkCenterCode() + "kw" + StringUtilExt.stringFormat(String.valueOf(lastNumber), 2, false, "0")); ConvertBean.serviceModelInitialize(location, model.getUserName()); mesEmergencyLocationRepository.insert(location); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingLogServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingLogServiceImpl.java index d507b4b..8a45b2a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingLogServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingLogServiceImpl.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.recyclablepackage; import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageBindingLogService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesInsertBatchDao; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBinding; @@ -30,6 +31,9 @@ public class MesRecyclablePackageBindingLogServiceImpl implements IMesRecyclable @Autowired private MesRecyclablePackageBindingLogRepository mesRecyclablePackageBindingLogRepository; + @Autowired + private IMesInsertBatchDao mesInsertBatchDao; + @Override public MesRecyclablePackageBindingLog insertCreate(MesRecyclablePackageBinding mesRecyclablePackageBinding) { return insert(mesRecyclablePackageBinding, MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_MODIFY_TYPE.CREATE); @@ -68,7 +72,7 @@ public class MesRecyclablePackageBindingLogServiceImpl implements IMesRecyclable ConvertBean.serviceModelInitialize(mesRecyclablePackageBindingLog, mesRecyclablePackageBindingDetail.getModifyUser()); logList.add(mesRecyclablePackageBindingLog); } - mesRecyclablePackageBindingLogRepository.saveAll(logList); + mesInsertBatchDao.insertMesRecyclablePackageBindingLog(logList,mesRecyclablePackageBinding.getOrganizeCode()); } public MesRecyclablePackageBindingLog insert(MesRecyclablePackageBinding mesRecyclablePackageBinding, MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_MODIFY_TYPE modifyType) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingServiceImpl.java index a7e64c3..aa6953d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingServiceImpl.java @@ -170,14 +170,11 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac @Override public void doMesRecyclablePackageUnBinding(MesRecyclablePackageBinding mesRecyclablePackageBinding, List bindingDetailList,String userName) { - for (MesRecyclablePackageBindingDetail detail : bindingDetailList) { - detail.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); - detail.setRemark(MesPcnExtConstWords.STEP_UNBINDING); - detail.setSystemSyncStatus(CommonEnumUtil.FALSE); - detail.setSystemSyncDatetime(MesPcnExtConstWords.EMPTY); - ConvertBean.serviceModelUpdate(detail, userName); - } - mesRecyclablePackageBindingDetailRepository.saveAll(bindingDetailList); + DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesRecyclablePackageBinding.getOrganizeCode()); + DdlPreparedPack.getNumEqualPack(mesRecyclablePackageBinding.getId(), MesPcnExtConstWords.PID, packBean); + mesRecyclablePackageBindingDetailRepository.updateByProperties( + new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.RESULT, MesPcnExtConstWords.SYSTEM_SYNC_STATUS}, + new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), MesPcnExtConstWords.STEP_UNBINDING, CommonEnumUtil.FALSE}, packBean); //更新数量 mesRecyclablePackageBinding.setTotalQty(MesPcnExtConstWords.ZERO); mesRecyclablePackageBinding.setStatus(MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.UNPACKED.getValue()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProcessMethodSourceBoxInOutStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProcessMethodSourceBoxInOutStepService.java index 468bcc3..106e8b1 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProcessMethodSourceBoxInOutStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProcessMethodSourceBoxInOutStepService.java @@ -113,7 +113,7 @@ public class MesProcessMethodSourceBoxInOutStepService extends BaseStepService { //保存进料可回用包装 productionDispatchContextStepService.dispatchProductionRecyclablePackageContext(reqBean, recyclablePackageContextList); - return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("可回用包装条码%s状态成功!", equipVariableCollectContextList.iterator().next().getEquipVariableValue())); + return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, String.format("可回用包装条码%s校验成功!", equipVariableCollectContextList.iterator().next().getEquipVariableValue())); } 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 88b2852..802738e 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 @@ -385,6 +385,8 @@ public class MesPcnExtConstWords { public static final Integer SIXTY = 60; //100 public static final Integer ONE_HUNDRED = 100; + //500 + public static final Integer FIVE_HUNDRED = 500; // 中括号 public static final String SQUARE_BRACKETS = "[]"; // &