Merge branch 'dev' into dev-wuhan

# Conflicts:
#	modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesReworkTaskServiceImpl.java
#	modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesInputDefectRecordService.java
#	modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java
#	modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java
#	modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesReportNoSortStepService.java
#	modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesReportSortStepService.java
tags/yfai-pcn-ext-v2.3
xiangwei.zhang 9 months ago
commit a2c4488860

@ -93,15 +93,15 @@ public class MesSortShippingCheckController {
organizeCode = !StringUtils.isEmpty(model.getOrganizeCode()) ? model.getOrganizeCode() : AuthUtil.getOrganize().getOrganizeCode();
userInfo = !StringUtils.isEmpty(model.getUserInfo()) ? model.getUserInfo() : AuthUtil.getSessionUser().getUserName();
//增加单据锁
moduleKey = organizeCode + key + "SHIPPING_CODE:" + model.getShippingCode();
moduleKey = organizeCode + key + "SN:" + model.getSn();
log.info("工厂:{} 排序发运扫描条码 --- {} --- START --- 操作人:{} --- THREAD:{}", organizeCode, moduleKey, userInfo, Thread.currentThread().getName());
log.info("工厂:{} 排序发运扫描条码 --- {} --- START --- 操作人:{} --- THREAD:{}", organizeCode, model.getSn(), userInfo, Thread.currentThread().getName());
//加锁
lockFlg = redisLockUtil.redisLock(moduleKey);
log.info("工厂:{} 排序发运扫描条码 --- {} --- LOCKED --- 操作人:{} --- THREAD:{}", organizeCode, moduleKey, userInfo, Thread.currentThread().getName());
log.info("工厂:{} 排序发运扫描条码 --- {} --- LOCKED --- 操作人:{} --- THREAD:{}", organizeCode, model.getSn(), userInfo, Thread.currentThread().getName());
// 数据校验
ValidatorBean.checkNotNull(model.getShippingCode(), "发运单不能为空");
@ -119,7 +119,7 @@ public class MesSortShippingCheckController {
//解锁
if (lockFlg) {
redisLockUtil.redisUnLock(lockFlg, moduleKey);
log.info("工厂:{} 排序发运扫描条码 --- {} --- UNLOCK --- 操作人:{} --- THREAD:{}", organizeCode, moduleKey, userInfo, Thread.currentThread().getName());
log.info("工厂:{} 排序发运扫描条码 --- {} --- UNLOCK --- 操作人:{} --- THREAD:{}", organizeCode, model.getSn(), userInfo, Thread.currentThread().getName());
}
}
}

