Merge remote-tracking branch 'origin/dev-wuhan' into dev-wuhan

tags/yfai-mes-ext-v2.3
臧学普 8 months ago
commit 9c6147f706

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesBallTrackRule;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/24 15:36
* @Modify:
**/
public interface IMesBallTrackRuleService extends IBaseMesService<MesBallTrackRule>{
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesCutLengthModifyType;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/20 9:47
* @Modify:
**/
public interface IMesCutLengthModifyTypeService extends IBaseMesService<MesCutLengthModifyType>{
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeEquipmentDetail;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 17:03
* @Modify:
**/
public interface IMesCutSchemeEquipmentDetailService extends IBaseMesService<MesCutSchemeEquipmentDetail>{
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeEquipmentProcessParam;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 16:51
* @Modify:
**/
public interface IMesCutSchemeEquipmentProcessParamService extends IBaseMesService<MesCutSchemeEquipmentProcessParam>{
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeEquipment;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 15:52
* @Modify:
**/
public interface IMesCutSchemeEquipmentService extends IBaseMesService<MesCutSchemeEquipment>{
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 13:52
* @Modify:
**/
public interface IMesCutSchemeFgService extends IBaseMesService<MesCutSchemeFg>{
}

@ -0,0 +1,16 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeMaterial;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 13:35
* @Modify:
**/
public interface IMesCutSchemeMaterialService extends IBaseMesService<MesCutSchemeMaterial>{
}

@ -14,4 +14,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate;
public interface IMesLabelTemplateService extends IBaseMesService<MesLabelTemplate> {
ListPager queryMesLabelTemplateAndParamListByPager(MesLabelTemplate labelTemplate, Pager pager);
MesLabelTemplate getLabelTemplate(String templateCode, String organizeCode);
}

@ -4,6 +4,7 @@ import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail;
import java.util.List;
import java.util.Map;
/**
* @Description:
@ -28,4 +29,6 @@ public interface IMesPartProdGroupService extends IBaseMesService<MesPartProdGro
* @return
*/
List<MesPartProdGroupDetail> findDetailByCode(String partGroupCode,String organizeCode);
Map<String, MesPartProdGroup> getMesPartProdGroupMap(String organizeCode, List<String> partProdGroupCodeList);
}

@ -1,6 +1,9 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesProductOffLine;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* @Description :
@ -11,5 +14,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesProductOffLine;
**/
public interface IMesProductOffLineService extends IBaseMesService<MesProductOffLine>{
@ApiOperation("查询报工数据")
List<MesProductOffLine> findMesProductOffLineByProductSn(String productSn, String organizeCode);
}

@ -0,0 +1,16 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackagePart;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/14 13:40
* @Modify:
**/
public interface IMesRecyclablePackagePartService extends IBaseMesService<MesRecyclablePackagePart>{
}

@ -0,0 +1,14 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackage;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/14 10:02
* @Modify:
**/
public interface IMesRecyclablePackageService extends IBaseMesService<MesRecyclablePackage>{
}

@ -0,0 +1,14 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageType;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/13 17:36
* @Modify:
**/
public interface IMesRecyclablePackageTypeService extends IBaseMesService<MesRecyclablePackageType>{
}

@ -0,0 +1,13 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesStation;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/20 14:45
* @Modify:
**/
public interface IMesStationService extends IBaseMesService<MesStation>{
}

@ -4,6 +4,8 @@ import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* @Description:
* @CreateDate 2024/04/16
@ -17,4 +19,7 @@ public interface IMesWorkCenterService extends IBaseMesService<MesWorkCenter> {
@ApiOperation(value = "根据生产线代码查询生产线信息的ERP生产线代码")
String getErpWorkCenterCode(String organizeCode, String workCenterCode);
@ApiOperation(value = "根据产线代码集合查询产线信息集合")
List<MesWorkCenter> queryMesWorkCenterList(List<String> workCenterCodeList, String organizeCode);
}

@ -8,6 +8,7 @@ import cn.estsh.i3plus.pojo.model.wms.WmsProductModel;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import java.util.Map;
/**
* @Description:
@ -42,6 +43,12 @@ public interface IMesWorkOrderService extends IBaseMesService<MesWorkOrder> {
@ApiOperation("重新打开")
void doReopen(Long[] ids,String userName,String organizeCode);
@ApiOperation("新增工单打印队列")
void doSaveWorkOrderPrintQueue(MesWorkOrder workOrder);
@ApiOperation("装配目视单补打")
List<Map<String, Object>> doReprintWorkOrder(Long[] ids, String organizeCode, String userName);
List<MesProductionRecord> getPreDayReportMesProductionRecord(String organizeCode , List<MesShift> mesShiftList, String workCenterCode);
List<MesProduceSn> getPreDayReportMesProduceSn(String organizeCode ,List<MesProductionRecord> mesProductionRecordList );

@ -0,0 +1,20 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesBallTrackRule;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/24 15:35
* @Modify:
**/
@Api("辊道设备配置接口")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesBallTrackRule")
public class MesBallTrackRuleController extends BaseMesController<MesBallTrackRule>{
}

@ -0,0 +1,18 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesCutLengthModifyType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/20 9:45
* @Modify:
**/
@RestController
@RequestMapping( MesCommonConstant.MES_YANFEN + "/mesCutLengthModifyType")
public class MesCutLengthModifyTypeController extends BaseMesController<MesCutLengthModifyType>{
}

@ -0,0 +1,18 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeEquipment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 15:20
* @Modify:
**/
@RestController
@RequestMapping( MesCommonConstant.MES_YANFEN + "/mesCutSchemeEquipment")
public class MesCutSchemeEquipmentController extends BaseMesController<MesCutSchemeEquipment>{
}

@ -0,0 +1,18 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeEquipmentDetail;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 17:02
* @Modify:
**/
@RestController
@RequestMapping( MesCommonConstant.MES_YANFEN + "/mesCutSchemeEquipmentDetail")
public class MesCutSchemeEquipmentDetailController extends BaseMesController<MesCutSchemeEquipmentDetail>{
}

@ -0,0 +1,18 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeEquipmentProcessParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 16:49
* @Modify:
**/
@RestController
@RequestMapping( MesCommonConstant.MES_YANFEN + "/mesCutSchemeEquipmentProcessParam")
public class MesCutSchemeEquipmentProcessParamController extends BaseMesController<MesCutSchemeEquipmentProcessParam> {
}

@ -0,0 +1,20 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 13:50
* @Modify:
**/
@RestController
@RequestMapping( MesCommonConstant.MES_YANFEN + "/mesCutSchemeFg")
public class MesCutSchemeFgController extends BaseMesController<MesCutSchemeFg>{
}

@ -0,0 +1,19 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeMaterial;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 13:27
* @Modify:
**/
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCutSchemeMaterial")
public class MesCutSchemeMaterialController extends BaseMesController<MesCutSchemeMaterial> {
}

@ -0,0 +1,20 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackage;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/14 10:00
* @Modify:
**/
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesRecyclablePackage")
public class MesRecyclablePackageController extends BaseMesController<MesRecyclablePackage> {
}

@ -0,0 +1,19 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackagePart;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/14 10:57
* @Modify:
**/
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesRecyclablePackagePart")
public class MesRecyclablePackagePartController extends BaseMesController<MesRecyclablePackagePart>{
}

@ -0,0 +1,19 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/13 17:14
* @Modify:
**/
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesRecyclablePackageType")
public class MesRecyclablePackageTypeController extends BaseMesController<MesRecyclablePackageType> {
}

@ -0,0 +1,18 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.mes.bean.MesStation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/20 14:40
* @Modify:
**/
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN+"mesStation")
public class MesStationController extends BaseMesController<MesStation>{
}

@ -171,7 +171,6 @@ public class MesWorkOrderController extends BaseMesController<MesWorkOrder> {
try {
ValidatorBean.checkNotNull(model.getOrganizeCode(),"工厂代码不能为空");
ValidatorBean.checkNotNull(model.getQty(),"数量不能为空");
ValidatorBean.checkNotNull(model.getSn(),"条码不能为空");
ValidatorBean.checkNotNull(model.getPartNo(),"零件号不能为空");
mesWorkOrderService.doReportWorkReversal(model);
@ -183,6 +182,38 @@ public class MesWorkOrderController extends BaseMesController<MesWorkOrder> {
}
}
@PostMapping(value = "/save-work-print-queue")
@ApiOperation(value = "新增打印工单打印队列")
public ResultBean doSaveWorkOrderPrintQueue(@RequestBody MesWorkOrder workOrder) {
try {
ValidatorBean.checkNotNull(workOrder.getOrganizeCode(),"工厂代码不能为空");
mesWorkOrderService.doSaveWorkOrderPrintQueue(workOrder);
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 = "/work-order-reprint")
@ApiOperation(value = "装配目视单补打")
public ResultBean doSaveWorkOrderPrintQueue(@RequestBody Long[] ids) {
try {
ValidatorBean.checkNotNull(ids,"工单不能为空");
mesWorkOrderService.doReprintWorkOrder(ids, AuthUtil.getOrganize().getOrganizeCode(), AuthUtil.getSessionUser().getUserName());
return ResultBean.success("装配目视单补打成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PutMapping(value = "/reopen")
@ApiOperation(value = "重新打开")
public ResultBean doReopen(Long[] ids) {

@ -0,0 +1,54 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesBallTrackRuleService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesBallTrackRule;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/24 15:37
* @Modify:
**/
@Service
@Slf4j
public class MesBallTrackRuleServiceImpl extends BaseMesService<MesBallTrackRule> implements IMesBallTrackRuleService {
@Override
protected void setPackQueryBean(MesBallTrackRule bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getEquipmentCode(), "equipmentCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getBallTrackName(), "ballTrackName", packBean);
}
@Override
protected void onInsertBean(MesBallTrackRule item) {
ValidatorBean.checkNotNull(item.getBallTrackName(), "轨道名称不能为空");
ValidatorBean.checkNotNull(item.getEquipmentCode(), "设备代码不能为空");
ValidatorBean.checkNotNull(item.getEquipVariableValue(), "轨道变量值不能为空");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getEquipmentCode(), "equipmentCode", ddlPackBean);
if (baseRDao.isExitByHql(ddlPackBean)){
MesException.throwBusiException("轨道编码已存在");
}
}
@Override
protected void onUpdateBean(MesBallTrackRule item) {
ValidatorBean.checkNotNull(item.getId(), "id不能为空");
ValidatorBean.checkNotNull(item.getBallTrackName(), "轨道名称不能为空");
ValidatorBean.checkNotNull(item.getEquipmentCode(), "设备代码不能为空");
ValidatorBean.checkNotNull(item.getEquipVariableValue(), "轨道变量值不能为空");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getEquipmentCode(), "equipmentCode", ddlPackBean);
DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", ddlPackBean);
if (baseRDao.isExitByHql(ddlPackBean)){
MesException.throwBusiException("轨道编码已存在");
}
}
}

@ -0,0 +1,31 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCutLengthModifyTypeService;
import cn.estsh.i3plus.pojo.mes.bean.MesCutLengthModifyType;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/20 9:47
* @Modify:
**/
@Slf4j
@Service
public class MesCutLengthModifyTypeServiceImpl extends BaseMesService<MesCutLengthModifyType> implements IMesCutLengthModifyTypeService {
@Override
protected void onInsertBean(MesCutLengthModifyType item) {
ValidatorBean.checkNotNull(item.getReasonName(), "原因名称不能为空");
}
@Override
protected void onUpdateBean(MesCutLengthModifyType item) {
ValidatorBean.checkNotNull(item.getId(), "主键不能为空");
ValidatorBean.checkNotNull(item.getReasonName(), "原因名称不能为空");
}
}

@ -0,0 +1,40 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCutSchemeEquipmentDetailService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeEquipmentDetail;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 17:04
* @Modify:
**/
@Slf4j
@Service
public class MesCutSchemeEquipmentDetailServiceImpl extends BaseMesService<MesCutSchemeEquipmentDetail> implements IMesCutSchemeEquipmentDetailService {
@Override
protected void setPackQueryBean(MesCutSchemeEquipmentDetail bean, DdlPackBean packBean) {
Long pid = bean.getPid();
if (pid != null) {
DdlPreparedPack.getNumEqualPack(pid, "pid", packBean);
}
}
@Override
protected void onInsertBean(MesCutSchemeEquipmentDetail item) {
ValidatorBean.checkNotNull(item.getName(), "名称不能为空");
}
@Override
protected void onUpdateBean(MesCutSchemeEquipmentDetail item) {
ValidatorBean.checkNotNull(item.getId(), "id不能为空");
ValidatorBean.checkNotNull(item.getName(), "名称不能为空");
}
}

@ -0,0 +1,40 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCutSchemeEquipmentProcessParamService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeEquipmentProcessParam;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 16:51
* @Modify:
**/
@Slf4j
@Service
public class MesCutSchemeEquipmentProcessParamServiceImpl extends BaseMesService<MesCutSchemeEquipmentProcessParam> implements IMesCutSchemeEquipmentProcessParamService {
@Override
protected void setPackQueryBean(MesCutSchemeEquipmentProcessParam bean, DdlPackBean packBean) {
Long pid = bean.getPid();
if (pid != null) {
DdlPreparedPack.getNumEqualPack(pid, "pid", packBean);
}
}
@Override
protected void onInsertBean(MesCutSchemeEquipmentProcessParam item) {
ValidatorBean.checkNotNull(item.getEquipmentCode(), "设备代码不能为空");
}
@Override
protected void onUpdateBean(MesCutSchemeEquipmentProcessParam item) {
ValidatorBean.checkNotNull(item.getId(), "id不能为空");
ValidatorBean.checkNotNull(item.getEquipmentCode(), "设备代码不能为空");
}
}

@ -0,0 +1,48 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCutSchemeEquipmentService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeEquipment;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 15:55
* @Modify:
**/
@Slf4j
@Service
public class MesCutSchemeEquipmentServiceImpl extends BaseMesService<MesCutSchemeEquipment> implements IMesCutSchemeEquipmentService {
@Override
protected void onInsertBean(MesCutSchemeEquipment item) {
ValidatorBean.checkNotNull(item.getCutCode(), "裁片代码不能为空");
ValidatorBean.checkNotNull(item.getEquipmentCode(), "设备代码不能为空");
}
@Override
protected void onUpdateBean(MesCutSchemeEquipment item) {
ValidatorBean.checkNotNull(item.getId(), "主键不能为空");
ValidatorBean.checkNotNull(item.getCutCode(), "裁片代码不能为空");
ValidatorBean.checkNotNull(item.getEquipmentCode(), "设备代码不能为空");
}
@Override
protected void setPackQueryBean(MesCutSchemeEquipment bean, DdlPackBean packBean) {
String cutCode = bean.getCutCode();
if (!StringUtils.isEmpty(cutCode)) {
DdlPreparedPack.getStringLikerPack(cutCode, "packageTypeCode", packBean);
}
String equipmentName = bean.getEquipmentName();
if (!StringUtils.isEmpty(equipmentName)) {
DdlPreparedPack.getStringLikerPack(equipmentName, "equipmentName", packBean);
}
}
}

@ -0,0 +1,30 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCutSchemeFgService;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeFg;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 15:04
* @Modify:
**/
@Slf4j
@Service
public class MesCutSchemeFgServiceImpl extends BaseMesService<MesCutSchemeFg> implements IMesCutSchemeFgService {
@Override
protected void onInsertBean(MesCutSchemeFg item) {
ValidatorBean.checkNotNull(item.getCutCode(), "裁片方案代码不能为空");
}
@Override
protected void onUpdateBean(MesCutSchemeFg item) {
ValidatorBean.checkNotNull(item.getId(), "主键不能为空");
ValidatorBean.checkNotNull(item.getCutCode(), "裁片方案代码不能为空");
}
}

@ -0,0 +1,32 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCutSchemeMaterialService;
import cn.estsh.i3plus.pojo.mes.bean.MesCutSchemeMaterial;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/18 13:37
* @Modify:
**/
@Slf4j
@Service
public class MesCutSchemeMaterialServiceImpl extends BaseMesService<MesCutSchemeMaterial> implements IMesCutSchemeMaterialService {
@Override
protected void onInsertBean(MesCutSchemeMaterial item) {
ValidatorBean.checkNotNull(item.getCutCode(), "裁片方案代码不能为空");
}
@Override
protected void onUpdateBean(MesCutSchemeMaterial item) {
ValidatorBean.checkNotNull(item.getId(), "id不能为空");
ValidatorBean.checkNotNull(item.getCutCode(), "裁片方案代码不能为空");
}
}

@ -27,7 +27,7 @@ public class MesCutSchemeService extends BaseMesService<MesCutScheme> implements
protected void setPackQueryBean(MesCutScheme bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getWorkCenterCode(), MesExtConstWords.WORK_CENTER_CODE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getCutCode(), MesExtConstWords.CUT_CODE, packBean);
DdlPreparedPack.getNumEqualPack(bean.getCutName(), MesExtConstWords.CUT_NAME, packBean);
DdlPreparedPack.getStringEqualPack(bean.getCutName(), MesExtConstWords.CUT_NAME, packBean);
}
@Override

@ -63,4 +63,19 @@ public class MesLabelTemplateServiceImpl extends BaseMesService<MesLabelTemplate
}
return new ListPager<>(resultList, pager);
}
@Override
public MesLabelTemplate getLabelTemplate(String templateCode, String organizeCode) {
DdlPackBean templatePackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(templateCode, MesExtConstWords.TEMPLATE_CODE, templatePackBean);
MesLabelTemplate mesLabelTemplate = baseRDao.getByProperty(templatePackBean);
if (mesLabelTemplate != null) {
//级联获取labelTemplateParam
DdlPackBean templateParamPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(mesLabelTemplate.getId(), "templateId", templateParamPackBean);
List<MesLabelTemplateParam> params = mesLabelTemplateParamRDao.findByHqlWhere(templateParamPackBean);
mesLabelTemplate.setLabelTemplateParamList(params);
}
return mesLabelTemplate;
}
}

@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartProdGroupService;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
@ -9,6 +10,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesPrintQueue;
import cn.estsh.i3plus.pojo.mes.repository.MesPartProdGroupDetailRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
@ -17,10 +19,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@ -58,6 +58,14 @@ public class MesPartProdGroupService extends BaseMesService<MesPartProdGroup> im
return mesPartProdGroupDetailRDao.findByHqlWhere(ddlPackBean);
}
@Override
public Map<String, MesPartProdGroup> getMesPartProdGroupMap(String organizeCode, List<String> partProdGroupCodeList) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(partProdGroupCodeList, MesExtConstWords.PART_PROD_GROUP_CODE, packBean);
List<MesPartProdGroup> partProdGroupList = baseRDao.findByHqlWhere(packBean);
return partProdGroupList.stream().collect(Collectors.toMap(MesPartProdGroup::getPartProdGroupCode, Function.identity(), (x, y) -> y));
}
protected void setPackQueryBean(MesPartProdGroup bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getPartProdGroupCode(), "partProdGroupCode", packBean);

@ -1,9 +1,15 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesProductOffLineService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesProductOffLine;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Description :
* @Reference :
@ -14,4 +20,14 @@ import org.springframework.stereotype.Service;
@Service
public class MesProductOffLineServiceImpl extends BaseMesService<MesProductOffLine> implements IMesProductOffLineService {
@Override
public List<MesProductOffLine> findMesProductOffLineByProductSn(String productSn, String organizeCode) {
if(StringUtil.isEmpty(productSn) || StringUtil.isEmpty(organizeCode)){
return null;
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(productSn,"reportSn",packBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.REPORT_TYPE.REPORT.getValue(),"reportType",packBean);
return baseRDao.findByHqlWhere(packBean);
}
}

@ -235,6 +235,12 @@ public class MesPullingOrderInfoService extends BaseMesService<MesPullingOrderIn
pullingOrderPartInfo.setLocation(partInfo.getPullAddr());//todo
pullingOrderPartInfo.setStatus(MesExtEnumUtil.PULL_ORDER_PART_STATUS.UN_SENTED.getValue());///明细已送料为1未送料为0
pullingOrderPartInfo.setCustPartNo(pullingOrder.getCustPartNo());
if (partInfo.getScanValidationType() == 10) {
pullingOrderPartInfo.setColor(MesExtEnumUtil.PART_PULL_DETAIL_COLOR.WHITE.getCode());
} else {
pullingOrderPartInfo.setColor(MesExtEnumUtil.PART_PULL_DETAIL_COLOR.RED.getCode());
}
pullingOrderPartInfo.setCarSeries(partInfo.getCarSeries());
ConvertBean.serviceModelInitialize(pullingOrderPartInfo, userName);
mesPullingOrderPartInfoRepository.insert(pullingOrderPartInfo);

@ -23,6 +23,7 @@ public class MesPullingOrderPartInfoService extends BaseMesService<MesPullingOrd
protected void setPackQueryBean(MesPullingOrderPartInfo bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getPullingOrderNo(), "pullingOrderNo", packBean);
DdlPreparedPack.getStringEqualPack(bean.getPullCode(), "pullCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCellCode(), "workCellCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkOrderNo(), "workOrderNo", packBean);

@ -0,0 +1,60 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesRecyclablePackagePartService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackagePart;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/14 13:45
* @Modify:
**/
@Slf4j
@Service
public class MesRecyclablePackagePartServiceImpl extends BaseMesService<MesRecyclablePackagePart> implements IMesRecyclablePackagePartService {
@Override
protected void onInsertBean(MesRecyclablePackagePart item) {
ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
ValidatorBean.checkNotNull(item.getPackageTypeCode(), "包类型不能为空");
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", seriesPackBean);
if (baseRDao.isExitByHql(seriesPackBean)) {
MesException.throwMesBusiException("零件号【%s】已存在", item.getPartNo());
}
}
@Override
protected void setPackQueryBean(MesRecyclablePackagePart bean, DdlPackBean packBean) {
String packageTypeCode = bean.getPackageTypeCode();
if (!StringUtils.isEmpty(packageTypeCode)) {
DdlPreparedPack.getStringLikerPack(packageTypeCode, "packageTypeCode", packBean);
}
String partNo = bean.getPartNo();
if (!StringUtils.isEmpty(partNo)) {
DdlPreparedPack.getStringLikerPack(partNo, "partNo", packBean);
}
}
@Override
protected void onUpdateBean(MesRecyclablePackagePart item) {
ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
ValidatorBean.checkNotNull(item.getPackageTypeCode(), "包类型不能为空");
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", seriesPackBean);
DdlPreparedPack.getNumNOEqualPack(item.getId(),"id",seriesPackBean);
if (baseRDao.isExitByHql(seriesPackBean)) {
MesException.throwMesBusiException("零件号【%s】已存在", item.getPartNo());
}
}
}

@ -0,0 +1,61 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesRecyclablePackageService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackage;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/14 10:03
* @Modify:
**/
@Slf4j
@Service
public class MesRecyclablePackageServiceImpl extends BaseMesService<MesRecyclablePackage> implements IMesRecyclablePackageService {
@Override
protected void onInsertBean(MesRecyclablePackage item) {
ValidatorBean.checkNotNull(item.getPackageTypeCode(), "包类型不能为空");
ValidatorBean.checkNotNull(item.getPackageSn(), "包条码不能为空");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPackageSn(), "packageSn", ddlPackBean);
if (baseRDao.isExitByHql(ddlPackBean)) {
MesException.throwMesBusiException("回收包装条码【%s】已存在", item.getPackageSn());
}
}
@Override
protected void onUpdateBean(MesRecyclablePackage item) {
ValidatorBean.checkNotNull(item.getId(), "id不能为空");
ValidatorBean.checkNotNull(item.getPackageTypeCode(), "包类型不能为空");
ValidatorBean.checkNotNull(item.getPackageSn(), "包条码不能为空");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPackageSn(), "packageSn", ddlPackBean);
DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", ddlPackBean);
if (baseRDao.isExitByHql(ddlPackBean)) {
MesException.throwMesBusiException("回收包装条码【%s】已存在", item.getPackageSn());
}
}
@Override
protected void setPackQueryBean(MesRecyclablePackage bean, DdlPackBean packBean) {
String packageTypeCode = bean.getPackageTypeCode();
if (!StringUtils.isEmpty(packageTypeCode)) {
DdlPreparedPack.getStringLikerPack(packageTypeCode, "packageTypeCode", packBean);
}
String packageSn = bean.getPackageSn();
if (!StringUtils.isEmpty(packageSn)) {
DdlPreparedPack.getStringLikerPack(packageSn, "packageSn", packBean);
}
}
}

