|
|
|
@ -47,6 +47,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
import java.util.stream.IntStream;
|
|
|
|
@ -201,7 +202,9 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
|
|
|
|
|
.sn(res.getSn())
|
|
|
|
|
.mesPartTypePicture(mesPartTypePicture)
|
|
|
|
|
.mesPartInspection(mesPartInspection)
|
|
|
|
|
.mesPartInspectionDetails(mesPartInspectionDetails).build();
|
|
|
|
|
.mesPartInspectionDetails(mesPartInspectionDetails)
|
|
|
|
|
.centerType(StringUtils.isEmpty(requestModel.getCenterType()) ? MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue() : requestModel.getCenterType())
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return mesReworkTaskModel;
|
|
|
|
@ -335,6 +338,85 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doSortOrderDismantle(MesReworkTaskRequestModel requestModel) {
|
|
|
|
|
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(requestModel.getReworkOrder(), MesPcnExtConstWords.REWORK_ORDER, packBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.REWORK_TASK_STATUS.CREATE.getValue(), MesPcnExtConstWords.STATUS, packBean);
|
|
|
|
|
MesReworkTask reworkTask = mesReworkTaskRepository.getByProperty(packBean);
|
|
|
|
|
if (null == reworkTask) MesPcnException.throwBusiException(String.format("返工单[%s]信息不存在!", requestModel.getReworkOrder()));
|
|
|
|
|
|
|
|
|
|
MesProduceSn produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(requestModel.getOrganizeCode(), reworkTask.getSn(), false);
|
|
|
|
|
if (null == produceSn) MesPcnException.throwBusiException(String.format("返工单[%s]关联的条码[%s]信息不存在!", requestModel.getReworkOrder(), reworkTask.getSn()));
|
|
|
|
|
|
|
|
|
|
MesWorkOrder workOrder = workOrderExtService.getWorkOrder(requestModel.getOrganizeCode(), produceSn.getWorkOrderNo());
|
|
|
|
|
if (null == produceSn) MesPcnException.throwBusiException(String.format("返工单[%s]关联的条码[%s]对应的加工单[%s]信息不存在!", requestModel.getReworkOrder(), reworkTask.getSn(), produceSn.getWorkOrderNo()));
|
|
|
|
|
|
|
|
|
|
if (workOrder.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.DISMANTLE.getValue()) == 0)
|
|
|
|
|
MesPcnException.throwBusiException(String.format("返工单[%s]关联的条码[%s]对应的加工单[%s]信息当前状态已为[%s]!",
|
|
|
|
|
requestModel.getReworkOrder(), reworkTask.getSn(), produceSn.getWorkOrderNo(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus())));
|
|
|
|
|
|
|
|
|
|
//修改返工表状态为完成
|
|
|
|
|
reworkTask.setStatus(MesExtEnumUtil.REWORK_TASK_STATUS.FINISH.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(reworkTask, requestModel.getUserName());
|
|
|
|
|
reworkTask.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
mesReworkTaskRepository.updateNoSync(reworkTask);
|
|
|
|
|
|
|
|
|
|
//修改NC-零件检测-单据表 NC状态为拆解; qmsSync状态是否变更待确认
|
|
|
|
|
packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(reworkTask.getId(), MesPcnExtConstWords.REWORK_TASK_ID, packBean);
|
|
|
|
|
mesPartInspectionRepository.updateByPropertiesNoSync(
|
|
|
|
|
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.NC_STATUS},
|
|
|
|
|
new Object[]{requestModel.getUserName(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesExtEnumUtil.PART_INSPECTION_NC_STATUS.DISASSEMBLY.getValue()},
|
|
|
|
|
packBean);
|
|
|
|
|
|
|
|
|
|
//修改工单状态为已拆解
|
|
|
|
|
workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.DISMANTLE.getValue());
|
|
|
|
|
workOrder.setModifyUser(requestModel.getUserName());
|
|
|
|
|
workOrder.setModifyDatetime((new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()));
|
|
|
|
|
workOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
workOrderRepository.updateNoSync(workOrder);
|
|
|
|
|
|
|
|
|
|
//修改条码状态为总成拆解
|
|
|
|
|
packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSn.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSn.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
produceSnExtService.saveProduceSntatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_DISASSEMBLY.getValue());
|
|
|
|
|
|
|
|
|
|
//查询装配件绑定记录表
|
|
|
|
|
List<MesProductionAssembly> productionAssemblyList = mesAssemblyExtService.getProductionAssemblyList(requestModel.getOrganizeCode(), workOrder.getWorkOrderNo());
|
|
|
|
|
productionAssemblyList = CollectionUtils.isEmpty(productionAssemblyList) ? null :
|
|
|
|
|
productionAssemblyList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()) != 0)).collect(Collectors.toList());
|
|
|
|
|
if (CollectionUtils.isEmpty(productionAssemblyList)) return;
|
|
|
|
|
|
|
|
|
|
//将自制件类型的装配件对应的零件条码状态改成已拆解
|
|
|
|
|
for (MesProductionAssembly productionAssembly : productionAssemblyList) {
|
|
|
|
|
if (null == productionAssembly) continue;
|
|
|
|
|
if (productionAssembly.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_10.getValue()) != 0) continue;
|
|
|
|
|
if (StringUtils.isEmpty(productionAssembly.getProductSn()) || StringUtils.isEmpty(productionAssembly.getPartNo())) continue;
|
|
|
|
|
packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(productionAssembly.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(productionAssembly.getPartNo(), MesPcnExtConstWords.PART_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY.getValue(), MesPcnExtConstWords.SN_STATUS, packBean);
|
|
|
|
|
produceSnExtService.saveProduceSntatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_BACK.getValue());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//将装配件绑定记录表的非解绑状态的记录改为解绑状态
|
|
|
|
|
packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSn.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean);
|
|
|
|
|
DdlPreparedPack.getNumNOEqualPack(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue(), MesPcnExtConstWords.ASSEMBLY_STATUS, packBean);
|
|
|
|
|
mesAssemblyExtService.saveProductionAssemblyStatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue());
|
|
|
|
|
|
|
|
|
|
//将装配件绑定唯一性记录表的非解绑状态的记录改为解绑状态;条件公用
|
|
|
|
|
mesAssemblyExtService.saveProductionAssemblyUniqueStatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue());
|
|
|
|
|
|
|
|
|
|
//将工单装配件表的非解绑状态的记录改为解绑状态;条件公用,增加工单条件
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSn.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
mesAssemblyExtService.saveWorkOrderAssemblyStatusByDdlPackBean(packBean, requestModel.getUserName(), MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesProduceSnPrintModel doPrint(MesReworkTaskRequestModel requestModel) {
|
|
|
|
|
String organizeCode = requestModel.getOrganizeCode();
|
|
|
|
|
String userName = requestModel.getUserName();
|
|
|
|
@ -864,10 +946,15 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesReworkTask getMesReworkTask(MesReworkTaskRequestModel requestModel) {
|
|
|
|
|
String workCenterCode = null;
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(requestModel.getOrganizeCode());
|
|
|
|
|
if (!StringUtils.isEmpty(requestModel.getSn())) {
|
|
|
|
|
MesProduceSn produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(requestModel.getOrganizeCode(), requestModel.getSn(), false);
|
|
|
|
|
if(!StringUtil.isEmpty(produceSn)){
|
|
|
|
|
//根据零件条码查询
|
|
|
|
|
MesProduceSn produceSn = produceSnExtService.getProduceSnCreateDatetimeDesc(requestModel.getOrganizeCode(), requestModel.getSn());
|
|
|
|
|
//不存在则进行二次查询排序条码
|
|
|
|
|
if (null == produceSn) produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(requestModel.getOrganizeCode(), requestModel.getSn(), false);
|
|
|
|
|
if (null != produceSn) {
|
|
|
|
|
workCenterCode = produceSn.getWorkCenterCode();
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSn.getProductSn(), "sn", packBean);
|
|
|
|
|
}else {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(requestModel.getSn(), "sn", packBean);
|
|
|
|
@ -882,6 +969,19 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
|
|
|
|
|
if (res == null) {
|
|
|
|
|
throw new ImppBusiException("返工单信息不存在");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//选择返工工单场景下 根据返工工单信息里面的条码进行反查生产线
|
|
|
|
|
if (!StringUtils.isEmpty(requestModel.getReworkOrder())) {
|
|
|
|
|
MesProduceSn produceSn = produceSnExtService.getProduceSnCreateDatetimeDesc(requestModel.getOrganizeCode(), res.getSn());
|
|
|
|
|
if (null == produceSn) produceSn = (MesProduceSn) workOrderExtService.getWorkOrderSort(requestModel.getOrganizeCode(), res.getSn(), false);
|
|
|
|
|
if (null != produceSn) workCenterCode = produceSn.getWorkCenterCode();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.isEmpty(workCenterCode)) {
|
|
|
|
|
//获取生产线类型, 用于前端判断, 支持点击 拆解按钮 还是 排序拆解按钮, 同时 返工完成按钮 根据生产线类型调用的接口不一样
|
|
|
|
|
MesWorkCenter workCenter = prodOrgExtService.getWorkCenterDb(requestModel.getOrganizeCode(), workCenterCode);
|
|
|
|
|
if (null != workCenter) requestModel.setCenterType(workCenter.getCenterType());
|
|
|
|
|
}
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
private List<MesReworkTaskDetail> getMesReworkTaskDetail(MesReworkTask mesReworkTask) {
|
|
|
|
|