@ -138,6 +138,9 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
private IMesWorkOrderExtService workOrderExtService;
@Autowired
private MesWorkOrderRepository workOrderRepository;
@Autowired
private MesProductVersionRepository productVersionRepository;
@Override
public ListPager<MesReworkTask> queryReworkTask(MesReworkTask mesReworkTask, Pager pager) {
String organizeCode = !StringUtils.isEmpty(mesReworkTask.getOrganizeCode())?mesReworkTask.getOrganizeCode():AuthUtil.getOrganizeCode();
@ -292,6 +295,23 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
if (MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.LOT.getValue() == mesReworkTask.getType()) {
mesReworkTask.setReworkedQty(requestModel.getReworkedQty());
mesReworkTask.setScrapQty(requestModel.getScrapQty());
// 如果是批次还需要移库
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getStringEqualPack(requestModel.getPartNo(), "partNo", ddlPackBean);
MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
String target = mesConfigService.getCfgValue(requestModel.getOrganizeCode(), "LGORT");
if (version != null) {
target = version.getReceiveInventoryPoint();
}
String workCenterCode = "";
// 获取替换条码信息列表
if (mesPartInspection != null) {
workCenterCode = mesPartInspection.getWorkCenterCode();
}
doCreateReworkMove(requestModel,getDestLocateNo(requestModel.getOrganizeCode(), mesPartInspection.getId()),target,workCenterCode,mesReworkTask.getPartNo(), mesPartInspection.getId());
} else {
//拆解
if(!CollectionUtils.isEmpty(requestModel.getAssemblyModelList())){
@ -796,6 +816,14 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
userName, organizeCode, 1).getResultList().get(0).toString();
}
private String getDestLocateNo(String organizeCode, Long partInspectionId) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(partInspectionId, "partInspectionId", packBean);
DdlPreparedPack.getOrderBy(null, null, packBean);
MesMove mesMove = moveRepository.getByProperty(packBean);
return Objects.isNull(mesMove) ? null : mesMove.getUmlgo();
}
private String getDestLocateNo(String organizeCode, String productSn) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(productSn, "productSn", packBean);
@ -803,8 +831,6 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
MesMove mesMove = moveRepository.getByProperty(packBean);
return Objects.isNull(mesMove) ? null : mesMove.getUmlgo();
}
private MesPartInspection getMesPartInspection(MesReworkTask mesReworkTask) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesReworkTask.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesReworkTask.getSn(), "sn", packBean);
@ -952,4 +978,25 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
ConvertBean.serviceModelInitialize(move, requestModel.getUserName());
moveRepository.insert(move);
}
private void doCreateReworkMove(MesReworkTaskRequestModel requestModel,String srcLocate, String destLocate,String workCenterCode,String partNo,Long partInspectionId) {
MesPartSap mesPartSap = mesPartService.getMesPartSapByPartNo(partNo, requestModel.getOrganizeCode());
MesMove move = new MesMove();
move.setMatnr(mesPartSap.getPartNo());
move.setOrganizeCode(requestModel.getOrganizeCode());
move.setFactoryCode(requestModel.getOrganizeCode());
move.setLgort(srcLocate);
move.setUmlgo(destLocate);
move.setPartInspectionId(partInspectionId);
move.setMenge(Double.valueOf(requestModel.getReworkedQty()+""));
move.setMeins(mesPartSap.getUnit());
move.setPostDate(TimeTool.getToday());
move.setPostTime(TimeTool.getTimeShortWithColon());
move.setMoveType(MesExtEnumUtil.MOVE_TYPE.RETURN_MOVE.getValue());
move.setProductSn(requestModel.getSn());
move.setWorkCenter(workCenterCode);
ConvertBean.serviceModelInitialize(move, requestModel.getUserName());
moveRepository.insert(move);
}
}