@ -0,0 +1,70 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesRecyclablePackageTypeService;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageType;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/13 17:38
* @Modify:
**/
@Slf4j
@Service
public class MesRecyclablePackageTypeServiceImpl extends BaseMesService<MesRecyclablePackageType> implements IMesRecyclablePackageTypeService {
@Override
protected void onInsertBean(MesRecyclablePackageType item) {
ValidatorBean.checkNotNull(item.getPackageTypeCode(), "包类型不能为空");
ValidatorBean.checkNotNull(item.getPackageTypeName(), "包描述不能为空");
ValidatorBean.checkNotNull(item.getRuleType(),"规则类型不能为空");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPackageTypeCode(), "packageTypeCode", ddlPackBean);
if (baseRDao.isExitByHql(ddlPackBean)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode( ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
.setErrorDetail("回收包装类型已存在{}", item.getPackageTypeCode())
.build();
}
}
@Override
protected void setPackQueryBean(MesRecyclablePackageType bean, DdlPackBean packBean) {
String packageTypeCode = bean.getPackageTypeCode();
if (!StringUtils.isEmpty(packageTypeCode)) {
DdlPreparedPack.getStringLikerPack(packageTypeCode, "packageTypeCode", packBean);
}
}
@Override
protected void onUpdateBean(MesRecyclablePackageType item) {
ValidatorBean.checkNotNull(item.getId(), "id不能为空");
ValidatorBean.checkNotNull(item.getPackageTypeCode(), "包类型不能为空");
ValidatorBean.checkNotNull(item.getPackageTypeName(), "包描述不能为空");
ValidatorBean.checkNotNull(item.getRuleType(),"规则类型不能为空");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPackageTypeCode(), "packageTypeCode", ddlPackBean);
DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", ddlPackBean);
if (baseRDao.isExitByHql(ddlPackBean)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode( ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
.setErrorDetail("回收包装类型已存在{}", item.getPackageTypeCode())
.build();
}
}
}

