Merge branch 'uat-temp-wj-chongqingdaqu-prod-huaweiyun' into uat-temp-wj-chongqingdaqu-prod-merge-longxing-shipping-lijia-cd

uat-temp-wj-chongqingdaqu-prod-merge-longxing-shipping-lijia-cd
王杰 3 months ago
commit 15e9bc41cb

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.api.iservice.base.IConfigService;
import cn.estsh.i3plus.pojo.mes.bean.MesConfig;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
@ -11,12 +12,16 @@ import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@Api("获取系统配置的模版信息")
@RestController
@ -54,4 +59,31 @@ public class MesLabelTemplateExtController {
}
}
@GetMapping("/label-template/by-module-or-template/get-custom")
@ApiOperation(value = "获取系统配置的模版信息")
public ResultBean queryModuleCodeCfg(String organizeCode, String moduleCode, String chooseCodes, String templateCode) {
try {
ValidatorBean.checkNotNull(organizeCode, "工厂代码不能为空");
if (StringUtils.isEmpty(moduleCode) && StringUtils.isEmpty(templateCode)) {
ValidatorBean.checkNotNull(moduleCode, "模版配置代码不能为空");
}
if (StringUtils.isEmpty(chooseCodes)) return queryMesLabelTemplate(organizeCode, moduleCode, templateCode);
List<String> chooseCodeList = Arrays.asList(chooseCodes.split(MesPcnExtConstWords.COMMA));
List<MesConfig> configList = configService.getMesConfigListByCfgCodeKey(moduleCode, MesPcnExtConstWords.CUSTOM_CFG, organizeCode);
Optional<MesConfig> optional = CollectionUtils.isEmpty(configList) ? null :
configList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCfgValue())
&& !StringUtils.isEmpty(o.getCfgType()) && chooseCodeList.contains(o.getCfgType()))).findFirst();
return queryMesLabelTemplate(organizeCode, (null == optional || !optional.isPresent()) ? moduleCode : optional.get().getCfgValue(), templateCode);
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNcProcessingService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcPersonModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingInputModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -110,6 +111,36 @@ public class MesNcProcessingController {
}
}
@PostMapping("/save-nc-lt")
@ApiOperation(value = "NC处理")
public ResultBean lotSaveNc(@RequestBody MesNcProcessingInputModel model) {
try {
ValidatorBean.checkNotNull(model.getOrganizeCode(), "工厂不能为空");
ValidatorBean.checkNotNull(model.getUserName(), "操作人不能为空");
ValidatorBean.checkNotNull(model.getPartInspection(), "单据不能为空");
ValidatorBean.checkNotNull(model.getPartInspectionDetailList(), "单据明细不能为空");
if (CollectionUtils.isEmpty(model.getPersonModelList())) {
throw new ImppBusiException("责任人信息不能为空");
}
for (MesNcPersonModel mesNcPersonModel : model.getPersonModelList()) {
if (mesNcPersonModel.getNcStatus() == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.REWORK.getValue()
|| mesNcPersonModel.getNcStatus() == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.SCRAP.getValue()) {
ValidatorBean.checkNotNull(mesNcPersonModel.getOnlyPerson(), "责任人不能为空");
}
}
if (CollectionUtils.isEmpty(model.getPartInspectionDetailList())) {
throw new ImppBusiException("不存在可疑信息,请检查数据");
}
ncProcessingService.saveNc(model, model.getOrganizeCode(), false);
return ResultBean.success("NC处理成功");
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/query-part-inspection-create-user")
@ApiOperation(value = "查询检验人NC-零件检测-单据 表的createUser")
public ResultBean queryPartInspectionCreateUser(String organizeCode) {

@ -42,6 +42,7 @@ import org.springframework.util.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Description :
@ -136,7 +137,7 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
//获取NC-零件检测-单据
MesPartInspection partInspection = null;
Integer sourceType;
if (!StringUtils.isEmpty(model.getSn())) {
if (!StringUtils.isEmpty(model.getSn()) && StringUtils.isEmpty(model.getLotNo())) {
// 数据校验
ValidatorBean.checkNotNull(model.getFrontBack(), "正反面不能为空");
//检查条码
@ -164,8 +165,11 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
if(!Objects.isNull(model.getId())){
partInspection = getPartInspectionByPartAndLot(model, model.getOrganizeCode());
}
sourceType = MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.LOT.getValue();
if (!StringUtils.isEmpty(model.getSn())) {
sourceType = MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.IMPORT.getValue();
} else {
sourceType = MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.LOT.getValue();
}
}
//检查零件类型与图片对应关系
@ -790,13 +794,15 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
* @return
*/
private MesPartInspection getPartInspectionByPartAndLot(MesPartInspectionInputModel inputModel, String org) {
List<Integer> list = Stream.of(MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.LOT.getValue(),MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.IMPORT.getValue()).collect(Collectors.toList());
//根据扫描的条码查询条码是否存在
DdlPackBean packBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getNumEqualPack(inputModel.getId(), "id", packBean);
DdlPreparedPack.getStringEqualPack(inputModel.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringEqualPack(inputModel.getLotNo(), "lotNo", packBean);
DdlPreparedPack.getNegativeNumEqualPack(inputModel.getQty(), "qty", packBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.LOT.getValue(), "sourceType", packBean);
DdlPreparedPack.getInPackList(list, "sourceType", packBean);
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"createDatetime"}, packBean);
MesPartInspection partInspection = partInspectionRepository.getByProperty(packBean);
@ -1235,7 +1241,8 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
partInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.CREATE.getValue());
partInspection.setOrganizeCode(org);
String defectTypeCodeStr = configService.getCfgValue(org, "MES_SUSPICIOUS_DEFECT_TYPE_CODE") == null ? "QX130" :configService.getCfgValue(org, "MES_SUSPICIOUS_DEFECT_TYPE_CODE");
MesConfig mesConfig = configService.getMesConfigNoError(org, "MES_SUSPICIOUS_DEFECT_TYPE_CODE");
String defectTypeCodeStr = (null != mesConfig && !StringUtils.isEmpty(mesConfig.getCfgValue())) ? mesConfig.getCfgValue() : "QX130";
//根据页面上选择的位置 查询位置,若不存在则提示 位置不存在,请检查数据
DdlPackBean packBean = DdlPackBean.getDdlPackBean(org);

@ -4,10 +4,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesNcProcessingDao;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingInputModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingPartAndLotModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesPartModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
@ -22,6 +19,7 @@ import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspectionDetail;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspectionPerson;
import cn.estsh.i3plus.pojo.mes.bean.rework.MesReworkTask;
import cn.estsh.i3plus.pojo.mes.bean.rework.MesReworkTaskDetail;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
@ -124,6 +122,10 @@ public class MesNcProcessingService implements IMesNcProcessingService {
@Autowired
private IMesMoveRuleRepository mesMoveRuleRepository;
@Autowired
private MesPartInspectionPersonRepository mesPartInspectionPersonRepository;
@Override
public ListPager<MesPartInspection> queryPartInspectionByPager(MesPartInspection partInspection, Pager pager) {
@ -204,11 +206,8 @@ public class MesNcProcessingService implements IMesNcProcessingService {
//保存数据
saveDate(model, model.getPart(), type, person, org,model.getInventoryLocationCode(),isOrder);
} else {
Integer type = model.getType();
MesDefectType person = StringUtil.isEmpty(model.getPerson())?new MesDefectType():model.getPerson();
//保存数据
saveDate(model, model.getPart(), type, person, org,model.getInventoryLocationCode(), isOrder);
saveLotDate(model, model.getPart(), org, isOrder);
}
}
@ -698,6 +697,227 @@ public class MesNcProcessingService implements IMesNcProcessingService {
}
}
}
/**
*
*
* @param part
* @param model
* @param org
*/
private void saveLotDate(MesNcProcessingInputModel model, MesPartSap part,String org, boolean isOrder) {
String workCenterCode = null == model.getPartInspection() ? null : model.getPartInspection().getWorkCenterCode();
assert model.getPartInspection() != null;
model.getPartInspection().setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
String refundSource = configService.getCfgValue(org, "REFUND");
List<MesPartInspectionPerson> personList = new ArrayList<>();
MesPartInspection mesPartInspection = model.getPartInspection();
for (MesNcPersonModel mesNcPersonModel : model.getPersonModelList()) {
Integer type = mesNcPersonModel.getNcStatus();
if (type == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.NORMAL.getValue()) {
model.getPartInspection().setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.QUALIFIED.getValue());
model.getPartInspection().setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.NORMAL.getValue());
ConvertBean.serviceModelUpdate(model.getPartInspection(), model.getUserName());
String sourceValue = configService.getCfgValue(org, "UMLGO");
if (model.getOptType() == 2) {
sourceValue = refundSource;
model.getPartInspection().setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
}
//partInspectionRepository.save(model.getPartInspection());
MesPartInspectionPerson mesPartInspectionPerson = new MesPartInspectionPerson();
mesPartInspectionPerson.setQty(Double.valueOf(mesNcPersonModel.getQty()));
mesPartInspectionPerson.setNcStatus(mesNcPersonModel.getNcStatus());
mesPartInspectionPerson.setSn(model.getPartInspection().getSn());
mesPartInspectionPerson.setOrganizeCode(model.getOrganizeCode());
mesPartInspectionPerson.setPid(model.getPartInspection().getId());
ConvertBean.serviceModelInitialize(mesPartInspectionPerson, model.getUserName());
personList.add(mesPartInspectionPerson);
String target = configService.getCfgValue(org, "LGORT");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(model.getPart().getPartNo(), "partNo", ddlPackBean);
MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
if (version != null) {
target = version.getReceiveInventoryPoint();
}
//移库 转正常、放行8000移至2000
MesMove move = createLotMove(model,mesNcPersonModel.getQty(), sourceValue, target, org, workCenterCode, MesExtEnumUtil.MOVE_TYPE.NORMAL_MOVE);
ConvertBean.serviceModelInitialize(move, model.getUserName());
moveRepository.save(move);
}
else if (type == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.REWORK.getValue()) {
//生成返工单 根据责任方库区对应关系选择哪个责任方就移动到哪个库区8000移至8002/8003
GenSerialNoModel serialNoModel = new GenSerialNoModel("NC_REWORK");
serialNoModel.setPartNo(part.getPartNo());
ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, model.getPartInspection().getModifyUser(), org, 1);
String rework = "";
if (null != rb && !CollectionUtils.isEmpty(rb.getResultList())) {
rework = (rb.getResultList().get(0)).toString();
}
MesPartInspectionPerson mesPartInspectionPerson = new MesPartInspectionPerson();
mesPartInspectionPerson.setQty(Double.valueOf(mesNcPersonModel.getQty()));
mesPartInspectionPerson.setNcStatus(mesNcPersonModel.getNcStatus());
mesPartInspectionPerson.setSn(model.getPartInspection().getSn());
mesPartInspectionPerson.setOrganizeCode(model.getOrganizeCode());
mesPartInspectionPerson.setPid(model.getPartInspection().getId());
DdlPackBean partyPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean);
MesOrg mesOrg = mesOrgRDao.getByProperty(partyPackBean);
mesPartInspectionPerson.setResponsibleParty(mesOrg.getResponsibleParty());
ConvertBean.serviceModelInitialize(mesPartInspectionPerson, model.getUserName());
personList.add(mesPartInspectionPerson);
MesReworkTask reworkTask = new MesReworkTask();
reworkTask.setQty(mesNcPersonModel.getQty());
reworkTask.setSn(model.getPartInspection().getSn());
reworkTask.setReworkOrder(rework);
reworkTask.setStatus(MesExtEnumUtil.REWORK_TASK_STATUS.CREATE.getValue());
reworkTask.setPartNo(model.getPartInspection().getPartNo());
reworkTask.setPartName(model.getPartInspection().getPartName());
reworkTask.setPartInspectionId(model.getPartInspection().getId());
reworkTask.setOrganizeCode(org);
reworkTask.setResponsibleParty(mesNcPersonModel.getOnlyPerson());
reworkTask.setDisassembleType(MesPcnExtConstWords.ZERO);
reworkTask.setLotNo(model.getPartInspection().getLotNo());
reworkTask.setType(model.getPartInspection().getSourceType());
ConvertBean.serviceModelInitialize(reworkTask, model.getUserName());
reworkTaskRepository.insert(reworkTask);
//生成返工单明细
List<MesReworkTaskDetail> taskDetailList = new ArrayList<>();
for (MesPartInspectionDetail detail : model.getPartInspectionDetailList()) {
MesReworkTaskDetail taskDetail = new MesReworkTaskDetail();
taskDetail.setPid(reworkTask.getId());
taskDetail.setStatus(MesExtEnumUtil.REWORK_TASK_DETAIL_STATUS.REWORK_TASK_DETAIL_STATUS_10.getValue());
taskDetail.setPartInspectionDetailId(detail.getId());
taskDetail.setOrganizeCode(org);
ConvertBean.serviceModelInitialize(taskDetail, model.getUserName());
taskDetailList.add(taskDetail);
}
reworkTaskDetailRepository.saveAll(taskDetailList);
//model.getPartInspection().setDefectTypeId(person.getId());
model.getPartInspection().setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.REWORK.getValue());
model.getPartInspection().setReworkTaskId(reworkTask.getId());
ConvertBean.serviceModelUpdate(model.getPartInspection(),model.getUserName());
String sourceValue = configService.getCfgValue(org, "UMLGO");
if (model.getOptType() == 2) {
sourceValue = refundSource;
model.getPartInspection().setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
}
//partInspectionRepository.save(model.getPartInspection());
MesMove move = createLotMove(model,mesNcPersonModel.getQty(), sourceValue, mesNcPersonModel.getInventoryLocationCode(), org,workCenterCode, MesExtEnumUtil.MOVE_TYPE.RETURN_MOVE);
ConvertBean.serviceModelInitialize(move, model.getUserName());
moveRepository.save(move);
} else if (type == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.SCRAP.getValue()) {
//报废时设置责任人
model.getPartInspection().setResponsibleParty(mesNcPersonModel.getOnlyPerson());
//model.getPartInspection().setDefectTypeId(person.getId());
model.getPartInspection().setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.SCRAP.getValue());
model.getPartInspection().setRejectQty(model.getPartInspection().getQty());
ConvertBean.serviceModelUpdate(model.getPartInspection(), model.getUserName());
if (model.getOptType() == 2) {
model.getPartInspection().setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
}
//partInspectionRepository.save(model.getPartInspection());
MesPartInspectionPerson mesPartInspectionPerson = new MesPartInspectionPerson();
mesPartInspectionPerson.setQty(Double.valueOf(mesNcPersonModel.getQty()));
mesPartInspectionPerson.setNcStatus(mesNcPersonModel.getNcStatus());
mesPartInspectionPerson.setSn(model.getPartInspection().getSn());
mesPartInspectionPerson.setOrganizeCode(model.getOrganizeCode());
mesPartInspectionPerson.setPid(model.getPartInspection().getId());
DdlPackBean partyPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean);
MesOrg mesOrg = mesOrgRDao.getByProperty(partyPackBean);
if (mesOrg ==null) {
throw new ImppBusiException(String.format("责任人【%s】不存在", mesNcPersonModel.getOnlyPerson()));
}
mesPartInspectionPerson.setResponsibleParty(mesOrg.getResponsibleParty());
ConvertBean.serviceModelInitialize(mesPartInspectionPerson, model.getUserName());
personList.add(mesPartInspectionPerson);
String sourceValue = configService.getCfgValue(org, "UMLGO");
if (model.getOptType() == 2) {
sourceValue = refundSource;
}
//移库 转报废 根据责任方库区对应关系的主数据选择哪个责任方就移动到哪个库区8000移至8002/8003
MesMove move = createLotMove(model,mesNcPersonModel.getQty(), sourceValue, mesNcPersonModel.getInventoryLocationCode(), org, workCenterCode, MesExtEnumUtil.MOVE_TYPE.SCRAP_MOVE);
ConvertBean.serviceModelInitialize(move,model.getUserName());
moveRepository.save(move);
} else if (type == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.RELEASE.getValue()) {
//更新检验单
/* if (model.getType() != 10 && model.getType() != 40) {
model.getPartInspection().setDefectTypeId(person.getId());
}*/
model.getPartInspection().setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.QUALIFIED.getValue());
model.getPartInspection().setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.RELEASE.getValue());
ConvertBean.serviceModelUpdate(model.getPartInspection(), model.getUserName());
String sourceValue = configService.getCfgValue(org, "UMLGO");
if (model.getOptType() == 2) {
sourceValue = refundSource;
model.getPartInspection().setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
}
//partInspectionRepository.save(model.getPartInspection());
MesPartInspectionPerson mesPartInspectionPerson = new MesPartInspectionPerson();
mesPartInspectionPerson.setQty(Double.valueOf(mesNcPersonModel.getQty()));
mesPartInspectionPerson.setNcStatus(mesNcPersonModel.getNcStatus());
mesPartInspectionPerson.setSn(model.getPartInspection().getSn());
mesPartInspectionPerson.setOrganizeCode(model.getOrganizeCode());
mesPartInspectionPerson.setPid(model.getPartInspection().getId());
ConvertBean.serviceModelInitialize(mesPartInspectionPerson, model.getUserName());
personList.add(mesPartInspectionPerson);
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 = createLotMove(model,mesNcPersonModel.getQty(), sourceValue, target, org, workCenterCode, MesExtEnumUtil.MOVE_TYPE.NORMAL_MOVE);
ConvertBean.serviceModelInitialize(move, model.getUserName());
moveRepository.save(move);
}
}
mesPartInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.SUCCESS.getValue());
ConvertBean.serviceModelUpdate(mesPartInspection, model.getUserName());
partInspectionRepository.save(mesPartInspection);
mesPartInspectionPersonRepository.saveAll(personList);
}
public MesWorkOrder getWorkOrder(String organizeCode, String workOrderNo) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workOrderNo)) return null;
return workOrderRepository.getByProperty(
@ -789,6 +1009,33 @@ public class MesNcProcessingService implements IMesNcProcessingService {
return move;
}
private MesMove createLotMove(MesNcProcessingInputModel model,double qty, String source, String target, String org, String workCenterCode, MesExtEnumUtil.MOVE_TYPE moveType) {
GenSerialNoModel serialNoModel = new GenSerialNoModel("INPUT_DEFECT_ZRSUM");
serialNoModel.setPartNo(model.getPart().getPartNo());
ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, model.getPartInspection().getModifyUser(), org, 1);
String zrsum = "";
if (null != rb && !CollectionUtils.isEmpty(rb.getResultList())) {
zrsum = (rb.getResultList().get(0)).toString();
}
MesMove move = new MesMove();
move.setMatnr(model.getPart().getPartNo());
move.setOrganizeCode(org);
move.setFactoryCode(org);
move.setLgort(source);
move.setUmlgo(target);
move.setMenge(qty);
move.setMeins(model.getPart().getUnit());
move.setZrsum(zrsum);
move.setPostDate(TimeTool.getToday());
move.setPostTime(TimeTool.getTimeShortWithColon());
move.setMoveType(moveType.getValue());
move.setPartInspectionId(model.getPartInspection().getId());
move.setProductSn(model.getSn());
move.setWorkCenter(prodOrgExtService.getErpWorkCenterCode(org, workCenterCode));
return move;
}
private MesMove createMove(MesNcProcessingInputModel model, String source, String target, String org, String workCenterCode, MesExtEnumUtil.MOVE_TYPE moveType, String partNo) {
GenSerialNoModel serialNoModel = new GenSerialNoModel("INPUT_DEFECT_ZRSUM");
serialNoModel.setPartNo(partNo);

@ -28,8 +28,10 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@Service
@Slf4j
@ -71,7 +73,14 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService
@Override
public ResultBean doMesMesShippingOrderManagementPrint(MesShippingOrderManagement bean) {
MesConfig config = configService.getMesConfigByCfgCode(MesPcnExtConstWords.SORT_SHIPPING_PRINT_TEMPLATE, bean.getOrganizeCode());
List<String> chooseCodeList = Arrays.asList(bean.getShippingGroupCode().split(MesPcnExtConstWords.COMMA));
List<MesConfig> configList = configService.getMesConfigListByCfgCodeKey(MesPcnExtConstWords.SORT_SHIPPING_PRINT_TEMPLATE, MesPcnExtConstWords.CUSTOM_CFG, bean.getOrganizeCode());
Optional<MesConfig> optional = CollectionUtils.isEmpty(configList) ? null :
configList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCfgValue())
&& !StringUtils.isEmpty(o.getCfgType()) && chooseCodeList.contains(o.getCfgType()))).findFirst();
String templeteCodeCfg = (null == optional || !optional.isPresent()) ? MesPcnExtConstWords.SORT_SHIPPING_PRINT_TEMPLATE : optional.get().getCfgValue();
MesConfig config = configService.getMesConfigByCfgCodeKeyOrg(templeteCodeCfg, MesPcnExtConstWords.SORT_SHIPPING_PRINT_TEMPLATE, bean.getOrganizeCode());
if (null == config || StringUtils.isEmpty(config.getCfgValue())) MesPcnException.throwBusiException("未配置排序发运全局打印配置[%s]", MesPcnExtConstWords.SORT_SHIPPING_PRINT_TEMPLATE);
MesLabelTemplate labelTemplate = templateService.getMesLabelTemplate(config.getCfgValue(), bean.getOrganizeCode());