@ -243,11 +243,20 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
//返工单返修完成,需可疑品移正常库
if (model.isTransferFlg() && model.getSourceType() == MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue()) {
//移库
if (model.getOptType() != 2) {
MesMove move = createMove(model, getDestLocateNo(model, org), configService.getCfgValue(org, "LGORT"), org, null == produceSn ? model.getWorkCenterCode() : produceSn.getWorkCenterCode());
moveRepository.save(move);
//电子化检验
String target = configService.getCfgValue(org, "LGORT");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getStringEqualPack(model.getPartNo(), "partNo", ddlPackBean);
MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
if (version != null) {
target = version.getReceiveInventoryPoint();
}
MesMove move = createMove(model, getDestLocateNo(model, org), target, org, null == produceSn ? model.getWorkCenterCode() : produceSn.getWorkCenterCode());
moveRepository.save(move);
}
//判断首次合格还是 多次检验最终为合格品
@ -411,7 +420,8 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
}
}
//查询条码所在库位
srcLocateNo = getDestLocateNo(model, org);
// 20241010不找当前所在库位先找生产版本库位再找2000
// srcLocateNo = getDestLocateNo(model, org);
}
if (Objects.isNull(srcLocateNo)) {
srcLocateNo = configService.getCfgValue(org, "LGORT");
@ -421,7 +431,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
if (version != null) {
srcLocateNo = version.getShipInventoryPoint();
srcLocateNo = version.getReceiveInventoryPoint();
}
}
if (model.getOptType() != 2) {
@ -495,7 +505,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
if (version != null) {
srcLocateNo = version.getShipInventoryPoint();
srcLocateNo = version.getReceiveInventoryPoint();
}
MesMove move = createMove(model, srcLocateNo, configService.getCfgValue(org, "UMLGO"), org, null == produceSn ? model.getWorkCenterCode() : produceSn.getWorkCenterCode());
@ -536,9 +546,15 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
*/
private MesPartInspection getPartInspection(MesProduceSn produceSn,MesPartInspectionInputModel inputModel, String org) {
Integer refundFlag = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
if (inputModel.getOptType() == 2) {
refundFlag = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue();
}
//根据条码找最近一条单据
DdlPackBean packBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(produceSn.getProductSn(), "sn", packBean);
DdlPreparedPack.getNumEqualPack(refundFlag, "refundFlag", packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
MesPartInspection partInspection = partInspectionRepository.getByProperty(packBean);

@ -357,7 +357,7 @@ public class MesNcProcessingService implements IMesNcProcessingService {
MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
if (version != null) {
source = version.getShipInventoryPoint();
source = version.getReceiveInventoryPoint();
}
}
@ -403,7 +403,7 @@ public class MesNcProcessingService implements IMesNcProcessingService {
MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
if (version != null) {
target = version.getShipInventoryPoint();
target = version.getReceiveInventoryPoint();
}
//移库 转正常、放行8000移至2000
@ -562,8 +562,17 @@ public class MesNcProcessingService implements IMesNcProcessingService {
}
partInspectionRepository.save(model.getPartInspection());
String target = configService.getCfgValue(org, "LGORT");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getStringEqualPack(model.getPart().getPartNo(), "partNo", ddlPackBean);
MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
if (version != null) {
target = version.getReceiveInventoryPoint();
}
//移库 转正常、放行8000移至2000
MesMove move = createMove(model, sourceValue, configService.getCfgValue(org, "LGORT"), org, null == sn ? workCenterCode : sn.getWorkCenterCode(), MesExtEnumUtil.MOVE_TYPE.NORMAL_MOVE);
MesMove move = createMove(model, sourceValue, target, org, null == sn ? workCenterCode : sn.getWorkCenterCode(), MesExtEnumUtil.MOVE_TYPE.NORMAL_MOVE);
ConvertBean.serviceModelInitialize(move,model.getUserName());
moveRepository.save(move);

@ -144,18 +144,19 @@ public class MesRawPartChargingServiceImpl implements IMesRawPartChargingService
checkNotNull(mesRawPartChargingModel);
List<MesRawPartCharging> mesRawPartChargingList = findMesRawPartCharging(mesRawPartChargingModel);
if(CollectionUtils.isEmpty(mesRawPartChargingList)){
MesPcnException.throwMesBusiException("料筒条码【%s】未绑定无需初始化", mesRawPartChargingModel.getPackageSn());
}
for (MesRawPartCharging mesRawPartCharging : mesRawPartChargingList) {
//删除绑定信息
mesRawPartCharging.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
ConvertBean.serviceModelUpdate(mesRawPartCharging,mesRawPartChargingModel.getUserName());
mesRawPartChargingRepository.update(mesRawPartCharging);
//保存日志
saveLog(mesRawPartChargingModel, mesRawPartCharging, MesExtEnumUtil.CHARGING_LOG_STATUS.CLEAR);
if(!CollectionUtils.isEmpty(mesRawPartChargingList)){
for (MesRawPartCharging mesRawPartCharging : mesRawPartChargingList) {
//删除绑定信息
mesRawPartCharging.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
ConvertBean.serviceModelUpdate(mesRawPartCharging,mesRawPartChargingModel.getUserName());
mesRawPartChargingRepository.update(mesRawPartCharging);
//保存日志
saveLog(mesRawPartChargingModel, mesRawPartCharging, MesExtEnumUtil.CHARGING_LOG_STATUS.CLEAR);
}
// MesPcnException.throwMesBusiException("料筒条码【%s】未绑定无需初始化", mesRawPartChargingModel.getPackageSn());
}
}
private List<MesRawPackagePart> getMesRawPackagePartList(MesRawPartChargingModel mesRawPartChargingModel, MesRawPackageDetail packageDetail) {

@ -303,6 +303,78 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
DdlPackBean recentlyOrderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue(), "status", recentlyOrderPackBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"modifyDatetime"}, recentlyOrderPackBean);
MesShippingOrderManagement recentlyVehiclesOrder = shippingOrderManagementRepository.getByProperty(recentlyOrderPackBean);
model.setDetailList(detailList);
model.setShippingCode(orderManagement.getShippingCode());
if (!StringUtils.isEmpty(recentlyVehiclesOrder)) {
model.setRecentlyScanShippingCode(recentlyVehiclesOrder.getShippingCode());
}
return model;
}
@Override
public MesSortShippingCheckModel saveSn(MesSortShippingCheckModel model, String organizeCode, String userInfo) {
//校验发运单是否存在
MesShippingOrderManagement orderManagement = checkMesShippingOrderManagement(model, organizeCode);
//零件发运组
MesPartShippingGroup shippingGroup = getMesPartShippingGroup(organizeCode, orderManagement.getShippingGroupCode());
//根据条码找到对应的物料号若物料号一致则修改扫描flg将flg改为true.
//根据扫描的发运单以及前端传的发运单明细,进行匹配,若没有找到扫描的发运单,则提示扫描的发运单号不在此装车单中,请检查数据!。
//1 跳过
if(!Objects.isNull(model.getIsPass()) && Objects.equals(MesPcnExtConstWords.ONE,model.getIsPass())){
Optional<MesShippingOrderManagementDetail> shippingOrderManagementDetailOptional = model.getDetailList().stream().filter(t -> !Objects.equals(t.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).findFirst();
if(shippingOrderManagementDetailOptional.isPresent()){
MesShippingOrderManagementDetail mesShippingOrderManagementDetail = shippingOrderManagementDetailOptional.get();
MesProduceSn produceSn = new MesProduceSn();
produceSn.setProductSn(model.getSn());
updateOrderManagementDetails(userInfo, produceSn, orderManagement, mesShippingOrderManagementDetail,MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SKIP.getValue(),MesPcnExtConstWords.SHIP_PASS);
}else{
throw new ImppBusiException(String.format("【%s】明细已全部扫描完成请检查数据", orderManagement.getShippingCode()));
}
}else{
//校验条码
MesProduceSn produceSn = checkSn(model, organizeCode);
boolean scanFlg = false;
for (MesShippingOrderManagementDetail detail : model.getDetailList()) {
if (detail.getPartNo().equals(produceSn.getPartNo()) && StringUtils.isEmpty(detail.getBarcode()) && !Objects.equals(detail.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)) {
//校验发运单明细顺序
if(!StringUtils.isEmpty(shippingGroup.getIsEnableShippingFailSafe()) && CommonEnumUtil.VALID == shippingGroup.getIsEnableShippingFailSafe()){
Optional<MesShippingOrderManagementDetail> first = model.getDetailList().stream().filter(k -> k.getCustInfoSeq().compareTo(detail.getCustInfoSeq()) < 0 && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).findFirst();
if(first.isPresent()){
throw new ImppBusiException(String.format("发运单【%s】启用明细顺序防错序号【%s】前还有未扫描的发运单明细请检查数据", orderManagement.getShippingCode(), detail.getCustInfoSeq()));
}
}
//判断是否需要排序校验 默认排序则需要校验
if (!StringUtils.isEmpty(orderManagement.getScanSeqWay()) && orderManagement.getScanSeqWay() == MesExtEnumUtil.SHIPPING_GROUP_SCAN_CONFIRM_SEQ_MODE.DEFAULT_SORT.getValue()) {
//获取明细中最小的
Optional<String> minPartNO = model.getDetailList().stream().filter(k -> StringUtils.isEmpty(k.getBarcode()) && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER))
.min(Comparator.comparingLong(k -> k.getCustInfoSeq())).map(k -> k.getPartNo());
//若扫描的不是最小顺序 则报错
if (minPartNO.isPresent() && !minPartNO.get().equals(produceSn.getPartNo())) {
throw new ImppBusiException(String.format("【%s】此条码扫描顺序错误请检查数据", model.getSn()));
}
}
//校验客户零件信息是否存在
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(detail.getPartNo(), "erpPartNo", packBean);
DdlPreparedPack.getStringEqualPack(detail.getCustPartNo(), "custPartNo", packBean);
if(!mesCustomerPartRepository.isExitByHql(packBean)){
throw new ImppBusiException(String.format("零件号【%s】客户零件号【%s】关系不存在请检查数据", detail.getPartNo(),detail.getCustPartNo()));
}
scanFlg = true;
updateOrderManagementDetails(userInfo, produceSn, orderManagement, detail,MesExtEnumUtil.SHIPPING_ORDER_DETAIL_SHIPPING_STATUS.SHIPPINGED.getValue(),"扫描完成");
break;
}
}
if (!scanFlg) {
throw new ImppBusiException(String.format("【%s】此条码对应的【%s】物料号与发运单中物料号不匹配请检查数据", model.getSn(), produceSn.getPartNo()));
}
}
return shippingOrderManagementRepository.getByProperty(recentlyOrderPackBean);
}
@ -478,6 +550,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
//更新发运单
ConvertBean.serviceModelUpdate(orderManagement,userInfo);
update(orderManagement);
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
//不记忆时更新明细
if (!StringUtils.isEmpty(orderManagement.getIsEnableMemory()) && !Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)){
shippingOrderManagementDetailRepository.saveAll(orderManagementDetailList);
@ -527,6 +600,13 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService
MesEquipmentVariable mesEquipmentVariable = mesEquipmentExtService.getMesEquipmentVariable(organizeCode, rule.getEquipmentCode(), rule.getEquipVariableId());
if (Objects.isNull(mesEquipmentVariable)) {
MesPcnException.throwMesBusiException("设备【%s】设备变量ID【%s】信息不存在请检查", rule.getEquipmentCode(), rule.getEquipVariableId());
//更新装车单状态
if (!StringUtils.isEmpty(loadingList)) {
loadingList.setSystemSyncStatus(CommonEnumUtil.FALSE);
loadingList.setStatus(MesExtEnumUtil.MES_LOADING_STATUS.ASN.getValue());
ConvertBean.serviceModelUpdate(loadingList, userInfo);
shippingLoadingCheckService.update(loadingList);
}
}
//设备通道
MesEquipmentChannel mesEquipmentChannel = mesEquipmentExtService.getMesEquipmentChannel(organizeCode, rule.getEquipmentCode(), mesEquipmentVariable.getChannel());

@ -301,6 +301,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
newMesProductOffLine.setSapWorkCenter(oldMesWorkOrder.getErpWorkCenter());
newMesProductOffLine.setOrganizeCode(oldMesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime);
newMesProductOffLine.setBomTotalSize(mesBoms.size());
ConvertBean.serviceModelInitialize(newMesProductOffLine, userName);
mesProductOffLineList.add(newMesProductOffLine);
}
@ -371,6 +372,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
newMesProductOffLine.setOrganizeCode(organizeCode);
newMesProductOffLine.setDescription(mesProductionRecord.getCompleteDateTime());
newMesProductOffLine.setBomCode(mesBom.getBomCode());
newMesProductOffLine.setBomTotalSize(mesBoms.size());
ConvertBean.serviceModelInitialize(newMesProductOffLine, userName);
mesProductOffLineList.add(newMesProductOffLine);
}
@ -716,6 +718,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
LOGGER.info("条码【{}】报工成功,报工工单【{}】", productionRecord.getProductSn(), oldMesWorkOrder.getWorkOrderNo());
}
List<MesMove> mesMoveList = new ArrayList<>();
private MesProductOffLine getMesProductOffLine(MesProductionRecord productionRecord, String userName, MesWorkOrder oldMesWorkOrder, MesProductVersion mesProductVersion, MesBom mesBom) {
MesProductOffLine newMesProductOffLine = new MesProductOffLine();
@ -1075,7 +1078,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
String nowTime = TimeTool.getNowTime(true);
for (MesBom mesBom : mesBoms) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, nowTime));
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, nowTime,mesBoms.size()));
}
mesProductOffLineRDao.saveAll(mesProductOffLineList);
}
@ -1102,7 +1105,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
String nowTime = TimeTool.getNowTime(true);
for (MesBom mesBom : mesBomList) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, nowTime));
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, nowTime, mesBomList.size()));
}
mesProductOffLineRDao.saveAll(mesProductOffLineList);
}
@ -1411,7 +1414,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
}
private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion,
String sn, MesBom mesBom, String nowTime) {
String sn, MesBom mesBom, String nowTime,Integer bomTotalSize) {
MesProductOffLine newMesProductOffLine;
newMesProductOffLine = new MesProductOffLine();
newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo());
@ -1435,6 +1438,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getErpWorkCenter());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime);
newMesProductOffLine.setBomTotalSize(bomTotalSize);
ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser());
return newMesProductOffLine;
}