@ -0,0 +1,45 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesStationService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesStation;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @Description :
* @Reference :
* @Author : PZJ
* @CreateDate : 2024/9/20 14:46
* @Modify:
**/
@Service
@Slf4j
public class MesStationServiceImpl extends BaseMesService<MesStation> implements IMesStationService {
@Override
protected void onInsertBean(MesStation item) {
ValidatorBean.checkNotNull(item.getEquipmentCode(),"设备代码不能为空");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getEquipmentCode(),"equipmentCode",ddlPackBean);
if (baseRDao.isExitByHql(ddlPackBean)){
MesException.throwBusiException("设备代码已存在");
}
}
@Override
protected void onUpdateBean(MesStation item) {
ValidatorBean.checkNotNull(item.getId(),"主键不能为空");
ValidatorBean.checkNotNull(item.getEquipmentCode(),"设备代码不能为空");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getEquipmentCode(),"equipmentCode",ddlPackBean);
DdlPreparedPack.getNumNOEqualPack(item.getId(),"id",ddlPackBean);
if (baseRDao.isExitByHql(ddlPackBean)){
MesException.throwBusiException("设备代码已存在");
}
}
}

@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
@Service
@Slf4j
public class MesWorkCenterService extends BaseMesService<MesWorkCenter> implements IMesWorkCenterService {
@ -41,4 +43,13 @@ public class MesWorkCenterService extends BaseMesService<MesWorkCenter> implemen
return null != workCenterDb ? workCenterDb.getErpWorkCenter() : null;
}
@Override
public List<MesWorkCenter> queryMesWorkCenterList(List<String> workCenterCodeList, String organizeCode) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workCenterCodeList, MesExtConstWords.WORK_CENTER_CODE, packBean);
return workCenterRepository.findByHqlWhere(packBean);
}
}