@ -65,6 +65,7 @@ public class CqLjSortShippingPrintStrategyService extends SortShippingDispatchSt
//遍历处理每个发运单主表
for (MesShippingOrderManagement shippingOrderManagement : shippingOrderManagementList) {
log.info("工厂{}排序发运打印 --- 遍历 发运单:{} --- {}", bean.getOrganizeCode(), shippingOrderManagement.getShippingCode(), Thread.currentThread().getName());
//一张实体发运单包含三部分信息(顶部的通用数据、中部的第一份表格数据,底部的第二份表格数据)
//取出当前发运单的明细信息
List<MesShippingOrderManagementDetail> details = null == detailByPidMap ? null : detailByPidMap.get(shippingOrderManagement.getId());
@ -82,6 +83,7 @@ public class CqLjSortShippingPrintStrategyService extends SortShippingDispatchSt
detailList.stream().min(Comparator.comparing(MesShippingOrderManagementDetail::getLogicSeq));
min.ifPresent(mesShippingOrderManagementDetail -> logicSeqAndAssyCodeMap.put(mesShippingOrderManagementDetail.getLogicSeq(), assyCode));
}
log.info("工厂{}排序发运打印 --- 遍历 发运单:{} --- assyCodeList:{} --- logicSeqAndAssyCodeMap:{} --- {}", bean.getOrganizeCode(), shippingOrderManagement.getShippingCode(), assyCodeList.toString(), JSONObject.toJSONString(logicSeqAndAssyCodeMap), Thread.currentThread().getName());
List<Long> collect = logicSeqAndAssyCodeMap.keySet().stream().sorted().collect(Collectors.toList());
List<String> newAssyCodeList = new ArrayList<>();
for (Long logicSeq : collect) {
@ -92,10 +94,13 @@ public class CqLjSortShippingPrintStrategyService extends SortShippingDispatchSt
.filter(i -> i % 2 == 0)
.mapToObj(i -> newAssyCodeList.subList(i, Math.min(i + 2, newAssyCodeList.size())))
.collect(Collectors.toList());
for (List<String> list : physicalOrderList) {
//生成一张实体发运单
log.info("工厂{}排序发运打印 --- 生成一张实体发运单:{} --- {}", bean.getOrganizeCode(), list.toString(), Thread.currentThread().getName());
mainDataList.add(createPhysicalOrder(shippingOrderManagement, list, detailByAssyCodeMap, details));
if (!CollectionUtils.isEmpty(physicalOrderList)) {
log.info("工厂{}排序发运打印 --- 遍历 发运单:{} --- physicalOrderList:{} --- {}", bean.getOrganizeCode(), shippingOrderManagement.getShippingCode(), JSONObject.toJSONString(physicalOrderList), Thread.currentThread().getName());
for (List<String> list : physicalOrderList) {
//生成一张实体发运单
log.info("工厂{}排序发运打印 --- 生成一张实体发运单:{} --- {}", bean.getOrganizeCode(), list.toString(), Thread.currentThread().getName());
mainDataList.add(createPhysicalOrder(shippingOrderManagement, list, detailByAssyCodeMap, details));
}
}
}
shippingOrderManagement.setPrintCount(StringUtil.isEmpty(shippingOrderManagement.getPrintCount())? 1 : shippingOrderManagement.getPrintCount()+1);
@ -123,7 +128,8 @@ public class CqLjSortShippingPrintStrategyService extends SortShippingDispatchSt
//中部表结构赋值
model.setDetailModelsOne(createDetailList(assyCodeList.get(0), detailByAssyCodeMap, details, shippingOrderManagement.getRackNo()));
//底部表结构赋值
model.setDetailModelsTwo(createDetailList(assyCodeList.get(1), detailByAssyCodeMap, details, shippingOrderManagement.getRackNo()));
if (assyCodeList.size() > 1) model.setDetailModelsTwo(createDetailList(assyCodeList.get(1), detailByAssyCodeMap, details, shippingOrderManagement.getRackNo()));
else model.setDetailModelsTwo(new ArrayList<>());
log.info("工厂{}排序发运打印 --- MesShippingOrderManagementModelForLiJia:{} --- {}", shippingOrderManagement.getOrganizeCode(), JSONObject.toJSONString(model), Thread.currentThread().getName());
return model;
}

