Merge remote-tracking branch 'origin/dev-temp-xw-202501150000-44838' into test

tags/yfai-mes-ext-v2.9
王杰 3 months ago
commit 0b61c7a143

@ -1,7 +1,9 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.ext.mes.pojo.model.WorkOrderMaterialCutModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCut;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutDetail;
import io.swagger.annotations.ApiOperation;
@ -18,7 +20,11 @@ public interface IMesWorkOrderCutService extends IBaseMesService<MesWorkOrderCut
@ApiOperation("生成裁片工单")
void doGenerateCutWorkOrder(List<Long> workOrderIds, String cutCode, String remark, String organizeCode,
String userName, Integer editionNumber);
String userName, Integer editionNumber, boolean isFree, List<MesCutSchemeFg> mesCutSchemeFgs);
@ApiOperation("生成裁片工单")
void generateCutWorkOrderMaterial(WorkOrderMaterialCutModel workOrderMaterialCutModel);
@ApiOperation("分页查询裁片工单明细")
ListPager<MesWorkOrderCutDetail> queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager);

@ -2,8 +2,11 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderCutService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.model.WorkOrderCutModel;
import cn.estsh.i3plus.ext.mes.pojo.model.WorkOrderMaterialCutModel;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCut;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderCutDetail;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
@ -14,12 +17,11 @@ 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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
/**
*
*/
@ -40,7 +42,44 @@ public class MesWorkOrderCutController extends BaseMesController<MesWorkOrderCut
ValidatorBean.checkNotNull(cutCode, "裁片方案不存在");
workOrderCutService.doGenerateCutWorkOrder(Arrays.asList(workOrderIds), cutCode, remark,
AuthUtil.getOrganize().getOrganizeCode(), AuthUtil.getSessionUser().getUserName(), editionNumber);
AuthUtil.getOrganize().getOrganizeCode(), AuthUtil.getSessionUser().getUserName(), editionNumber, false, null);
return ResultBean.success("生成成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/order/generate")
@ApiOperation(value = "裁片工单生成", notes = "裁片工单生成")
public ResultBean generateCutWorkOrder(@RequestBody WorkOrderCutModel workOrderCutModel) {
try {
ValidatorBean.checkNotNull(workOrderCutModel.getWorkOrderIds(), "工单不存在");
ValidatorBean.checkNotNull(workOrderCutModel.getCutCode(), "裁片方案不存在");
workOrderCutService.doGenerateCutWorkOrder(Arrays.asList(workOrderCutModel.getWorkOrderIds()), workOrderCutModel.getCutCode(), workOrderCutModel.getRemark(),
AuthUtil.getOrganize().getOrganizeCode(), AuthUtil.getSessionUser().getUserName(), workOrderCutModel.getEditionNumber(), true, workOrderCutModel.getMesCutSchemeFgs());
return ResultBean.success("生成成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/material/generate")
@ApiOperation(value = "原材料生成", notes = "原材料生成")
public ResultBean generateCutWorkOrderMaterial(@RequestBody WorkOrderMaterialCutModel workOrderMaterialCutModel) {
try {
ValidatorBean.checkNotNull(workOrderMaterialCutModel.getCutWorkOrderNo(), "裁片工单号不能为空");
ValidatorBean.checkNotNull(workOrderMaterialCutModel.getMesCutSchemeMaterialList(), "裁片方案原材料不能为空");
workOrderCutService.generateCutWorkOrderMaterial(workOrderMaterialCutModel);
return ResultBean.success("生成成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {

@ -5,6 +5,7 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderCutService;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.print.IPrintTemplateStrategyService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.model.MesProduceSnPrintModel;
import cn.estsh.i3plus.ext.mes.pojo.model.WorkOrderMaterialCutModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
@ -20,11 +21,14 @@ import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import cn.hutool.core.stream.CollectorUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
@ -80,7 +84,7 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
@Override
public void doGenerateCutWorkOrder(List<Long> workOrderIds, String cutCode, String remark, String organizeCode,
String userName, Integer editionNumber) {
String userName, Integer editionNumber, boolean isFree, List<MesCutSchemeFg> mesCutSchemeFgs) {
List<MesWorkOrder> workOrderList = getMesWorkOrders(workOrderIds, organizeCode);
@ -88,9 +92,16 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
MesCutScheme cutScheme = getMesCutScheme(cutCode, organizeCode);
List<MesCutSchemeMaterial> cutSchemeMaterialList = getMesCutSchemeMaterials(cutCode, organizeCode);
List<MesCutSchemeFg> cutSchemeFgList = getMesCutSchemeFgs(cutCode, organizeCode);
log.info("isFree={}", isFree);
List<MesCutSchemeFg> cutSchemeFgList = new ArrayList<>();
if (!isFree) {
cutSchemeFgList = getMesCutSchemeFgs(cutCode, organizeCode);
} else {
if (CollectionUtils.isEmpty(mesCutSchemeFgs)) {
MesException.throwMesBusiException("未选择裁片成品");
}
cutSchemeFgList.addAll(mesCutSchemeFgs);
}
// 校验工单物料是否已在成品配置中进行维护
checkWorkOrderPartValid(workOrderList, cutSchemeFgList);
@ -125,19 +136,27 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
workOrderCut.setCutWorkOrderNo(cutWorkOrderNo);
workOrderCut.setOrganizeCode(organizeCode);
workOrderCut.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue());
workOrderCuttList.add(workOrderCut);
for (MesCutSchemeMaterial cutSchemeMaterial : cutSchemeMaterialList) {
MesWorkOrderCutMaterial workOrderCutMaterial = new MesWorkOrderCutMaterial();
BeanUtils.copyProperties(cutSchemeMaterial, workOrderCutMaterial, MesExtConstWords.ID);
ConvertBean.serviceModelInitialize(workOrderCutMaterial, userName);
workOrderCutMaterial.setOrganizeCode(organizeCode);
workOrderCutMaterial.setCutWorkOrderNo(workOrderCut.getCutWorkOrderNo());
workOrderCutMaterial.setSystemSyncStatus(CommonEnumUtil.FALSE);
workOrderCutMaterialList.add(workOrderCutMaterial);
// 44838 如果isFree 是 默认已打印
Integer printStatus = MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue();
if (isFree) {
printStatus = MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue();
}
workOrderCut.setPrintStatus(printStatus);
workOrderCuttList.add(workOrderCut);
if (!isFree) {
List<MesCutSchemeMaterial> cutSchemeMaterialList = getMesCutSchemeMaterials(cutCode, organizeCode);
for (MesCutSchemeMaterial cutSchemeMaterial : cutSchemeMaterialList) {
MesWorkOrderCutMaterial workOrderCutMaterial = new MesWorkOrderCutMaterial();
BeanUtils.copyProperties(cutSchemeMaterial, workOrderCutMaterial, MesExtConstWords.ID);
ConvertBean.serviceModelInitialize(workOrderCutMaterial, userName);
workOrderCutMaterial.setOrganizeCode(organizeCode);
workOrderCutMaterial.setCutWorkOrderNo(workOrderCut.getCutWorkOrderNo());
workOrderCutMaterial.setSystemSyncStatus(CommonEnumUtil.FALSE);
workOrderCutMaterialList.add(workOrderCutMaterial);
}
}
for (MesCutSchemeFg cutSchemeFg : cutSchemeFgList) {
List<MesWorkOrder> workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo());
for (MesWorkOrder workOrder : workOrders) {
@ -154,8 +173,9 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
}
}
}
workOrderCutMaterialRepository.saveAll(workOrderCutMaterialList);
if (!isFree) {
workOrderCutMaterialRepository.saveAll(workOrderCutMaterialList);
}
workOrderCutDetailRepository.saveAll(workOrderCutDetailtList);
workOrderCutRepository.saveAll(workOrderCuttList);
@ -172,6 +192,34 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
}
@Override
@Transactional
public void generateCutWorkOrderMaterial(WorkOrderMaterialCutModel workOrderMaterialCutModel) {
String organizeCode = AuthUtil.getOrganizeCode();
String userName = AuthUtil.getSessionUser().getUserName();
List<MesWorkOrderCutMaterial> workOrderCutMaterialList = new ArrayList<>();
for (MesCutSchemeMaterial cutSchemeMaterial : workOrderMaterialCutModel.getMesCutSchemeMaterialList()) {
MesWorkOrderCutMaterial workOrderCutMaterial = new MesWorkOrderCutMaterial();
BeanUtils.copyProperties(cutSchemeMaterial, workOrderCutMaterial, MesExtConstWords.ID);
ConvertBean.serviceModelInitialize(workOrderCutMaterial, userName);
workOrderCutMaterial.setOrganizeCode(organizeCode);
workOrderCutMaterial.setCutWorkOrderNo(workOrderMaterialCutModel.getCutWorkOrderNo());
workOrderCutMaterial.setSystemSyncStatus(CommonEnumUtil.FALSE);
workOrderCutMaterialList.add(workOrderCutMaterial);
}
workOrderCutMaterialRepository.saveAll(workOrderCutMaterialList);
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderMaterialCutModel.getCutWorkOrderNo(), MesExtConstWords.CUT_WORK_ORDER_NO, packBean);
workOrderCutRepository.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "isDeleted", "printStatus"},
new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue() }, packBean);
}
@Override
public ListPager<MesWorkOrderCutDetail> queryWorkOrderCutDetailByPager(MesWorkOrderCutDetail workOrderCutDetail, Pager pager) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(workOrderCutDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(workOrderCutDetail.getCutWorkOrderNo(), MesExtConstWords.CUT_WORK_ORDER_NO, packBean);

@ -0,0 +1,24 @@
package cn.estsh.i3plus.ext.mes.pojo.model;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import lombok.Data;
import java.util.List;
@Data
public class WorkOrderCutModel {
private Long[] workOrderIds;
private String cutCode;
private String remark;
private Integer editionNumber;
private boolean isFree = false ;
private List<MesCutSchemeFg> mesCutSchemeFgs;
}

@ -0,0 +1,17 @@
package cn.estsh.i3plus.ext.mes.pojo.model;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeMaterial;
import lombok.Data;
import java.util.List;
@Data
public class WorkOrderMaterialCutModel {
private String cutWorkOrderNo;
private List<MesCutSchemeMaterial> mesCutSchemeMaterialList;
}
Loading…
Cancel
Save