@ -62,6 +62,9 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
@Autowired
private MesLabelTemplateParamRepository labelTemplateParamRepository;
@Autowired
private IMesPrintedSnLogRepository printedSnLogRepository;
protected void setPackQueryBean(MesWorkOrderCut bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getCutWorkOrderNo(), MesExtConstWords.CUT_WORK_ORDER_NO, packBean);
DdlPreparedPack.getStringLikerPack(bean.getCutCode(), MesExtConstWords.CUT_CODE, packBean);
@ -167,22 +170,43 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
List<MesWorkOrder> workOrders = workOrderListMapByPartNo.get(cutSchemeFg.getPartNo());
MesWorkOrder workOrder = workOrders.get(0);
//MesWorkOrder workOrder = workOrders.get(0);
if (workOrders.size() > 1)
MesException.throwMesBusiException("零件号【%s】存在多个工单", cutSchemeFg.getPartNo());
//if (workOrders.size() > 1)
// MesException.throwMesBusiException("零件号【%s】存在多个工单", cutSchemeFg.getPartNo());
if (!workOrder.getWorkCenterCode().equals(cutScheme.getWorkCenterCode()))
MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", workOrder.getWorkCenterCode(), cutScheme.getWorkCenterCode());
if (!CollectionUtils.isEmpty(workOrders)) workOrders.sort(Comparator.comparing(MesWorkOrder::getUnCompleteQty));
// 成品配置计划数量 * 版数 = 裁片工单该成品总消耗数量
Double totalQty = MathOperation.mul(cutSchemeFg.getQty(), editionNumber);
if (totalQty.compareTo(workOrder.getUnCompleteQty()) > 0)
MesException.throwMesBusiException("零件号【%s】工单未完成数量【%s】不满足产成总数【%s】",
cutSchemeFg.getPartNo(), workOrder.getUnCompleteQty(), totalQty);
Double unCompleteQty = 0.0;
List<String> needWorkOrderNoList = new ArrayList<>();
for (MesWorkOrder order : workOrders) {
if (!order.getWorkCenterCode().equals(cutScheme.getWorkCenterCode()))
MesException.throwMesBusiException("工单【%s】关联产线【%】与裁片方案【%】关联产线不一致!", order.getWorkCenterCode(), cutScheme.getWorkCenterCode());
if (unCompleteQty.compareTo(totalQty) > 0)
MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量汇总【%s】已满足产成总数【%s】!请取消勾选工单【%s】", order.getWorkCenterCode(), needWorkOrderNoList, cutScheme.getWorkCenterCode(), workOrders.subList(needWorkOrderNoList.size(), workOrders.size()));
unCompleteQty = MathOperation.add(unCompleteQty, order.getUnCompleteQty());
needWorkOrderNoList.add(order.getWorkOrderNo());
if (order.getUnCompleteQty().compareTo(totalQty) >= 0) {
workOrderUnCompleteMap.put(order.getWorkOrderNo(), MathOperation.sub(order.getUnCompleteQty(), totalQty));
} else {
workOrderUnCompleteMap.put(order.getWorkOrderNo(), 0.0);
}
workOrderUnCompleteMap.put(workOrder.getWorkOrderNo(), MathOperation.sub(workOrder.getUnCompleteQty(), totalQty));
}
if (totalQty.compareTo(unCompleteQty) > 0) {
List<String> workOrderNoList = workOrders.stream().map(MesWorkOrder::getWorkOrderNo).collect(Collectors.toList());
MesException.throwMesBusiException("零件号【%s】工单【%s】未完成数量【%s】不满足产成总数【%s】!",
cutSchemeFg.getPartNo(), workOrderNoList, unCompleteQty, totalQty);
}
}
}
@ -298,6 +322,7 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
MesException.throwMesBusiException("裁片工单【%s】已打印过标签无法再次打印", o.getCutWorkOrderNo());
});
// 返回结果
List<Map<String, Object>> resultMapList = new ArrayList<>();
List<String> cutCodeList = workOrderCutDbList.stream().map(MesWorkOrderCut::getCutCode)
@ -323,14 +348,14 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
//模板信息丢失抛出异常
if (labelTemplate == null)
MesException.throwBusiException("请检查裁片方案,裁片工单号[%s]所属裁片方案模板代码[%s]无效!", cutScheme.getTemplateCode());
MesException.throwBusiException("请检查裁片方案,裁片方案[%s]模板代码[%s]无效!", cutScheme.getCutCode(), cutScheme.getTemplateCode());
//根据反射获取策略类--封装打印数据
String methodCode = labelTemplate.getMethodCode();
//模板信息丢失抛出异常
if (methodCode == null)
MesException.throwBusiException("裁片方案[%s]模板代码[%s]方法类[%s]无效,请配置!", cutScheme.getCutCode(), labelTemplate.getTemplateCode(), labelTemplate.getMethodCode());
if (StringUtils.isEmpty(methodCode))
MesException.throwBusiException("裁片方案[%s]模板代码[%s]方法类为空,请配置!", cutScheme.getCutCode(), labelTemplate.getTemplateCode());
MesProduceSnPrintModel mesProduceSnPrintModel = new MesProduceSnPrintModel();
mesProduceSnPrintModel.setMesLabelTemplate(labelTemplate);
@ -344,15 +369,28 @@ public class MesWorkOrderCutService extends BaseMesService<MesWorkOrderCut> impl
}
List<MesPrintedSnLog> printedSnLogList = new ArrayList<>();
workOrderCutDbList.forEach(o -> {
o.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue());
o.setPrintTime(TimeTool.getNowTime(true));
ConvertBean.serviceModelUpdate(o, userName);
o.setSystemSyncStatus(CommonEnumUtil.FALSE);
MesPrintedSnLog printedSnLog = new MesPrintedSnLog();
printedSnLog.setOrganizeCode(organizeCode);
printedSnLog.setCutWorkOrderNo(o.getCutWorkOrderNo());
printedSnLog.setBarcode(o.getCutWorkOrderNo());
printedSnLog.setProductDate(TimeTool.getNowTime(MesExtConstWords.DATE_FORMAT));
ConvertBean.serviceModelInitialize(printedSnLog, userName);
printedSnLogList.add(printedSnLog);
});
workOrderCutRepository.saveAll(workOrderCutDbList);
printedSnLogRepository.saveAll(printedSnLogList);
return resultMapList;
}