@ -115,7 +115,8 @@ public class MesProductResultErrorHandleStepService extends BaseStepService {
String defectTypeCode = MesEnumUtil.DEFECT_TYPE_CODE.DETERMIND.getValue();
productionPsOutContextList.forEach(mesProduceSn -> {
String productVersion = null;
List<MesProductionPartContext> mesProductionPartContextList = productionPartContextList.stream().filter(mesProductionPartContext -> Objects.equal(mesProduceSn.getForeignKey(),mesProductionPartContext.getForeignKey())).collect(Collectors.toList());
List<MesProductionPartContext> mesProductionPartContextList = CollectionUtils.isEmpty(productionPartContextList) ? null :
productionPartContextList.stream().filter(mesProductionPartContext -> Objects.equal(mesProduceSn.getForeignKey(),mesProductionPartContext.getForeignKey())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(mesProductionPartContextList)) {
productVersion = mesProductionPartContextList.get(0).getProductVersion();
}
@ -186,7 +187,7 @@ public class MesProductResultErrorHandleStepService extends BaseStepService {
inspectModel.setShiftCode(mesProduceSn.getShiftCode());
inspectModel.setProductVersion(productVersion);
inspectModel.setUserInfo(reqBean.getUserInfo());
inspectModel.setSourceType(MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue());
inputDefectRecordService.saveSusPartInspection(inspectModel, reqBean.getOrganizeCode());
}
});

@ -0,0 +1,37 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.model;
import cn.estsh.i3plus.pojo.mes.bean.MesDefectType;
import cn.estsh.i3plus.pojo.mes.bean.MesPartSap;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspectionDetail;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import org.hibernate.annotations.ColumnDefault;
import javax.persistence.Column;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author :
* @CreateDate : 2024-05-09 18:08
* @Modify:
**/
@Data
public class MesNcPersonModel {
@ApiParam("责任人")
private String onlyPerson;
@ApiParam("区域代码")
private String inventoryLocationCode;
@ApiParam("数量")
private Double qty;
@ApiParam("nc状态-转正常等等 枚举")
private Integer ncStatus;
}

@ -58,4 +58,7 @@ public class MesNcProcessingInputModel {
@ApiModelProperty("操作人")
private String userName;
@ApiParam("批次责任人信息")
private List<MesNcPersonModel> personModelList;
}

@ -925,6 +925,8 @@ public class MesPcnExtConstWords {
public static final String SORT_SHIPPING_PRINT_TEMPLATE = "SORT_SHIPPING_PRINT_TEMPLATE";
//由前端直接渲染模版的标志
public static final String TEMPLATE_CUSTOM_HTML = "TEMPLATE_CUSTOM_HTML";
//客制化配置
public static final String CUSTOM_CFG = "CUSTOM_CFG";
//生产过程控制非排序打印机配置【物料级别=1, 默认打印机=2】
public static final String PRODUCTION_CONTROL_NOSORT_PRINTER_CFG = "PRODUCTION_CONTROL_NOSORT_PRINTER_CFG";

Loading…
Cancel
Save