工单范围绑定条码

tags/yfai-mes-ext-v1.0
yxw 2 years ago
parent 7d4f92000f
commit 9010f98800

@ -63,6 +63,7 @@ public class BuWorkOrderExtController extends MesBaseController {
.notNull("workCenterCode",workOrderDto.getWorkCenterCode()) .notNull("workCenterCode",workOrderDto.getWorkCenterCode())
.notNull("startTime",workOrderDto.getStartTime()) .notNull("startTime",workOrderDto.getStartTime())
.notNull("endTime",workOrderDto.getEndTime()); .notNull("endTime",workOrderDto.getEndTime());
workOrderDto.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
workOrderExtService.insertManualGenerate(workOrderDto); workOrderExtService.insertManualGenerate(workOrderDto);
return ResultBean.success(); return ResultBean.success();
} catch (ImppBusiException busExcep) { } catch (ImppBusiException busExcep) {

@ -40,7 +40,7 @@ public class SxWorkCelITaktCollectRecordReportController extends MesBaseControll
try { try {
workCelITaktCollectRecord.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); workCelITaktCollectRecord.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
ListPager listPager = workCellTaktCollectRecordService.queryWorkCellTaktCollectRecrodLByPager(workCelITaktCollectRecord, pager); ListPager listPager = workCellTaktCollectRecordService.queryWorkCellTaktCollectRecrodLByPager(workCelITaktCollectRecord, pager);
return ResultBean.success("操作成功").setListPager(listPager) return ResultBean.success("查询成功").setListPager(listPager)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) { } catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep); return ResultBean.fail(busExcep);