@ -1,10 +1,13 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.*;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.print.IPrintTemplateStrategyService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.BeanMapUtilsExt;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.model.MesProduceSnPrintModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.mes.apiservice.util.DateUtil;
@ -28,17 +31,20 @@ import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.i3plus.pojo.model.wms.WmsProductModel;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.map.CaseInsensitiveMap;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@ -121,6 +127,21 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Autowired
private MesWorkOrderToSapRepository mesWorkOrderToSapRepository;
@Autowired
private MesPrintQueueRepository printQueueRepository;
@Autowired
private MesCustomerCarModelRepository customerCarModelRepository;
@Autowired
private MesWorkOrderAssemblyRepository workOrderAssemblyRepository;
@Autowired
private IMesLabelTemplateService labelTemplateService;
@Autowired
private IMesPartProdGroupService partProdGroupService;
@Override
public MesWorkOrder insert(MesWorkOrder bean) {
//校验产线与工位的关系
@ -408,7 +429,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", ddlPackBean);
mesPartProdGroup = mesPartProdGroupRDao.getByProperty(ddlPackBean);
if(Objects.isNull(mesPartProdGroup)){
MesException.throwMesBusiException("生产线组【%s】信息不存在",item.getPartProdGroupCode());
MesException.throwMesBusiException("零件生产组【%s】信息不存在",item.getPartProdGroupCode());
}
}
@ -419,11 +440,36 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if(!Objects.isNull(bomList)){
saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList));
}
// 创建工单打印队列
insertPrintQueue(item, mesPartProdGroup);
} else {
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
}
}
private MesPrintQueue insertPrintQueue(MesWorkOrder workOrder, MesPartProdGroup mesPartProdGroup) {
if (workOrder.getWorkOrderType() != MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) return null;
if (mesPartProdGroup == null) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(workOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(workOrder.getPartProdGroupCode(), "partProdGroupCode", ddlPackBean);
mesPartProdGroup = mesPartProdGroupRDao.getByProperty(ddlPackBean);
if(Objects.isNull(mesPartProdGroup)){
MesException.throwMesBusiException("生产线组【%s】信息不存在",workOrder.getPartProdGroupCode());
}
}
MesPrintQueue printQueue = new MesPrintQueue();
BeanUtils.copyProperties(workOrder, printQueue, MesExtConstWords.ID);
printQueue.setPrintQueueType(MesExtEnumUtil.PRINT_QUEUE_TYPE.WORK_ORDER_ASSEMBLY.getValue());
printQueue.setPartProdGroupCode(mesPartProdGroup.getPartProdGroupCode());
printQueue.setPrintStatus(MesExtEnumUtil.PRINT_STATUS.UNPRINT.getValue());
return printQueueRepository.save(printQueue);
}
private MesPartProdGroup getMesPartProdGroup(MesWorkOrder item) {
MesPartProdGroupDetail mesPartProdGroupDetail = new MesPartProdGroupDetail();
mesPartProdGroupDetail.setWorkCenterCode(item.getWorkCenterCode());
@ -556,6 +602,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
BeanUtils.copyProperties(item, workOrderLog, "id");
mesWorkOrderLogList.add(workOrderLog);
// 如果工单为发布状态则新增打印队列
insertPrintQueue(copyMesWorkOrder, null);
continue;
} else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.BTO.getValue()) {
Long produceSeq = 0L;
@ -897,7 +947,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
updateMesWorkOrder(mesWorkOrderDb,(MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrder.getNum());
//试制单不报工
if(Objects.isNull(mesWorkOrderDb.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrderDb.getOrderFlag())){
String sn = getStringList(mesWorkOrder);
String sn = getStringList(mesWorkOrder.getOrganizeCode());
//保存数据
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
String nowTime = StringUtil.isEmpty(mesWorkOrder.getDescription())?TimeTool.getNowTime(true):mesWorkOrder.getDescription();
@ -961,7 +1011,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//物料+生产版本获取bom信息
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
//生成条码
String sn = getStringList(mesWorkOrderNew);
String sn = getStringList(mesWorkOrderNew.getOrganizeCode());
//保存数据
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
List<MesMove> mesMoveList = new ArrayList<>();
@ -1069,15 +1119,22 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
public void doReportWorkReversal(WmsProductModel model) {
//查询物料信息
MesPart mesPart = iMesPartService.getPartByPartNo(model.getPartNo(), model.getOrganizeCode());
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion(model);
//获取bom
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
//保存数据
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
String nowTime = TimeTool.getNowTime(true);
for (MesBom mesBom : mesBoms) {
mesProductOffLineList.add(getMesProductOffLine(model, mesPart, mesProductVersion, mesBom,nowTime));
if (StringUtil.isEmpty(model.getSn())) {
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion(model);
//获取bom
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
//生成流水码
model.setSn(getStringList(model.getOrganizeCode()));
for (MesBom mesBom : mesBoms) {
mesProductOffLineList.add(getMesProductOffLine(model, mesPart, mesProductVersion, mesBom, nowTime));
}
} else {
//按照条码查询之前报工数据
mesProductOffLineList.addAll(getMesProductOffLineList(model, nowTime));
}
mesProductOffLineService.insertBatch(mesProductOffLineList);
}
@ -1106,6 +1163,151 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesCcscTaskService.insertMesCcscTask(organizeCode,mesWorkOrderList);
}
@Override
public void doSaveWorkOrderPrintQueue(MesWorkOrder workOrder) {
if (workOrder == null) return;
if (workOrder.getWorkOrderType() != MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
log.info("doSaveWorkOrderPrintQueue --- 工单:{} 为非排序,无需新增打印队列", workOrder.getWorkOrderNo());
return;
}
insertPrintQueue(workOrder, null);
}
@Override
public List<Map<String, Object>> doReprintWorkOrder(Long[] ids, String organizeCode, String userName) {
List<MesWorkOrder> mesWorkOrderList = getMesWorkOrderList(ids, organizeCode);
// 根据工单号对工单分组
Map<String, MesWorkOrder> workOrderMapByWorkOrderNo = mesWorkOrderList.stream().collect(Collectors.toMap(MesWorkOrder::getWorkOrderNo, Function.identity(), (x, y) -> y));
// 产线代码集合
List<String> workCenterCodeList = mesWorkOrderList.stream().map(MesWorkOrder::getWorkCenterCode).distinct().collect(Collectors.toList());
// 根据产线代码节后获取产线信息集合
List<MesWorkCenter> mesWorkCenters = workCenterService.queryMesWorkCenterList(workCenterCodeList, organizeCode);
// 产线名称集合
Map<String, String> workCenterNameMap = mesWorkCenters.stream().collect(Collectors.toMap(MesWorkCenter::getWorkCenterCode, MesWorkCenter::getWorkCenterName, (x, y) -> y));
// 生产零件号
List<String> partProdGroupCodeList = mesWorkOrderList.stream().map(MesWorkOrder::getPartProdGroupCode).distinct().collect(Collectors.toList());
// 根据零件生产组代码分组
Map<String, MesPartProdGroup> partProdGroupMap = partProdGroupService.getMesPartProdGroupMap(organizeCode, partProdGroupCodeList);
// 客户车型配置名称MAP
Map<String, MesCustomerCarModel> carModelMapByCode = getMesCustomerCarModelMap(organizeCode, mesWorkOrderList);
// 工单装配件
Map<String, List<MesWorkOrderAssembly>> workOrderAssemblyMapByWorkOrderNo = getWorkOrderAssemblyMapByWorkOrderNo(organizeCode, workOrderMapByWorkOrderNo);
// 返回结果
List<Map<String, Object>> resultMapList = new ArrayList<>();
for (MesWorkOrder mesWorkOrder : mesWorkOrderList) {
if (mesWorkOrder == null) {
log.info("doReprintWorkOrder --- 工单为空 暂不输出打印");
continue;
}
mesWorkOrder.setWorkCenterName(workCenterNameMap.get(mesWorkOrder.getWorkCenterCode()));
MesPartProdGroup mesPartProdGroup = partProdGroupMap.get(mesWorkOrder.getPartProdGroupCode());
String printTemplate = mesPartProdGroup.getPrintTemplate();
if (StringUtils.isEmpty(printTemplate)) {
MesException.throwMesBusiException("工单【%s】关联零件生产组【%s】打印模板为空", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getPartProdGroupCode());
}
MesLabelTemplate labelTemplate = labelTemplateService.getLabelTemplate(printTemplate, organizeCode);
//根据反射获取策略类--封装打印数据
String methodCode = labelTemplate.getMethodCode();
//模板信息丢失抛出异常
if (StringUtils.isEmpty(labelTemplate.getMethodCode())) {
MesException.throwMesBusiException("工单【%s】关联零件生产组【%s】打印模板【%s】为空", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getPartProdGroupCode(), labelTemplate.getTemplateCode());
}
Map<String, Object> modelMap = new HashMap<>();
modelMap.put("mesWorkOrder", mesWorkOrder);
modelMap.put("mesPartProdGroup", mesPartProdGroup);
MesCustomerCarModel customerCarModel = carModelMapByCode.get(mesWorkOrder.getCarModelCode());
if (customerCarModel != null) {
modelMap.put("mesCustomerCarModel", customerCarModel);
}
List<MesWorkOrderAssembly> workOrderAssemblyListByWorkOrderNo = workOrderAssemblyMapByWorkOrderNo.get(mesWorkOrder.getWorkOrderNo());
if (!CollectionUtils.isEmpty(workOrderAssemblyListByWorkOrderNo)) {
modelMap.put("mesWorkOrderAssemblyList", workOrderAssemblyListByWorkOrderNo);
}
MesProduceSnPrintModel mesProduceSnPrintModel = new MesProduceSnPrintModel();
mesProduceSnPrintModel.setMesLabelTemplate(labelTemplate);
mesProduceSnPrintModel.setSourceData(modelMap);
mesProduceSnPrintModel.setPrinter(mesPartProdGroup.getPrinter());
MesProduceSnPrintModel snPrintModel = null;
try {
IPrintTemplateStrategyService strategyService = (IPrintTemplateStrategyService) SpringContextsUtil.getBean(methodCode);
snPrintModel = strategyService.execute(null, mesProduceSnPrintModel, null);
} catch (BeansException e) {
MesException.throwMesBusiException("工单【%s】关联零件生产组【%s】打印模板【%s】策略类【%s】执行异常", mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getPartProdGroupCode(), labelTemplate.getTemplateCode(), labelTemplate.getMethodCode());
}
resultMapList.addAll(snPrintModel.getPrintContextList());
}
return resultMapList;
}
private Map<String, MesCustomerCarModel> getMesCustomerCarModelMap(String organizeCode, List<MesWorkOrder> workOrderList) {
List<String> carModelCodeList = workOrderList.stream().map(MesWorkOrder::getCarModelCode).distinct().collect(Collectors.toList());
// 客户车型配置
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(carModelCodeList, MesExtConstWords.CAR_MODEL_CODE, packBean);
List<MesCustomerCarModel> customerCarModelList = customerCarModelRepository.findByHqlWhere(packBean);
return customerCarModelList.stream().collect(Collectors.toMap(MesCustomerCarModel::getCarModelCode, Function.identity(), (x, y) -> y));
}
private Map<String, List<MesWorkOrderAssembly>> getWorkOrderAssemblyMapByWorkOrderNo(String organizeCode, Map<String, MesWorkOrder> workOrderMapByWorkOrderNo) {
List<String> workOrderNoList = workOrderMapByWorkOrderNo.keySet().stream().collect(Collectors.toList());
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackList(workOrderNoList, MesExtConstWords.WORK_ORDER_NO, packBean);
List<MesWorkOrderAssembly> workOrderAssemblyList = workOrderAssemblyRepository.findByHqlWhere(packBean);
Map<String, List<MesWorkOrderAssembly>> workOrderAssemblyMapByWorkOrderNo = workOrderAssemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkOrderNo));
return workOrderAssemblyMapByWorkOrderNo;
}
private List<MesProductOffLine> getMesProductOffLineList(WmsProductModel model, String nowTime) {
//查询报工数据
List<MesProductOffLine> oldProductOffLineList = mesProductOffLineService.findMesProductOffLineByProductSn(model.getSn(), model.getOrganizeCode());
if (CollectionUtils.isEmpty(oldProductOffLineList)) {
MesException.throwMesBusiException("条码【%s】未查询到报工数据", model.getSn());
}
oldProductOffLineList.forEach(item -> {
item.setReportType(MesExtEnumUtil.REPORT_TYPE.CBR.getValue());
item.setOrderNo(model.getShipOrderNo());
item.setCustNo(model.getCustNo());
item.setCustOrder(model.getCustOrderNo());
item.setDescription(nowTime);
item.setSystemSyncStatus(CommonEnumUtil.FALSE);
item.setSystemSyncDatetime("");
ConvertBean.serviceModelInitialize(item, model.getUserName());
});
return oldProductOffLineList;
}
private List<MesWorkOrder> getMesWorkOrderList(Long[] ids, String organizeCode) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getInPackArray(ids,"id",packBean);
@ -1235,9 +1437,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return mesProdRuleSortCfg;
}
private String getStringList(MesWorkOrder mesWorkOrder) {
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.REPORT_SN);
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel.organizeCode(mesWorkOrder.getOrganizeCode()), mesWorkOrder.getCreateUser(), mesWorkOrder.getOrganizeCode(), 1).getResultList();
private String getStringList(String organizeCode) {
List<String> resultList = syncFuncService.syncSerialNo(new GenSerialNoModel(MesCommonConstant.REPORT_SN).organizeCode(organizeCode), AuthUtilExt.getUserName(), organizeCode, 1).getResultList();
return resultList.iterator().next();
}