@ -136,8 +136,8 @@ public class AionPrintStrategy implements IPrintTemplateStrategyService {
if (StringUtils.isEmpty(part.getProductMatchRule())) MesPcnException.throwMesBusiException("物料[%s]未维护零件条码匹配规则", part.getPartNo());
MesNumberRule numberRule = numberRuleRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.RULE_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), part.getProcessMatchRule()});
if (null == numberRule) MesPcnException.throwMesBusiException("物料[%s]维护的零件条码匹配规则[%s]信息不存在", part.getPartNo(), part.getProcessMatchRule());
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), part.getProductMatchRule()});
if (null == numberRule) MesPcnException.throwMesBusiException("物料[%s]维护的零件条码匹配规则[%s]信息不存在", part.getPartNo(), part.getProductMatchRule());
return numberRule;
}

@ -151,8 +151,8 @@ public class GqxnyPrintStrategy implements IPrintTemplateStrategyService {
if (StringUtils.isEmpty(part.getProductMatchRule())) MesPcnException.throwMesBusiException("物料[%s]未维护零件条码匹配规则", part.getPartNo());
MesNumberRule numberRule = numberRuleRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.RULE_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), part.getProcessMatchRule()});
if (null == numberRule) MesPcnException.throwMesBusiException("物料[%s]维护的零件条码匹配规则[%s]信息不存在", part.getPartNo(), part.getProcessMatchRule());
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), part.getProductMatchRule()});
if (null == numberRule) MesPcnException.throwMesBusiException("物料[%s]维护的零件条码匹配规则[%s]信息不存在", part.getPartNo(), part.getProductMatchRule());
return numberRule;
}

