等离子工步写入数据耗时较长

tags/yfai-pcn-ext-v2.3
jun 7 months ago
parent c82473c72a
commit 2579987543

@ -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<MesRecyclablePackageBindingLog> logList,String organizeCode);
}

@ -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<MesRecyclablePackageBindingLog> 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<MesRecyclablePackageBindingLog> 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<String, Object> 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();
}
}

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

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

@ -170,14 +170,11 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac
@Override
public void doMesRecyclablePackageUnBinding(MesRecyclablePackageBinding mesRecyclablePackageBinding, List<MesRecyclablePackageBindingDetail> 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());

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

@ -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 = "[]";
// &

Loading…
Cancel
Save