@ -0,0 +1,104 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.print.strategy;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.print.IPrintTemplateStrategyService;
import cn.estsh.i3plus.ext.mes.pojo.model.MesProduceSnPrintModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description :
* @Reference :
* @Author : Castle
* @CreateDate : 2024/6/17 16:43
* @Modify:
**/
@Component
@Slf4j
public class AssemblyVisualListPrintStrategy implements IPrintTemplateStrategyService {
@Override
public MesProduceSnPrintModel execute(GenSerialNoModel genSerialNoModel, MesProduceSnPrintModel model, MesNumberRule numberRule) {
Map<String, Object> modelMap = (Map<String, Object>) model.getSourceData();
// 工单信息
MesWorkOrder workOrder = (MesWorkOrder) modelMap.get("mesWorkOrder");
// 零件生产组信息
MesPartProdGroup partProdGroup = (MesPartProdGroup) modelMap.get("mesPartProdGroup");
// 客户车型配置信息
MesCustomerCarModel customerCarModel = modelMap.containsKey("mesCustomerCarModel") ? (MesCustomerCarModel) modelMap.get("mesCustomerCarModel") : null;
// 工单装配件信息
List<MesWorkOrderAssembly> workOrderAssemblyList = modelMap.containsKey("mesWorkOrderAssemblyList") ? (List<MesWorkOrderAssembly>) modelMap.get("mesWorkOrderAssemblyList") : null;
workOrderAssemblyList = workOrderAssemblyList.stream().filter(o -> o.getDisplaySeq() != null && o.getDisplaySeq() != 0).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(workOrderAssemblyList)) workOrderAssemblyList.sort(Comparator.comparing(MesWorkOrderAssembly::getDisplaySeq));
// 返回的结果集合
List<Map<String, Object>> printDataMapList = new ArrayList<>();
// 单个标签参数值
Map<String, Object> resultMap = new HashMap<>();
// 工单号
resultMap.put(MesExtConstWords.WORK_ORDER_NO, workOrder.getWorkOrderNo());
// 产线名称
resultMap.put(MesExtConstWords.WORK_CENTER_NAME, workOrder.getWorkCenterName());
// 车型名称
resultMap.put(MesExtConstWords.CAR_MODEL_NAME, customerCarModel == null ? "" : customerCarModel.getCarModelName());
// vinCode
resultMap.put(MesExtConstWords.VIN_CODE, workOrder.getVinCode());
// vinCode 后四位
resultMap.put(MesExtConstWords.VIN_CODE_AFTER_FOUR, workOrder.getVinCode());
// 总成零件号
resultMap.put(MesExtConstWords.PART_NO, workOrder.getPartNo());
// 工单标识
resultMap.put(MesExtConstWords.ORDER_FLAG, workOrder.getOrderFlag());
// 客户订单号
resultMap.put(MesExtConstWords.CUST_ORDER_NO, workOrder.getCustOrderNo());
// 客户零件号
resultMap.put(MesExtConstWords.CUST_PART_NO, workOrder.getPartNo());
// 客户条码
resultMap.put(MesExtConstWords.SN, workOrder.getSn());
// 备注
resultMap.put(MesExtConstWords.REMARK, customerCarModel == null ? "" : customerCarModel.getRemark());
// 重打印
resultMap.put(MesExtConstWords.REPRINT, "重打印");
// 打印时间
resultMap.put(MesExtConstWords.PRINT_TIME, TimeTool.getNowTime("yyyyMMdd HH:mm:ss"));
// EDI接口时间 取工单plan_start_time
resultMap.put(MesExtConstWords.EDI_REC_TIME, workOrder.getPlanStartTime());
// 总个数
Integer totalCount = partProdGroup.getTotalCount();
// 为空时显示内容
String isNullViewContent = StringUtils.isEmpty(partProdGroup.getIsNullViewContent()) ? "" : partProdGroup.getIsNullViewContent();
for (Integer index = 0; index < totalCount; index++) {
String displayValue = workOrderAssemblyList.size() -1 < index ? isNullViewContent : workOrderAssemblyList.get(0).getDisplayValue();
resultMap.put(MesExtConstWords.ASSEMBLY_PARAM + (index+1), StringUtils.isEmpty(displayValue) ? "" : displayValue);
}
printDataMapList.add(resultMap);
model.setPrintContextList(packResultMapList(model, printDataMapList));
return model;
}
private List<Map<String, Object>> packResultMapList(MesProduceSnPrintModel printModel, List<Map<String, Object>> printTemplateDateList) {
List<Map<String, Object>> resultMapList = new ArrayList<>();
Map<String, Object> resultMap = new HashMap<>();
resultMap.put(MesExtConstWords.LABEL_TEMPLATE, printModel.getMesLabelTemplate());
resultMap.put(MesExtConstWords.TEMPLATE_DATA, printTemplateDateList);
resultMap.put(MesExtConstWords.TEMPLATE_CODE, printModel.getMesLabelTemplate().getTemplateCode());
resultMap.put(MesExtConstWords.PRINTER, printModel.getPrinter());
resultMapList.add(resultMap);
return resultMapList;
}
}