@ -123,8 +123,8 @@ public class XiaoPengNewPrintStrategy implements IPrintTemplateStrategyService {
if (StringUtils.isEmpty(part.getProductMatchRule())) MesPcnException.throwMesBusiException("物料[%s]未维护零件条码匹配规则", part.getPartNo());
MesNumberRule numberRule = numberRuleRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.RULE_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), part.getProcessMatchRule()});
if (null == numberRule) MesPcnException.throwMesBusiException("物料[%s]维护的零件条码匹配规则[%s]信息不存在", part.getPartNo(), part.getProcessMatchRule());
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), part.getProductMatchRule()});
if (null == numberRule) MesPcnException.throwMesBusiException("物料[%s]维护的零件条码匹配规则[%s]信息不存在", part.getPartNo(), part.getProductMatchRule());
return numberRule;
}

@ -125,8 +125,8 @@ public class XiaoPengPrintStrategy implements IPrintTemplateStrategyService {
if (StringUtils.isEmpty(part.getProductMatchRule())) MesPcnException.throwMesBusiException("物料[%s]未维护零件条码匹配规则", part.getPartNo());
MesNumberRule numberRule = numberRuleRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.RULE_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), part.getProcessMatchRule()});
if (null == numberRule) MesPcnException.throwMesBusiException("物料[%s]维护的零件条码匹配规则[%s]信息不存在", part.getPartNo(), part.getProcessMatchRule());
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), part.getProductMatchRule()});
if (null == numberRule) MesPcnException.throwMesBusiException("物料[%s]维护的零件条码匹配规则[%s]信息不存在", part.getPartNo(), part.getProductMatchRule());
return numberRule;
}

@ -26,10 +26,8 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -173,6 +171,7 @@ public class MesProductionRecordGenerateStepService extends BaseStepService {
productionRecord.setOrganizeCode(reqBean.getOrganizeCode());
ConvertBean.serviceModelInitialize(productionRecord, reqBean.getUserInfo());
productionRecord.setCompleteDateTime(productionRecord.getModifyDatetime());
productionRecord.setCreateDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date()));
productionRecord.setFid(UUID.randomUUID().toString());
productionRecord.setOneMouldMoreId(UUID.randomUUID().toString());

Loading…
Cancel
Save