|
|
@ -149,11 +149,11 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
public void insertManualGenerate(GenerateWorkOrderDto workOrderDto) {
|
|
|
|
public void insertManualGenerate(GenerateWorkOrderDto workOrderDto) {
|
|
|
|
MesWorkOrderExt mesWorkOrderExt = new MesWorkOrderExt();
|
|
|
|
MesWorkOrderExt mesWorkOrderExt = new MesWorkOrderExt();
|
|
|
|
Double qty = workOrderDto.getQty();
|
|
|
|
|
|
|
|
Double planQty = workOrderDto.getPlanQty();
|
|
|
|
checkReworkQty(workOrderDto);
|
|
|
|
if (planQty > qty) {
|
|
|
|
|
|
|
|
throw new BaseImppException("计划返工数量不能大于计划生产数量");
|
|
|
|
checkReworkOrderBindSn(workOrderDto);
|
|
|
|
}
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(workOrderDto, mesWorkOrderExt);
|
|
|
|
BeanUtils.copyProperties(workOrderDto, mesWorkOrderExt);
|
|
|
|
String userName = AuthUtil.getSessionUser().getUserName();
|
|
|
|
String userName = AuthUtil.getSessionUser().getUserName();
|
|
|
|
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
|
|
|
|
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
|
|
|
@ -162,35 +162,41 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
insertNewWorkOrder(mesWorkOrderExt);
|
|
|
|
insertNewWorkOrder(mesWorkOrderExt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<MesProduceSnExt> checkReworkOrderBindSn(GenerateWorkOrderDto workOrderDto) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(workOrderDto.getProduceSnStart()) || StringUtils.isEmpty(workOrderDto.getProduceSnEnd())) return null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<MesProduceSnExt> produceSnExtList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return produceSnExtList;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void checkReworkQty(GenerateWorkOrderDto workOrderDto) {
|
|
|
|
|
|
|
|
Double qty = workOrderDto.getQty();
|
|
|
|
|
|
|
|
Double planQty = workOrderDto.getPlanQty();
|
|
|
|
|
|
|
|
if (planQty > qty) {
|
|
|
|
|
|
|
|
throw new BaseImppException("计划返工数量不能大于计划生产数量");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void insertNewWorkOrder(MesWorkOrderExt mesWorkOrderExt) {
|
|
|
|
private void insertNewWorkOrder(MesWorkOrderExt mesWorkOrderExt) {
|
|
|
|
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
|
|
|
|
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
|
|
|
|
Integer workOrderType = mesWorkOrderExt.getWorkOrderType();
|
|
|
|
Integer workOrderType = mesWorkOrderExt.getWorkOrderType();
|
|
|
|
MesPartExt partExt = partExtService.getPartExt(organizeCode, mesWorkOrderExt.getPartNo());
|
|
|
|
MesPartExt partExt = getMesPartExt(mesWorkOrderExt, organizeCode);
|
|
|
|
if (partExt == null) {
|
|
|
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
|
|
|
.setErrorDetail("物料【】号不存在", mesWorkOrderExt.getPartNo())
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//如果是返工工单 设置是否生成条码为不生成
|
|
|
|
//如果是返工工单 设置是否生成条码为不生成
|
|
|
|
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() == workOrderType) {
|
|
|
|
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() == workOrderType) {
|
|
|
|
mesWorkOrderExt.setSnCreateStatus(MesPcnExtEnumUtil.WORK_ORDER_SN_CREATE_STATUS.NO_CREATE.getValue());
|
|
|
|
mesWorkOrderExt.setSnCreateStatus(MesPcnExtEnumUtil.WORK_ORDER_SN_CREATE_STATUS.NO_CREATE.getValue());
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
//不是返工工单
|
|
|
|
//不是返工工单
|
|
|
|
//判断物料是否需要生成条码
|
|
|
|
//判断物料是否需要生成条码
|
|
|
|
//if (!ObjectUtils.isEmpty(partExt))
|
|
|
|
if (partExt.getIsCreateSn() != null && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == partExt.getIsCreateSn()) mesWorkOrderExt.setSnCreateStatus(MesPcnExtEnumUtil.WORK_ORDER_SN_CREATE_STATUS.UN_CREATE.getValue());
|
|
|
|
Integer isCreateSn = partExt.getIsCreateSn();
|
|
|
|
else mesWorkOrderExt.setSnCreateStatus(MesPcnExtEnumUtil.WORK_ORDER_SN_CREATE_STATUS.NO_CREATE.getValue());
|
|
|
|
if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == isCreateSn) {
|
|
|
|
|
|
|
|
mesWorkOrderExt.setSnCreateStatus(MesPcnExtEnumUtil.WORK_ORDER_SN_CREATE_STATUS.UN_CREATE.getValue());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
mesWorkOrderExt.setSnCreateStatus(MesPcnExtEnumUtil.WORK_ORDER_SN_CREATE_STATUS.NO_CREATE.getValue());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
mesWorkOrderExt.setWorkOrderStatus(MesPcnExtEnumUtil.WORK_ORDER_STATUS.LANDED.getValue());
|
|
|
|
mesWorkOrderExt.setWorkOrderStatus(MesPcnExtEnumUtil.WORK_ORDER_STATUS.LANDED.getValue());
|
|
|
|
mesWorkOrderExt.setOrganizeCode(organizeCode);
|
|
|
|
mesWorkOrderExt.setOrganizeCode(organizeCode);
|
|
|
|
// mesWorkOrderExt.setSeq(getSeqMax() + 1);
|
|
|
|
|
|
|
|
mesWorkOrderExt.setSeq(MathOperation.add(getWorkOrderExtMaxSeq(organizeCode, 1), new Double(1)));
|
|
|
|
mesWorkOrderExt.setSeq(MathOperation.add(getWorkOrderExtMaxSeq(organizeCode, 1), new Double(1)));
|
|
|
|
|
|
|
|
|
|
|
|
ConvertBean.modelInitialize(mesWorkOrderExt, AuthUtil.getSessionUser());
|
|
|
|
ConvertBean.modelInitialize(mesWorkOrderExt, AuthUtil.getSessionUser());
|
|
|
@ -200,6 +206,18 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
insertMesWorkOrderLog(workOrderExt);
|
|
|
|
insertMesWorkOrderLog(workOrderExt);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private MesPartExt getMesPartExt(MesWorkOrderExt mesWorkOrderExt, String organizeCode) {
|
|
|
|
|
|
|
|
MesPartExt partExt = partExtService.getPartExt(organizeCode, mesWorkOrderExt.getPartNo());
|
|
|
|
|
|
|
|
if (partExt == null) {
|
|
|
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
|
|
|
.setErrorDetail("物料编码[%s]不存在", mesWorkOrderExt.getPartNo())
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return partExt;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private synchronized Double getWorkOrderExtMaxSeq(String organizeCode, Integer count) {
|
|
|
|
private synchronized Double getWorkOrderExtMaxSeq(String organizeCode, Integer count) {
|
|
|
|
Double maxSeq = new Double(0);
|
|
|
|
Double maxSeq = new Double(0);
|
|
|
|
try {
|
|
|
|
try {
|
|
|
@ -219,6 +237,7 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
maxSeq = JsonUtilTool.decode(JSONObject.toJSONString(resultObject), Double.class);
|
|
|
|
maxSeq = JsonUtilTool.decode(JSONObject.toJSONString(resultObject), Double.class);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
log.error("getWorkOrderExtMaxSeq --- 获取最大序列号失败原因:{}", e.toString());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.SEQ}, packBean);
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{MesPcnExtConstWords.SEQ}, packBean);
|
|
|
@ -325,19 +344,7 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//根据产线获取产线信息
|
|
|
|
//根据产线获取产线信息
|
|
|
|
MesWorkCenter mesWorkCenter = workCenterRepository.getByProperty(
|
|
|
|
MesWorkCenter mesWorkCenter = getMesWorkCenter(i, organizeCode, excelWorkOrderDto);
|
|
|
|
new String[]{"workCenterCode", "organizeCode", "isValid", "isDeleted"},
|
|
|
|
|
|
|
|
new Object[]{excelWorkOrderDto.getWorkCenterCode(), organizeCode,
|
|
|
|
|
|
|
|
CommonEnumUtil.IS_VAILD.VAILD.getValue(),
|
|
|
|
|
|
|
|
CommonEnumUtil.IS_DEAL.NO.getValue()});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mesWorkCenter == null) {
|
|
|
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
|
|
|
.setErrorDetail("第【%s】行的产线代码【%s】在产线信息中不存在数据", i, excelWorkOrderDto.getWorkCenterCode())
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MesWorkOrderExt mesWorkOrderExt = new MesWorkOrderExt();
|
|
|
|
MesWorkOrderExt mesWorkOrderExt = new MesWorkOrderExt();
|
|
|
|
|
|
|
|
|
|
|
@ -359,6 +366,23 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private MesWorkCenter getMesWorkCenter(Integer i, String organizeCode, ExcelWorkOrderDto excelWorkOrderDto) {
|
|
|
|
|
|
|
|
MesWorkCenter mesWorkCenter = workCenterRepository.getByProperty(
|
|
|
|
|
|
|
|
new String[]{"workCenterCode", "organizeCode", "isValid", "isDeleted"},
|
|
|
|
|
|
|
|
new Object[]{excelWorkOrderDto.getWorkCenterCode(), organizeCode,
|
|
|
|
|
|
|
|
CommonEnumUtil.IS_VAILD.VAILD.getValue(),
|
|
|
|
|
|
|
|
CommonEnumUtil.IS_DEAL.NO.getValue()});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mesWorkCenter == null) {
|
|
|
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
|
|
|
.setErrorDetail("第【%s】行的产线代码【%s】在产线信息中不存在数据", i, excelWorkOrderDto.getWorkCenterCode())
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return mesWorkCenter;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 调整工作顺序
|
|
|
|
* 调整工作顺序
|
|
|
|
*
|
|
|
|
*
|
|
|
|