@ -95,13 +95,13 @@ public class CutWorkOrderNoPrintStrategy implements IPrintTemplateStrategyServic
resultMap.put(MesExtConstWords.RAW_PART_NO, cutSchemeMaterial.getPartNo());
// 拉料信息 START
resultMap.put(MesExtConstWords.PULLING_MATERIAL_LENGTH, cutSchemeMaterial.getPullingMaterialLength());
resultMap.put(MesExtConstWords.PULLING_MATERIAL_LAYER_NUMBER, cutSchemeMaterial.getPullingMaterialLayerNumber());
resultMap.put(MesExtConstWords.PER_LAYER_NUMBER, cutSchemeMaterial.getPerLayerNumber());
resultMap.put(MesExtConstWords.MATERIAL_DOSAGE, cutSchemeMaterial.getMaterialDosage());
resultMap.put(MesExtConstWords.USING_LENGTH, cutSchemeMaterial.getUsingLength());
resultMap.put(MesExtConstWords.LAYER_NUMBER, cutSchemeMaterial.getLayerNumber());
resultMap.put(MesExtConstWords.TENSION_PARAM, cutSchemeMaterial.getTensionParam());
resultMap.put(MesExtConstWords.PULLING_MATERIAL_LENGTH, getValByDouble(cutSchemeMaterial.getPullingMaterialLength()));
resultMap.put(MesExtConstWords.PULLING_MATERIAL_LAYER_NUMBER, getValByDouble(cutSchemeMaterial.getPullingMaterialLayerNumber()));
resultMap.put(MesExtConstWords.PER_LAYER_NUMBER, getValByDouble(cutSchemeMaterial.getPerLayerNumber()));
resultMap.put(MesExtConstWords.MATERIAL_DOSAGE, getValByDouble(cutSchemeMaterial.getMaterialDosage()));
resultMap.put(MesExtConstWords.USING_LENGTH, getValByDouble(cutSchemeMaterial.getUsingLength()));
resultMap.put(MesExtConstWords.LAYER_NUMBER, getValByDouble(cutSchemeMaterial.getLayerNumber()));
resultMap.put(MesExtConstWords.TENSION_PARAM, getValByDouble(cutSchemeMaterial.getTensionParam()));
resultMap.put(MesExtConstWords.PRINT_TIME, TimeTool.getNowTime("yyyy-M-d H:mm:ss"));
// 拉料信息 END
@ -115,9 +115,9 @@ public class CutWorkOrderNoPrintStrategy implements IPrintTemplateStrategyServic
for (int l = 0; l < EQUIP_PARAM_TITLE_NUM; l++) {
if (cutSchemeEquipmentDetails.size() > l) {
//设备参数值标题1
resultMap.put(MesExtConstWords.EQUIP_PARAM_NAME+(l+1), cutSchemeEquipmentDetails.get(l).getValue());
resultMap.put(MesExtConstWords.EQUIP_PARAM_NAME+(l+1), cutSchemeEquipmentDetails.get(l).getName());
//设备参数值1
resultMap.put(MesExtConstWords.EQUIP_PARAM_VALUE+(l+1), cutSchemeEquipmentDetails.get(l).getName());
resultMap.put(MesExtConstWords.EQUIP_PARAM_VALUE+(l+1), cutSchemeEquipmentDetails.get(l).getValue());
} else {
//设备参数值标题1
resultMap.put(MesExtConstWords.EQUIP_PARAM_NAME+(l+1), "");
@ -147,6 +147,10 @@ public class CutWorkOrderNoPrintStrategy implements IPrintTemplateStrategyServic
return model;
}
private String getValByDouble(Double val) {
return val == null ? "" : val.toString();
}
private Map<String, List<MesCutSchemeFg>> getCutSchemeFgMapByCutCode(List<String> cutCodeList) {
List<MesCutSchemeFg> cutSchemeFgList = getMesCutSchemeFgs(cutCodeList);

@ -299,5 +299,28 @@ public class MesExtConstWords {
// 打印时间
public static final String PRINT_TIME = "printTime";
// 车型名称
public static final String CAR_MODEL_NAME = "carModelName";
// VIN_CODE
public static final String VIN_CODE = "vinCode";
// VIN_CODE 后四位
public static final String VIN_CODE_AFTER_FOUR = "vinCodeAfterFour";
// 工单标识
public static final String ORDER_FLAG = "orderFlag";
// 重打印
public static final String REPRINT = "reprint";
// EDI接收时间
public static final String EDI_REC_TIME = "ediRecTime";
// 装配件参数
public static final String ASSEMBLY_PARAM = "assemblyParam";
// 客户订单号
public static final String CUST_ORDER_NO = "custOrderNo";
//客户零件号
public static final String CUST_PART_NO = "custPartNo";
// 车型大类
public static final String CAR_MODEL_CODE = "carModelCode";
//零件生产组代码
public static final String PART_PROD_GROUP_CODE = "partProdGroupCode";
}

Loading…
Cancel
Save