@ -213,54 +213,7 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService {
mesWorkOrderExt.setOrderNo(getOrderNo(userName,organizeCode)); mesWorkOrderExt.setOrderNo(getOrderNo(userName,organizeCode));
mesWorkOrderExt.setWorkOrderSource(MesExtEnumUtil.WORK_ORDER_SOURCE.MANUALLY_GENERATE.getValue()); mesWorkOrderExt.setWorkOrderSource(MesExtEnumUtil.WORK_ORDER_SOURCE.MANUALLY_GENERATE.getValue());
doBindSn(workOrderDto, insertNewWorkOrder(mesWorkOrderExt), data); doBindSn(workOrderDto, addWorkOrder(mesWorkOrderExt), data);
}
private MesWorkOrderExt insertNewWorkOrder(MesWorkOrderExt mesWorkOrderExt) {
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
Integer workOrderType = mesWorkOrderExt.getWorkOrderType();
//如果是返工工单 设置是否生成条码为不生成
if (MesExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() == workOrderType) {
mesWorkOrderExt.setSnCreateStatus(MesExtEnumUtil.WORK_ORDER_SN_CREATE_STATUS.NO_CREATE.getValue());
} else {
//不是返工工单
MesPartExt mesPart = partExtRepository.getByProperty(
new String[]{"partNo", "organizeCode", "isValid", "isDeleted"},
new Object[]{mesWorkOrderExt.getPartNo(), organizeCode,
CommonEnumUtil.IS_VAILD.VAILD.getValue(),
CommonEnumUtil.IS_DEAL.NO.getValue()});
//判断物料是否需要生成条码
if (!ObjectUtils.isEmpty(mesPart)) {
Integer isCreateSn = mesPart.getIsCreateSn();
if (isCreateSn != null && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == isCreateSn) {
mesWorkOrderExt.setSnCreateStatus(MesExtEnumUtil.WORK_ORDER_SN_CREATE_STATUS.UN_CREATE.getValue());
} else {
mesWorkOrderExt.setSnCreateStatus(MesExtEnumUtil.WORK_ORDER_SN_CREATE_STATUS.NO_CREATE.getValue());
}
}
}
boolean havePart = isHavePart(mesWorkOrderExt.getPartNo(), organizeCode);
if (!havePart) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("物料号[%s]不存在",
mesWorkOrderExt.getPartNo())
.build();
}
mesWorkOrderExt.setWorkOrderStatus(MesExtEnumUtil.WORK_ORDER_STATUS.CREATE.getValue());
mesWorkOrderExt.setOrganizeCode(organizeCode);
mesWorkOrderExt.setSeq(MathOperation.add(getWorkOrderExtMaxSeq(organizeCode, 1), new Double(1)));
ConvertBean.modelInitialize(mesWorkOrderExt, AuthUtil.getSessionUser());
mesWorkOrderExt.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
new ConvertBeanExt(mesWorkOrderExt).convertBean(mesWorkOrderExt);
MesWorkOrderExt workOrderExt = workOrderExtRepository.insert(mesWorkOrderExt);
insertMesWorkOrderLog(workOrderExt);
return workOrderExt;
} }
private void doBindSn(GenerateWorkOrderDto workOrderDto, MesWorkOrderExt mesWorkOrderExt, Object data) { private void doBindSn(GenerateWorkOrderDto workOrderDto, MesWorkOrderExt mesWorkOrderExt, Object data) {
@ -288,16 +241,6 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService {
for (MesProduceSnExt produceSnExt : produceSnExtList) { for (MesProduceSnExt produceSnExt : produceSnExtList) {
ConvertBean.serviceModelUpdate(produceSnExt, mesWorkOrderExt.getModifyUser());
new ConvertBeanExt(produceSnExt).convertBean(produceSnExt);
produceSnExt.setLastWorkOrderNo(mesWorkOrderExt.getOrderNo());
produceSnExt.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.REPAIR.getValue());
produceSnExt.setRouteCode(null);
produceSnExt.setProcessCode(null);
produceSnExt.setWorkCellCode(null);
produceSnExt.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
new ConvertBeanExt(produceSnExt).convertBean(produceSnExt);
MesProduceSnRepair produceSnRepair = new MesProduceSnRepair(); MesProduceSnRepair produceSnRepair = new MesProduceSnRepair();
produceSnRepair.setSerialNumber(produceSnExt.getSerialNumber()); produceSnRepair.setSerialNumber(produceSnExt.getSerialNumber());
produceSnRepair.setProductSn(produceSnExt.getProductSn()); produceSnRepair.setProductSn(produceSnExt.getProductSn());
@ -312,12 +255,21 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService {
produceSnRepair.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); produceSnRepair.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
produceSnRepairList.add(produceSnRepair); produceSnRepairList.add(produceSnRepair);
ConvertBean.serviceModelUpdate(produceSnExt, mesWorkOrderExt.getModifyUser());
new ConvertBeanExt(produceSnExt).convertBean(produceSnExt);
produceSnExt.setLastWorkOrderNo(mesWorkOrderExt.getOrderNo());
produceSnExt.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.REPAIR.getValue());
produceSnExt.setRouteCode(null);
produceSnExt.setProcessCode(null);
produceSnExt.setWorkCellCode(null);
produceSnExt.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
new ConvertBeanExt(produceSnExt).convertBean(produceSnExt);
MesReworkOrderBindSnTravel reworkOrderBindSnTravel = new MesReworkOrderBindSnTravel(); MesReworkOrderBindSnTravel reworkOrderBindSnTravel = new MesReworkOrderBindSnTravel();
BeanUtils.copyProperties(produceSnRepair, reworkOrderBindSnTravel); BeanUtils.copyProperties(produceSnRepair, reworkOrderBindSnTravel);
reworkOrderBindSnTravel.setBindStatus(MesExtEnumUtil.BIND_STATUS.BINGDING.getValue()); reworkOrderBindSnTravel.setBindStatus(MesExtEnumUtil.BIND_STATUS.BINGDING.getValue());
reworkOrderBindSnTravelList.add(reworkOrderBindSnTravel); reworkOrderBindSnTravelList.add(reworkOrderBindSnTravel);
MesPackageDetail packageDetail = packageExtService.getPackageDetailByProductSn(mesWorkOrderExt.getOrganizeCode(), produceSnExt.getProductSn()); MesPackageDetail packageDetail = packageExtService.getPackageDetailByProductSn(mesWorkOrderExt.getOrganizeCode(), produceSnExt.getProductSn());
if (null != packageDetail) { if (null != packageDetail) {
MesPackageExt packageExt = packageExtService.getPackageByPackNo(mesWorkOrderExt.getOrganizeCode(), packageDetail.getPackageNo()); MesPackageExt packageExt = packageExtService.getPackageByPackNo(mesWorkOrderExt.getOrganizeCode(), packageDetail.getPackageNo());
@ -435,51 +387,51 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService {
checkSn(workOrderDto, produceSnExtDbList); checkSn(workOrderDto, produceSnExtDbList);
//编码规则 ////编码规则
String[] serialNoArray = numberRuleExt.getNumberRule().split("}\\{"); //String[] serialNoArray = numberRuleExt.getNumberRule().split("}\\{");
//规则属性长度拼接 ////规则属性长度拼接
String[] ruleLengthSpiltArray = numberRuleExt.getRuleLengthSpilt().split(","); //String[] ruleLengthSpiltArray = numberRuleExt.getRuleLengthSpilt().split(",");
String serialNoStr = "serialno"; //String serialNoStr = "serialno";
int serialNoIndex = -1; //int serialNoIndex = -1;
for (int index = 0; index < serialNoArray.length; index++) { //for (int index = 0; index < serialNoArray.length; index++) {
if(serialNoArray[index].contains(serialNoStr)) serialNoIndex = index; // if(serialNoArray[index].contains(serialNoStr)) serialNoIndex = index;
} //}
//
int ruleLengthTotal = 0; //int ruleLengthTotal = 0;
if(serialNoIndex != -1){ //if(serialNoIndex != -1){
for (int index = 0; index < serialNoIndex; index++) { // for (int index = 0; index < serialNoIndex; index++) {
ruleLengthTotal += Integer.parseInt(ruleLengthSpiltArray[index]); // ruleLengthTotal += Integer.parseInt(ruleLengthSpiltArray[index]);
} // }
} //}
int finalRuleLengthTotal = ruleLengthTotal; //int finalRuleLengthTotal = ruleLengthTotal;
int finalSerialNoIndex = serialNoIndex; //int finalSerialNoIndex = serialNoIndex;
produceSnExtDbList = produceSnExtDbList.stream().sorted(Comparator.comparing(MesProduceSnExt::getProductSn)).collect(Collectors.toList()); produceSnExtDbList = produceSnExtDbList.stream().sorted(Comparator.comparing(MesProduceSnExt::getProductSn)).collect(Collectors.toList());
Integer lastSerialNo = null; //Integer lastSerialNo = null;
String lastProductSn = null; //String lastProductSn = null;
for (MesProduceSnExt produceSnExt : produceSnExtDbList) { //for (MesProduceSnExt produceSnExt : produceSnExtDbList) {
//
int curSerialNo = Integer.parseInt(produceSnExt.getSerialNumber().substring(finalRuleLengthTotal, finalRuleLengthTotal + Integer.parseInt(ruleLengthSpiltArray[finalSerialNoIndex]))); // int curSerialNo = Integer.parseInt(produceSnExt.getSerialNumber().substring((Integer) numberRuleResultMap.get(MesExtConstWords.SEQNO_START_INDEX), (Integer) numberRuleResultMap.get(MesExtConstWords.SEQNO_END_INDEX)));
//
if (lastSerialNo == null) { // if (lastSerialNo == null) {
//
lastSerialNo = curSerialNo; // lastSerialNo = curSerialNo;
lastProductSn = produceSnExt.getProductSn(); // lastProductSn = produceSnExt.getProductSn();
continue; // continue;
} // }
//
if (curSerialNo - lastSerialNo !=1 ) { // if (curSerialNo - lastSerialNo !=1 ) {
throw ImppExceptionBuilder.newInstance() // throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) // .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) // .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("上一个产品条码[%s]与产品条码[%s]流水号存在跳号", lastProductSn, produceSnExt.getProductSn()) // .setErrorDetail("上一个产品条码[%s]与产品条码[%s]流水号存在跳号", lastProductSn, produceSnExt.getProductSn())
.build(); // .build();
} // }
//
lastProductSn = produceSnExt.getProductSn(); // lastProductSn = produceSnExt.getProductSn();
lastSerialNo = curSerialNo; // lastSerialNo = curSerialNo;
} //}
return produceSnExtDbList; return produceSnExtDbList;
} }
@ -550,7 +502,9 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService {
return !CollectionUtils.isEmpty(produceSnRepairList) ? produceSnRepairList.get(0) : null; return !CollectionUtils.isEmpty(produceSnRepairList) ? produceSnRepairList.get(0) : null;
} }
private void checkProduceNumberRuleIsValid(MesPartExt partExtDb, String ruleCode, MesNumberRuleExt numberRuleExt, String... productSnArr) { private Map<String,Object> checkProduceNumberRuleIsValid(MesPartExt partExtDb, String ruleCode, MesNumberRuleExt numberRuleExt, String... productSnArr) {
Map<String,Object> resultMap = new HashMap<>();
for (String productSn : productSnArr) { for (String productSn : productSnArr) {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
@ -558,16 +512,19 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService {
map.put(MesExtConstWords.NUMBER_RULE_EXT, numberRuleExt); map.put(MesExtConstWords.NUMBER_RULE_EXT, numberRuleExt);
map.put(MesExtConstWords.PART_EXT, partExtDb); map.put(MesExtConstWords.PART_EXT, partExtDb);
Map<String,Object> resultMap = numberRuleCheckAttributeService.doCheckNumberRule(map); resultMap = numberRuleCheckAttributeService.doCheckNumberRule(map);
if ((Boolean)resultMap.get(MesExtConstWords.RESULT) == false) { if ((Boolean)resultMap.get(MesExtConstWords.RESULT) == false) {
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("条码[%s]关联物料[%s]配置的编码规则代码[%s]无效", productSn, partExtDb.getPartNo(), ruleCode) .setErrorDetail("条码[%s]关联物料[%s]配置的编码规则代码[%s]编码规则不匹配", productSn, partExtDb.getPartNo(), ruleCode)
.build(); .build();
} }
} }
return resultMap;
} }
private void checkProductSnValid(String organizeCode, String partNo, String... produceSnArr) { private void checkProductSnValid(String organizeCode, String partNo, String... produceSnArr) {
@ -790,7 +747,7 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService {
if(workOrderDto.getPlanQty() > workOrderDto.getQty()) throw new BaseImppException("计划返工数量不能大于计划生产数量"); if(workOrderDto.getPlanQty() > workOrderDto.getQty()) throw new BaseImppException("计划返工数量不能大于计划生产数量");
} }
private void addWorkOrder(MesWorkOrderExt mesWorkOrderExt) { private MesWorkOrderExt addWorkOrder(MesWorkOrderExt mesWorkOrderExt) {
String organizeCode = AuthUtil.getOrganize().getOrganizeCode(); String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
Integer workOrderType = mesWorkOrderExt.getWorkOrderType(); Integer workOrderType = mesWorkOrderExt.getWorkOrderType();
MesPartExt mesPart = getPart(mesWorkOrderExt, organizeCode); MesPartExt mesPart = getPart(mesWorkOrderExt, organizeCode);
@ -892,7 +849,10 @@ public class BuWorkOrderExtService implements IBuWorkOrderExtService {
mesWorkOrderExt.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue()); mesWorkOrderExt.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
new ConvertBeanExt(mesWorkOrderExt).convertBean(mesWorkOrderExt); new ConvertBeanExt(mesWorkOrderExt).convertBean(mesWorkOrderExt);
MesWorkOrderExt workOrderExt = workOrderExtRepository.save(mesWorkOrderExt); MesWorkOrderExt workOrderExt = workOrderExtRepository.save(mesWorkOrderExt);
insertMesWorkOrderLog(workOrderExt); insertMesWorkOrderLog(workOrderExt);
return workOrderExt;
} }
private MesPartExt getPart(MesWorkOrderExt mesWorkOrderExt, String organizeCode) { private MesPartExt getPart(MesWorkOrderExt mesWorkOrderExt, String organizeCode) {

@ -128,6 +128,8 @@ public class SxNumberRuleCheckAttributeService implements ISxNumberRuleCheckAttr
} }
resultMap.put("ruleLengthList", new ArrayList<>(ruleLengthList));
int snIndex = 0; int snIndex = 0;
for (String s : numberRuleList) { for (String s : numberRuleList) {
switch (s) { switch (s) {
@ -195,6 +197,8 @@ public class SxNumberRuleCheckAttributeService implements ISxNumberRuleCheckAttr
} }
resultMap.put(MesExtConstWords.SN_WITHOUT_SEQNO, snWithoutSeqNoBuffer.replace(snIndex, snIndex + ruleLengthList.get(0), MesExtConstWords.SEQNO)); resultMap.put(MesExtConstWords.SN_WITHOUT_SEQNO, snWithoutSeqNoBuffer.replace(snIndex, snIndex + ruleLengthList.get(0), MesExtConstWords.SEQNO));
resultMap.put(MesExtConstWords.SEQNO_START_INDEX, snIndex);
resultMap.put(MesExtConstWords.SEQNO_END_INDEX, snIndex + ruleLengthList.get(0));
snIndex += ruleLengthList.get(0); snIndex += ruleLengthList.get(0);
serialNumberList.remove(0); serialNumberList.remove(0);

@ -289,7 +289,6 @@ public class SxReworkOrderBindSnExcelService implements IExcelImportExtService {
finalWorkOrderNoBySn.put(produceSnExt.getProductSn(), workOrderNo); finalWorkOrderNoBySn.put(produceSnExt.getProductSn(), workOrderNo);
if (!StringUtils.isEmpty(packageNo)) finalWorkOrderNoByPackSn.put(packageNo, workOrderNo); if (!StringUtils.isEmpty(packageNo)) finalWorkOrderNoByPackSn.put(packageNo, workOrderNo);
produceSnDbList.add(produceSnExt); produceSnDbList.add(produceSnExt);
successRowNum ++; successRowNum ++;
} else { } else {

@ -946,5 +946,9 @@ public class MesExtConstWords {
public static final String PART_EXT = "PART_EXT"; public static final String PART_EXT = "PART_EXT";
public static final String LEFT_BRACE = "{"; public static final String LEFT_BRACE = "{";
public static final String RIGHT_BRACE = "}"; public static final String RIGHT_BRACE = "}";
//流水号起始位置
public static final String SEQNO_START_INDEX = "SEQNO_START_INDEX";
//流水号截至位置
public static final String SEQNO_END_INDEX = "SEQNO_END_INDEX";
} }

Loading…
Cancel
Save