Compare commits

..

No commits in common. 'uat-temp-wj-250124-equ-check-step' and 'master' have entirely different histories.

@ -63,14 +63,6 @@ public interface IMesBomService extends IBaseMesService<MesBom> {
*/
MesBom findBom(String organizeCode, String bomVersion,String partNo);
/**
* bom
* @param organizeCode
* @param partNo
* @return
*/
MesBom findBom(String organizeCode, String partNo);
@ApiOperation(value = "bom反向查询")
List<MesBom> queryMesBomReverse(MesBom mesBom);
}

@ -1,6 +0,0 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesCimGmCbrRule;
public interface IMesCimGmCbrRuleService extends IBaseMesService<MesCimGmCbrRule>{
}

@ -1,7 +0,0 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingRuleDetail;
public interface IMesPackingRuleDetailService extends IBaseMesService<MesPackingRuleDetail> {
}

@ -1,7 +0,0 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingRule;
public interface IMesPackingRuleService extends IBaseMesService<MesPackingRule> {
}

@ -1,7 +1,6 @@
package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg;
import io.swagger.annotations.ApiOperation;
/**
* @Description:
@ -10,7 +9,6 @@ import io.swagger.annotations.ApiOperation;
*/
public interface IMesProdRuleNosortCfgService extends IBaseMesService<MesProdRuleNosortCfg> {
@ApiOperation(value = "根据产线和物料查询非排序产品加工规则配置", notes = "根据产线和物料查询非排序产品加工规则配置")
MesProdRuleNosortCfg findMesProdRuleNosortCfgByWorkCenterCode(String workCenterCode, String partNo, String organizeCode);
}

@ -1,13 +0,0 @@
package cn.estsh.i3plus.ext.mes.api.busi.report;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesInspectionProductDataAmountReportModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import io.swagger.annotations.ApiOperation;
public interface IMesInspectionProductDataReportService {
@ApiOperation(value = "检验产品数据总报表")
ListPager<MesInspectionProductDataAmountReportModel> queryInspectionProductDataAmountReport(MesInspectionProductDataAmountReportModel model, Pager pager);
}

@ -1,13 +0,0 @@
package cn.estsh.i3plus.ext.mes.api.busi.report;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProductionRecordReportExtModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import io.swagger.annotations.ApiOperation;
public interface IMesProductionRecordReportExtService {
@ApiOperation(value = "加工记录合并批量汇报查询报表")
ListPager<MesProductionRecordReportExtModel> queryProductionRecordUnionWorkOrderLogReport(MesProductionRecordReportExtModel model, Pager pager);
}

@ -10,6 +10,7 @@ import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionRecord;
import cn.estsh.i3plus.pojo.mes.model.MesProductionRecordModel;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.i3plus.pojo.model.common.ExportDataModel;
@ -25,7 +26,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.persistence.EntityManager;
@ -63,10 +63,9 @@ public class BaseExtDataController extends MesBaseController {
@GetMapping(value = "/enumlist")
@ApiOperation(value = "获取MES系统所有枚举")
public ResultBean enumlistByOrg(@RequestParam(name = "enumName") String enumName, @RequestParam(name = "organizeCode", required = false) String organizeCode) {
public ResultBean enumlist(@RequestParam(name = "enumName") String enumName) {
try {
organizeCode = StringUtils.isEmpty(organizeCode) ? AuthUtil.getOrganize().getOrganizeCode() : organizeCode;
Map<String, Object> map = enumService.doGetMesEnumByEnumName(organizeCode, enumName);
Map<String, Object> map = enumService.doGetMesEnumByEnumName(AuthUtil.getOrganize().getOrganizeCode(), enumName);
return ResultBean.success("查询成功")
.setResultObject(map)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());

@ -35,7 +35,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -271,8 +270,9 @@ public class ExtProdOrgController extends MesBaseController {
@ApiOperation(value = "按条件查询生产线所有数据")
public ResultBean queryMesWorkCenterByProperties(MesWorkCenter workCenter) {
try {
if (StringUtils.isEmpty(workCenter.getOrganizeCode())) workCenter.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
workCenter.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
List<MesWorkCenter> workCenterList = prodOrgService.queryMesWorkCenterByProperties(workCenter);
return ResultBean.success("操作成功").setResultList(workCenterList)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {

@ -1,26 +1,10 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel.MesExcelTool;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesAssemblyNosortCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesTimeEfficientCfg;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
*
@ -29,36 +13,4 @@ import java.util.List;
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesAssemblyNosortCfg")
public class MesAssemblyNosortCfgController extends BaseMesController<MesAssemblyNosortCfg>{
@PostMapping(value = "/import-data")
@ApiOperation(value = "导入数据")
public ResultBean importNew(@RequestParam("file") MultipartFile file, @RequestParam("sourceId")Long sourceId) {
try {
MesExcelTool excelTool = new MesExcelTool(entityManager, RedisCacheTool.getImppRedis());
List<MesAssemblyNosortCfg> beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), mesClass);
beanList.forEach(mesAssemblyNosortCfg -> {
mesAssemblyNosortCfg.setPid(sourceId);
});
String userName = AuthUtil.getSessionUser().getUserName();
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
// 导入数据初始化
for (MesAssemblyNosortCfg bean : beanList) {
ConvertBean.serviceModelInitialize(bean, userName);
bean.setOrganizeCode(organizeCode);
bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
}
baseService.insertBatch(beanList);
// 导入后
afterImport(beanList);
return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -1,16 +0,0 @@
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.MesCimGmCbrRule;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* CBR
*/
@Api(value ="通用CBR功能" )
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mes_cim_gm_cbr_rule")
public class MesCimGmCbrRuleController extends BaseMesController<MesCimGmCbrRule>{
}

@ -1,122 +1,13 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteDetailService;
import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCraftDao;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesCraftRoute;
import cn.estsh.i3plus.pojo.mes.bean.MesCraftRouteDetail;
import cn.estsh.i3plus.pojo.mes.repository.MesCraftRouteRepository;
import cn.estsh.i3plus.pojo.model.wms.WmsAgImportModel;
import cn.estsh.i3plus.pojo.wms.bean.*;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
@Api(description = "工艺路线")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCraftRoute")
public class MesCraftRouteController extends BaseMesController<MesCraftRoute> {
public static final Logger LOGGER = LoggerFactory.getLogger(MesCraftRouteController.class);
@Autowired
private IMesCraftRouteDetailService mesCraftRouteDetailService;
@Autowired
private MesCraftRouteRepository mesCraftRouteRepository;
@PostMapping(value = "/all/import")
@ApiOperation(value = "流程导入")
public ResultBean allImport(@RequestParam("file") MultipartFile file) {
try {
String organizeCode = AuthUtil.getOrganizeCode();
//数据空校验以及转换
ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
List<MesCraftRoute> routeList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(),
MesCraftRoute.class, "MesCraftRoute", true);
List<MesCraftRouteDetail> routeDetailList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(),
MesCraftRouteDetail.class, "MesCraftRouteDetail", true);
String userName = AuthUtil.getSessionUser().getUserName();
//String userName ="zxw";
routeList.forEach(mesCraftRoute -> {
mesCraftRoute.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(mesCraftRoute,userName);
DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesCraftRoute.getCraftRouteCode(), "craftRouteCode", roadPackBean);
boolean flg = mesCraftRouteRepository.isExitByHql(roadPackBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("工艺路线代码【%s】已经存在请检查数据", mesCraftRoute.getCraftRouteCode())
.build();
}
});
routeDetailList.forEach(mesCraftRouteDetail -> {
mesCraftRouteDetail.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(mesCraftRouteDetail,userName);
});
baseService.insertBatch(routeList);
mesCraftRouteDetailService.insertBatch(routeDetailList);
return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
* SHEET
*
* @param excelTool
* @param fileName
* @param inputStream
* @param dataBean
* @param sheetName
* @param <T>
* @return
* @throws Exception
*/
private <T> List<T> getDataAndInitValid(ExcelTool excelTool, String fileName, InputStream inputStream,
Class<T> dataBean, String sheetName, boolean isCheckDataEmpty) throws Exception {
List<T> beanList = excelTool.importData(fileName, inputStream, dataBean, sheetName);
LOGGER.info("导入的【" + sheetName + "】数据" + JsonUtilTool.getJSONArrayByList(beanList));
if (isCheckDataEmpty && CollectionUtils.isEmpty(beanList)) {
MesException.throwBusiException(String.format("导入的【%s】数据为空", sheetName));
}
return beanList;
}
}

@ -1,24 +1,9 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel.MesExcelTool;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentProdParamCfg;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* @Description :
@ -30,39 +15,4 @@ import java.util.List;
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesEquipmentProdParamCfg")
public class MesEquipmentProdParamCfgController extends BaseMesController<MesEquipmentProdParamCfg> {
@PostMapping(value = "/import-data")
@ApiOperation(value = "导入数据")
public ResultBean importNew(@RequestParam("file") MultipartFile file, @RequestParam("sourceId")Long sourceId) {
try {
MesExcelTool excelTool = new MesExcelTool(entityManager, RedisCacheTool.getImppRedis());
List<MesEquipmentProdParamCfg> beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), mesClass);
// 校验导入数据
baseService.validateImport(beanList);
beanList.forEach(mesEquipmentProdParamCfg -> {
mesEquipmentProdParamCfg.setSourceId(sourceId);
});
String userName = AuthUtil.getSessionUser().getUserName();
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
// 导入数据初始化
for (MesEquipmentProdParamCfg bean : beanList) {
ConvertBean.serviceModelInitialize(bean, userName);
bean.setOrganizeCode(organizeCode);
bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
}
baseService.insertBatch(beanList);
// 导入后
afterImport(beanList);
return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -1,13 +0,0 @@
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.MesPackingRule;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("成品包装规则")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPackingRule")
public class MesPackingRuleController extends BaseMesController<MesPackingRule>{
}

@ -1,13 +0,0 @@
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.MesPackingRuleDetail;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("成品包装明细规则")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPackingRuleDetail")
public class MesPackingRuleDetailController extends BaseMesController<MesPackingRuleDetail>{
}

@ -1,41 +1,11 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.ExcelTool;
import cn.estsh.i3plus.platform.common.tool.JsonUtilTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.repository.MesAssemblyNosortCfgRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentProdParamCfgRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesTimeEfficientCfgRepository;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesTimeEfficientCfg;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import java.util.stream.Collector;
import java.util.stream.Collectors;
/**
*
@ -44,93 +14,4 @@ import java.util.stream.Collectors;
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesProdRuleNosortCfg")
public class MesProdRuleNosortCfgController extends BaseMesController<MesProdRuleNosortCfg>{
public static final Logger LOGGER = LoggerFactory.getLogger(MesProdRuleNosortCfgController.class);
@Autowired
private MesAssemblyNosortCfgRepository assemblyNosortCfgRepository;
@Autowired
private MesEquipmentProdParamCfgRepository equipmentProdParamCfgRepository;
@Autowired
private MesTimeEfficientCfgRepository timeEfficientCfgRepository;
@PostMapping(value = "/all/import")
@ApiOperation(value = "流程导入")
public ResultBean allImport(@RequestParam("file") MultipartFile file) {
try {
String organizeCode = AuthUtil.getOrganizeCode();
//String organizeCode = "CK01";
//数据空校验以及转换
ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
List<MesProdRuleNosortCfg> ruleNosortCfgList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(),
MesProdRuleNosortCfg.class, "MesProdRuleNosortCfg", true);
List<MesAssemblyNosortCfg> assemblyNosortCfgList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(),
MesAssemblyNosortCfg.class, "MesAssemblyNosortCfg", true);
List<MesEquipmentProdParamCfg> equipmentProdParamCfgList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(),
MesEquipmentProdParamCfg.class, "MesEquipmentProdParamCfg", true);
List<MesTimeEfficientCfg> timeEfficientCfgList = getDataAndInitValid(excelTool, file.getOriginalFilename(), file.getInputStream(),
MesTimeEfficientCfg.class, "MesTimeEfficientCfg", true);
String userName = AuthUtil.getSessionUser().getUserName();
//String userName ="zxw";
ruleNosortCfgList.forEach(ruleNosortCfg -> {
ruleNosortCfg.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(ruleNosortCfg,userName);
});
List<MesProdRuleNosortCfg> ruleNosortCfgs = baseService.insertBatch(ruleNosortCfgList);
Map<String, List<MesProdRuleNosortCfg>> ruleNosortCfgMap = ruleNosortCfgs.stream().collect(Collectors.groupingBy(MesProdRuleNosortCfg::getNo));
assemblyNosortCfgList.forEach(assemblyNosortCfg -> {
List<MesProdRuleNosortCfg> mesProdRuleNosortCfgs = ruleNosortCfgMap.get(assemblyNosortCfg.getNo());
assemblyNosortCfg.setPid(mesProdRuleNosortCfgs.get(0).getId());
assemblyNosortCfg.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(assemblyNosortCfg,userName);
});
assemblyNosortCfgRepository.saveAll(assemblyNosortCfgList);
equipmentProdParamCfgList.forEach(equipmentProdParamCfg -> {
List<MesProdRuleNosortCfg> mesProdRuleNosortCfgs = ruleNosortCfgMap.get(equipmentProdParamCfg.getNo());
equipmentProdParamCfg.setSourceId(mesProdRuleNosortCfgs.get(0).getId());
equipmentProdParamCfg.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(equipmentProdParamCfg,userName);
});
equipmentProdParamCfgRepository.saveAll(equipmentProdParamCfgList);
timeEfficientCfgList.forEach(timeEfficientCfg -> {
List<MesProdRuleNosortCfg> mesProdRuleNosortCfgs = ruleNosortCfgMap.get(timeEfficientCfg.getNo());
timeEfficientCfg.setSourceId(mesProdRuleNosortCfgs.get(0).getId());
timeEfficientCfg.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(timeEfficientCfg,userName);
});
timeEfficientCfgRepository.saveAll(timeEfficientCfgList);
return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
/**
* SHEET
*
* @param excelTool
* @param fileName
* @param inputStream
* @param dataBean
* @param sheetName
* @param <T>
* @return
* @throws Exception
*/
private <T> List<T> getDataAndInitValid(ExcelTool excelTool, String fileName, InputStream inputStream,
Class<T> dataBean, String sheetName, boolean isCheckDataEmpty) throws Exception {
List<T> beanList = excelTool.importData(fileName, inputStream, dataBean, sheetName);
LOGGER.info("导入的【" + sheetName + "】数据" + JsonUtilTool.getJSONArrayByList(beanList));
if (isCheckDataEmpty && CollectionUtils.isEmpty(beanList)) {
MesException.throwBusiException(String.format("导入的【%s】数据为空", sheetName));
}
return beanList;
}
}

@ -1,27 +1,11 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel.MesExcelTool;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentProdParamCfg;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesTimeEfficientCfg;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.RedisCacheTool;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
*
@ -32,37 +16,5 @@ import java.util.List;
public class MesTimeEfficientCfgController extends BaseMesController<MesTimeEfficientCfg>{
@PostMapping(value = "/import-data")
@ApiOperation(value = "导入数据")
public ResultBean importNew(@RequestParam("file") MultipartFile file, @RequestParam("sourceId")Long sourceId) {
try {
MesExcelTool excelTool = new MesExcelTool(entityManager, RedisCacheTool.getImppRedis());
List<MesTimeEfficientCfg> beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), mesClass);
// 校验导入数据
baseService.validateImport(beanList);
beanList.forEach(mesEquipmentProdParamCfg -> {
mesEquipmentProdParamCfg.setSourceId(sourceId);
});
String userName = AuthUtil.getSessionUser().getUserName();
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
// 导入数据初始化
for (MesTimeEfficientCfg bean : beanList) {
ConvertBean.serviceModelInitialize(bean, userName);
bean.setOrganizeCode(organizeCode);
bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
}
baseService.insertBatch(beanList);
// 导入后
afterImport(beanList);
return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException e) {
return ResultBean.fail(e);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -12,7 +12,6 @@ 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.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@ -40,7 +39,8 @@ public class MesWorkCenterBoardController {
ValidatorBean.beginValid(conditionModel)
.notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList())
.notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification());
if (StringUtils.isEmpty(conditionModel.getOrganizeCode())) conditionModel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
conditionModel.setOrganizeCode(organizeCode);
return ResultBean.success("查询产线状态").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).
setResultList(mesYfBoardService.queryWorkCenterStatus(conditionModel));
} catch (ImppBusiException e) {
@ -57,7 +57,8 @@ public class MesWorkCenterBoardController {
ValidatorBean.beginValid(conditionModel)
.notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList())
.notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification());
if (StringUtils.isEmpty(conditionModel.getOrganizeCode())) conditionModel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
conditionModel.setOrganizeCode(organizeCode);
return ResultBean.success("查询产线生产完成率").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).
setResultObject(mesYfBoardService.queryWorkCenterProductionCompletionRate(conditionModel));
} catch (ImppBusiException e) {
@ -74,7 +75,8 @@ public class MesWorkCenterBoardController {
ValidatorBean.beginValid(conditionModel)
.notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList())
.notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification());
if (StringUtils.isEmpty(conditionModel.getOrganizeCode())) conditionModel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
conditionModel.setOrganizeCode(organizeCode);
return ResultBean.success("查询产线工单完成情况").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).
setResultList(mesYfBoardService.queryWorkCenterWorkOrderCompletionStatus(conditionModel));
} catch (ImppBusiException e) {
@ -91,7 +93,8 @@ public class MesWorkCenterBoardController {
ValidatorBean.beginValid(conditionModel)
.notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList())
.notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification());
if (StringUtils.isEmpty(conditionModel.getOrganizeCode())) conditionModel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
conditionModel.setOrganizeCode(organizeCode);
return ResultBean.success("查询单位小时完工数").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).
setResultList(mesYfBoardService.queryUnitHourCompletionRate(conditionModel));
} catch (ImppBusiException e) {
@ -108,7 +111,8 @@ public class MesWorkCenterBoardController {
ValidatorBean.beginValid(conditionModel)
.notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList())
.notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification());
if (StringUtils.isEmpty(conditionModel.getOrganizeCode())) conditionModel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
conditionModel.setOrganizeCode(organizeCode);
return ResultBean.success("查询产线一次下线合格率").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).
setResultList(mesYfBoardService.queryWorkCenterFirstTimeOfflineQualificationRate(conditionModel));
} catch (ImppBusiException e) {
@ -125,7 +129,8 @@ public class MesWorkCenterBoardController {
ValidatorBean.beginValid(conditionModel)
.notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList())
.notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification());
if (StringUtils.isEmpty(conditionModel.getOrganizeCode())) conditionModel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
conditionModel.setOrganizeCode(organizeCode);
return ResultBean.success("查询点检结果").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).
setResultList(mesYfBoardService.queryInspectionResults(conditionModel));
} catch (ImppBusiException e) {
@ -142,7 +147,8 @@ public class MesWorkCenterBoardController {
ValidatorBean.beginValid(conditionModel)
.notNull("workCenterCodeList", conditionModel.getWorkCenterCodeList())
.notNull("timeRangeIdentification", conditionModel.getTimeRangeIdentification());
if (StringUtils.isEmpty(conditionModel.getOrganizeCode())) conditionModel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
conditionModel.setOrganizeCode(organizeCode);
return ResultBean.success("查询异常停线时间").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).
setResultObject(mesYfBoardService.queryAbnormalDowntime(conditionModel));
} catch (ImppBusiException e) {

@ -1,42 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.report;
import cn.estsh.i3plus.ext.mes.api.busi.report.IMesInspectionProductDataReportService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesInspectionProductDataAmountReportModel;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.impp.framework.base.controller.BaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("检验产品数据总报表")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN)
public class MesInspectionProductDataReportController extends BaseController {
@Autowired
private IMesInspectionProductDataReportService inspectionProductDataReportService;
@GetMapping(value = "/inspection-product-data-amount/report/query")
@ApiOperation(value = "检验产品数据总报表")
public ResultBean queryInspectionProductDataAmountReport(MesInspectionProductDataAmountReportModel model, Pager pager) {
try {
model.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
return ResultBean.success("查询成功").setListPager(inspectionProductDataReportService.queryInspectionProductDataAmountReport(model, pager))
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -1,47 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.report;
import cn.estsh.i3plus.ext.mes.api.busi.report.IMesProductionRecordReportExtService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProductionRecordReportExtModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.impp.framework.base.controller.BaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("加工记录合并批量汇报查询报表")
@RestController
@RequestMapping(MesCommonConstant.MES_YANFEN)
public class MesProductionRecordReportExtController extends BaseController {
@Autowired
private IMesProductionRecordReportExtService productionRecordReportExtService;
@GetMapping(value = "/production-record/union/work-order-log/report/query")
@ApiOperation(value = "加工记录合并批量汇报查询报表")
public ResultBean queryProductionRecordUnionWorkOrderLogReport(MesProductionRecordReportExtModel model, Pager pager) {
try {
ValidatorBean.beginValid(model)
.notNull(MesExtConstWords.COMPLETE_DATE_TIME_START, model.getCompleteDateTimeStart())
.notNull(MesExtConstWords.COMPLETE_DATE_TIME_END, model.getCompleteDateTimeEnd());
model.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
return ResultBean.success("查询成功").setListPager(productionRecordReportExtService.queryProductionRecordUnionWorkOrderLogReport(model, pager))
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -2,16 +2,13 @@ package cn.estsh.i3plus.ext.mes.apiservice.dao;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg;
import io.swagger.annotations.ApiOperation;
import java.util.List;
public interface IMesProdRuleNosortCfgDao {
@ApiOperation(value = "根据产线和物料查询非排序产品加工规则配置", notes = "根据产线和物料查询非排序产品加工规则配置")
List<MesProdRuleNosortCfg> findMesProdRuleNosortCfgByWorkCenterCode(String workCenterCode, String partNo, String organizeCode);
@ApiOperation(value = "根据工位和物料查询非排序产品加工规则配置", notes = "根据工位和物料查询非排序产品加工规则配置")
List<MesProdRuleNosortCfg> findMesProdRuleNosortCfgByWorkCellCode(String workCellCode, String partNo, String organizeCode);
}

@ -1,17 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.dao.report;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesInspectionProductDataAmountReportModel;
import cn.estsh.i3plus.pojo.base.common.Pager;
import io.swagger.annotations.ApiOperation;
import java.util.List;
public interface IMesInspectionProductDataReportDao {
@ApiOperation(value = "检验产品数据总报表-数量")
int queryInspectionProductDataAmountReportCount(MesInspectionProductDataAmountReportModel model);
@ApiOperation(value = "检验产品数据总报表")
List<MesInspectionProductDataAmountReportModel> queryInspectionProductDataAmountReport(MesInspectionProductDataAmountReportModel model, Pager pager);
}

@ -1,20 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.dao.report;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProductionRecordReportExtModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : wangjie
* @CreateDate : 2024/9/29 10:21
* @Modify:
**/
public interface IMesProductionRecordReportExtDao {
ListPager<MesProductionRecordReportExtModel> queryProductionRecordUnionWorkOrderLogReport(MesProductionRecordReportExtModel model, Pager pager, List<Integer> reportStatusList2Pr, List<Integer> reportStatusList2Wo);
}

@ -1,229 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.daoimpl.report;
import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesInspectionProductDataReportDao;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesInspectionProductDataAmountReportModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.model.report.ShippingReportModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
public class MesInspectionProductDataReportDao implements IMesInspectionProductDataReportDao {
@Autowired
private EntityManager entityManager;
/**
* -
* @param model
* @return
*/
@Override
public int queryInspectionProductDataAmountReportCount(MesInspectionProductDataAmountReportModel model) {
StringBuffer hql = new StringBuffer();
hql.append(" select count(1) ");
packHqlForQuery(hql, model);
Query query = entityManager.createQuery(hql.toString(), Long.class);
packParameterForQuery(query, model);
return ((Long) query.getSingleResult()).intValue();
}
/**
*
* @param model
* @param pager
* @return
*/
@Override
public List<MesInspectionProductDataAmountReportModel> queryInspectionProductDataAmountReport(MesInspectionProductDataAmountReportModel model, Pager pager) {
StringBuffer hql = new StringBuffer();
hql.append("select new ").append(MesInspectionProductDataAmountReportModel.class.getName()).append(" ( ");
// 添加所有需要查询的字段
hql.append("mpi.id,");
hql.append("mpid.id AS pid,");
hql.append("mpi.inspectionDate,");
hql.append("mpi.modifyDatetime,");
hql.append("mpi.partName,");
hql.append("mpi.partNo,");
hql.append("mpi.sn,");
hql.append("mpi.qty,");
hql.append("mpi.workCenterCode,");
hql.append("mpi.createUser,");
hql.append("mpi.modifyUser AS ncModifyUser,");
hql.append("mpi.inspectionStatus,");
hql.append("mpi.ncStatus,");
hql.append("mpid.defectLocation,");
hql.append("mpid.frontBack,");
hql.append("mpid.defectTypeName,");
hql.append("mm.lgort,");
hql.append("mm.umlgo,");
hql.append("mm.zrsum,");
hql.append("mrt.status AS taskStatus,");
hql.append("mrt.reworkOrder,");
hql.append("mrt.modifyUser,");
hql.append("mp.partTypeCode,");
hql.append("mwc.workCenterName");
hql.append(")");
packHqlForQuery(hql, model);
hql.append(" order by mpi.createDatetime asc ");
Query query = entityManager.createQuery(hql.toString(), MesInspectionProductDataAmountReportModel.class);
packParameterForQuery(query, model);
query.setMaxResults(pager.getPageSize());
if (pager.getCurrentPage() == 0) {
pager.setCurrentPage(1);
}
query.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize());
return query.getResultList();
}
private void packHqlForQuery(StringBuffer hql, MesInspectionProductDataAmountReportModel model) {
hql.append(" from MesPartInspection as mpi ");
hql.append(" left join MesPartInspectionDetail as mpid on (mpi.id = mpid.pid and mpid.organizeCode = :organizeCode and mpid.isDeleted = :isDeleted and mpid.isValid = :isValid) ");
hql.append(" left join MesMove as mm on (mpi.id = mm.partInspectionId and mm.organizeCode = :organizeCode and mm.isDeleted = :isDeleted and mm.isValid = :isValid) ");
hql.append(" left join MesReworkTask as mrt on (mpi.id = mrt.partInspectionId and mrt.organizeCode = :organizeCode and mrt.isDeleted = :isDeleted and mrt.isValid = :isValid) ");
hql.append(" left join MesPart as mp on (mpi.partNo = mp.partNo and mp.organizeCode = :organizeCode and mp.isDeleted = :isDeleted and mp.isValid = :isValid) ");
hql.append(" left join MesWorkCenter as mwc on (mpi.workCenterCode = mwc.workCenterCode and mwc.organizeCode = :organizeCode and mwc.isDeleted = :isDeleted and mwc.isValid = :isValid) ");
hql.append(" where mpi.organizeCode = :organizeCode ");
hql.append(" and mpi.isValid = :isValid ");
hql.append(" and mpi.isDeleted = :isDeleted ");
if (!StringUtils.isEmpty(model.getInspectionDateStart())) {
hql.append(" and mpi.inspectionDate >= :inspectionDateStart ");
}
if (!StringUtils.isEmpty(model.getInspectionDateEnd())) {
hql.append(" and mpi.inspectionDate <= :inspectionDateEnd ");
}
if (!StringUtils.isEmpty(model.getModifyDateTimeStart())) {
hql.append(" and mpi.modifyDatetime >= :modifyDateTimeStart ");
}
if (!StringUtils.isEmpty(model.getModifyDateTimeEnd())) {
hql.append(" and mpi.modifyDatetime <= :modifyDateTimeEnd ");
}
if (!StringUtils.isEmpty(model.getPartNo())) {
hql.append(" and mpi.partNo like :partNo ");
}
if (!StringUtils.isEmpty(model.getPartName())) {
hql.append(" and mpi.partName like :partName ");
}
if (!StringUtils.isEmpty(model.getProductSn())) {
hql.append(" and mpi.sn like :productSn ");
}
if (!StringUtils.isEmpty(model.getWorkCenterCode())) {
hql.append(" and mpi.workCenterCode = :workCenterCode ");
}
if (!StringUtils.isEmpty(model.getCreateUser())) {
hql.append(" and mpi.createUser like :createUser ");
}
if (!StringUtils.isEmpty(model.getInspectionStatus())) {
hql.append(" and mpi.inspectionStatus = :inspectionStatus ");
}
if (!StringUtils.isEmpty(model.getNcStatus())) {
hql.append(" and mpi.ncStatus = :ncStatus ");
}
if (!StringUtils.isEmpty(model.getDefectLocation())) {
hql.append(" and mpid.defectLocation like :defectLocation ");
}
if (!StringUtils.isEmpty(model.getFrontBack())) {
hql.append(" and mpid.frontBack = :frontBack ");
}
if (!StringUtils.isEmpty(model.getDefectTypeName())) {
hql.append(" and mpid.defectTypeName like :defectTypeName ");
}
if (!StringUtils.isEmpty(model.getUmlgo())) {
hql.append(" and mm.umlgo = :umlgo ");
}
if (!StringUtils.isEmpty(model.getTaskStatus())) {
hql.append(" and mrt.status = :taskStatus ");
}
if (!StringUtils.isEmpty(model.getModifyUser())) {
hql.append(" and mrt.modifyUser like :modifyUser ");
}
if (!StringUtils.isEmpty(model.getReworkOrder())) {
hql.append(" and mrt.reworkOrder like :reworkOrder ");
}
if (!StringUtils.isEmpty(model.getPartTypeCode())) {
hql.append(" and mp.partTypeCode like :partTypeCode ");
}
}
private void packParameterForQuery(Query query, MesInspectionProductDataAmountReportModel model) {
query.setParameter(MesExtConstWords.ORGANIZE_CODE, model.getOrganizeCode());
query.setParameter(MesExtConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue());
query.setParameter(MesExtConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
if (!StringUtils.isEmpty(model.getInspectionDateStart())) {
query.setParameter(MesExtConstWords.INSPECTION_DATE_START, model.getInspectionDateStart());
}
if (!StringUtils.isEmpty(model.getInspectionDateEnd())) {
query.setParameter(MesExtConstWords.INSPECTION_DATE_END, model.getInspectionDateEnd());
}
if (!StringUtils.isEmpty(model.getModifyDateTimeStart())) {
query.setParameter(MesExtConstWords.MODIFY_DATE_TIME_START, model.getModifyDateTimeStart());
}
if (!StringUtils.isEmpty(model.getModifyDateTimeEnd())) {
query.setParameter(MesExtConstWords.MODIFY_DATE_TIME_END, model.getModifyDateTimeEnd());
}
if (!StringUtils.isEmpty(model.getPartNo())) {
query.setParameter(MesExtConstWords.PART_NO, MesExtConstWords.PERCENT + model.getPartNo() + MesExtConstWords.PERCENT);
}
if (!StringUtils.isEmpty(model.getPartName())) {
query.setParameter(MesExtConstWords.PART_NAME, MesExtConstWords.PERCENT + model.getPartName() + MesExtConstWords.PERCENT);
}
if (!StringUtils.isEmpty(model.getProductSn())) {
query.setParameter(MesExtConstWords.PRODUCT_SN, MesExtConstWords.PERCENT + model.getProductSn() + MesExtConstWords.PERCENT);
}
if (!StringUtils.isEmpty(model.getWorkCenterCode())) {
query.setParameter(MesExtConstWords.WORK_CENTER_CODE, model.getWorkCenterCode());
}
if (!StringUtils.isEmpty(model.getCreateUser())) {
query.setParameter(MesExtConstWords.CREATE_USER, MesExtConstWords.PERCENT + model.getCreateUser() + MesExtConstWords.PERCENT);
}
if (!StringUtils.isEmpty(model.getInspectionStatus())) {
query.setParameter(MesExtConstWords.INSPECTION_STATUS, model.getInspectionStatus());
}
if (!StringUtils.isEmpty(model.getNcStatus())) {
query.setParameter(MesExtConstWords.NC_STATUS, model.getNcStatus());
}
if (!StringUtils.isEmpty(model.getDefectLocation())) {
query.setParameter(MesExtConstWords.DEFECT_LOCATION, MesExtConstWords.PERCENT + model.getDefectLocation() + MesExtConstWords.PERCENT);
}
if (!StringUtils.isEmpty(model.getFrontBack())) {
query.setParameter(MesExtConstWords.FRONT_BACK, model.getFrontBack());
}
if (!StringUtils.isEmpty(model.getDefectTypeName())) {
query.setParameter(MesExtConstWords.DEFECT_TYPE_NAME, MesExtConstWords.PERCENT + model.getDefectTypeName() + MesExtConstWords.PERCENT);
}
if (!StringUtils.isEmpty(model.getUmlgo())) {
query.setParameter(MesExtConstWords.UMLGO, model.getUmlgo());
}
if (!StringUtils.isEmpty(model.getTaskStatus())) {
query.setParameter(MesExtConstWords.TASK_STATUS, model.getTaskStatus());
}
if (!StringUtils.isEmpty(model.getModifyUser())) {
query.setParameter(MesExtConstWords.MODIFY_USER, MesExtConstWords.PERCENT + model.getModifyUser() + MesExtConstWords.PERCENT);
}
if (!StringUtils.isEmpty(model.getReworkOrder())) {
query.setParameter(MesExtConstWords.REWORK_ORDER, MesExtConstWords.PERCENT + model.getReworkOrder() + MesExtConstWords.PERCENT);
}
if (!StringUtils.isEmpty(model.getPartTypeCode())) {
query.setParameter(MesExtConstWords.PART_TYPE_CODE, MesExtConstWords.PERCENT + model.getPartTypeCode() + MesExtConstWords.PERCENT);
}
}
}

@ -1,283 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.daoimpl.report;
import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesProductionRecordReportExtDao;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProductionRecordReportExtModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.ArrayList;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : wangjie
* @CreateDate : 2024/9/29 10:21
* @Modify:
**/
@Slf4j
@Service
public class MesProductionRecordReportExtDao implements IMesProductionRecordReportExtDao {
@Autowired
private EntityManager entityManager;
@Override
public ListPager<MesProductionRecordReportExtModel> queryProductionRecordUnionWorkOrderLogReport(
MesProductionRecordReportExtModel model, Pager pager, List<Integer> reportStatusList2Pr, List<Integer> reportStatusList2Wo) {
List<MesProductionRecordReportExtModel> resultList = new ArrayList<>();
StringBuilder queryHql = new StringBuilder();
StringBuilder countHql = new StringBuilder();
StringBuilder unionQueryHql = new StringBuilder();
StringBuilder countQueryHql = new StringBuilder();
StringBuilder prQueryHql = new StringBuilder();
StringBuilder woQueryHql = new StringBuilder();
StringBuilder endHql = new StringBuilder();
StringBuilder limitHql = new StringBuilder();
if (!CollectionUtils.isEmpty(reportStatusList2Pr) && !CollectionUtils.isEmpty(reportStatusList2Wo)) {
unionQueryHql.append("SELECT " +
" o.workCenterCode, " +
" o.workCellCode, " +
" o.partNo, " +
" o.partName, " +
" o.shiftCode, " +
" o.equipmentCode, " +
" o.equipmentName, " +
" o.reportStatus, " +
" o.dataSource, " +
" o.statisticsQty " +
" FROM " +
" (( ");
countQueryHql.append("SELECT count(1) " +
" FROM " +
" (( ");
} else {
countQueryHql.append("SELECT count(1) FROM ( ");
}
if (!CollectionUtils.isEmpty(reportStatusList2Pr)) {
prQueryHql.append("" +
" SELECT " +
" a.work_center_code AS workCenterCode, " +
" a.work_cell_code AS workCellCode, " +
" a.part_no AS partNo, " +
" a.part_name AS partName, " +
" a.shift_code AS shiftCode, " +
" a.equipment_code AS equipmentCode, " +
" a.equipment_name AS equipmentName, " +
" a.report_status AS reportStatus, " +
" 1 AS dataSource, " +
" SUM( qty ) AS statisticsQty " +
" FROM ");
prQueryHql.append(" mes_production_record a " +
" WHERE " +
" a.organize_code = :organizeCode " +
" AND a.is_deleted = :isDeleted " +
" AND a.is_valid = :isValid " +
" AND a.complete_date_time >= :completeDateTimeStart " +
" AND a.complete_date_time <= :completeDateTimeEnd ");
if (reportStatusList2Pr.size() == 1) {
prQueryHql.append(" AND a.report_status = :reportStatus ");
} else {
prQueryHql.append(" AND a.report_status in (:reportStatus) ");
}
if (!StringUtils.isEmpty(model.getPartNo())) {
prQueryHql.append(" AND a.part_no = :partNo ");
}
if (!StringUtils.isEmpty(model.getWorkCenterCode())) {
prQueryHql.append(" AND a.work_center_code = :workCenterCode ");
}
if (!StringUtils.isEmpty(model.getWorkCellCode())) {
prQueryHql.append(" AND a.work_cell_code = :workCellCode ");
}
if (!StringUtils.isEmpty(model.getShiftCode())) {
prQueryHql.append(" AND a.shift_code = :shiftCode ");
}
if (!StringUtils.isEmpty(model.getEquipmentCode())) {
prQueryHql.append(" AND a.equipment_code = :equipmentCode ");
}
prQueryHql.append(" GROUP BY " +
" a.work_center_code, " +
" a.work_cell_code, " +
" a.part_no, " +
" a.shift_code, " +
" a.report_status " +
" ORDER BY " +
" a.complete_date_time DESC ");
}
if (!CollectionUtils.isEmpty(reportStatusList2Pr) && !CollectionUtils.isEmpty(reportStatusList2Wo)) {
prQueryHql.append(" ) UNION ALL ( ");
}
if (!CollectionUtils.isEmpty(reportStatusList2Wo)) {
woQueryHql.append("" +
" SELECT " +
" b.work_center_code AS workCenterCode, " +
" ' ' AS workCellCode, " +
" b.part_no AS partNo, " +
" b.part_name AS partName, " +
" b.shift_code AS shiftCode, " +
" ' ' AS equipmentCode, " +
" ' ' AS equipmentName, " +
" b.type AS reportStatus, " +
" 2 AS dataSource, " +
" SUM( modify_qty ) AS statisticsQty " +
" FROM ");
woQueryHql.append(" mes_work_order_log b " +
" WHERE " +
" b.organize_code = :organizeCode " +
" AND b.is_deleted = :isDeleted " +
" AND b.is_valid = :isValid " +
" AND b.modify_date_time >= :completeDateTimeStart " +
" AND b.modify_date_time <= :completeDateTimeEnd ");
if (reportStatusList2Wo.size() == 1) {
woQueryHql.append(" AND b.type = :messageType ");
} else {
woQueryHql.append(" AND b.type in (:messageType) ");
}
if (!StringUtils.isEmpty(model.getPartNo())) {
woQueryHql.append(" AND b.part_no = :partNo ");
}
if (!StringUtils.isEmpty(model.getWorkCenterCode())) {
woQueryHql.append(" AND b.work_center_code = :workCenterCode ");
}
if (!StringUtils.isEmpty(model.getShiftCode())) {
woQueryHql.append(" AND b.shift_code = :shiftCode ");
}
woQueryHql.append(" GROUP BY " +
" b.work_center_code, " +
" b.part_no, " +
" b.shift_code " +
" ORDER BY " +
" b.modify_date_time DESC ");
}
if (!CollectionUtils.isEmpty(reportStatusList2Pr) && !CollectionUtils.isEmpty(reportStatusList2Wo)) {
endHql.append(" )) AS o ");
} else {
endHql.append(" ) AS o ");
}
limitHql.append(" LIMIT :startRow , :pageSize ");
if (!CollectionUtils.isEmpty(reportStatusList2Pr) && !CollectionUtils.isEmpty(reportStatusList2Wo)) {
queryHql.append(unionQueryHql).append(prQueryHql).append(woQueryHql).append(endHql).append(limitHql);
countHql.append(countQueryHql).append(prQueryHql).append(woQueryHql).append(endHql);
} else {
if (!CollectionUtils.isEmpty(reportStatusList2Pr)) {
queryHql.append(prQueryHql).append(limitHql);
countHql.append(countQueryHql).append(prQueryHql).append(endHql);
} else {
queryHql.append(woQueryHql).append(limitHql);
countHql.append(countQueryHql).append(woQueryHql).append(endHql);
}
}
// log.info("queryHql: --- {}", queryHql.toString());
// log.info("countHql: --- {}", countHql.toString());
Query dataQuery = entityManager.createNativeQuery(queryHql.toString());
setQueryParams(dataQuery, model, reportStatusList2Pr, reportStatusList2Wo, pager);
Query countQuery = entityManager.createNativeQuery(countHql.toString());
setQueryParams(countQuery, model, reportStatusList2Pr, reportStatusList2Wo, null);
Object o = countQuery.getSingleResult();
int count = Integer.parseInt(o.toString());
List list = dataQuery.getResultList();
if (!CollectionUtils.isEmpty(list)) {
for (Object object : list) {
if (null == object) continue;
Object[] objectArr = (Object[]) object;
if (null == objectArr || objectArr.length != 10) continue;
MesProductionRecordReportExtModel result = new MesProductionRecordReportExtModel(
objectArr[0], objectArr[1], objectArr[2], objectArr[3], objectArr[4], objectArr[5], objectArr[6], objectArr[7], objectArr[8], objectArr[9]);
if (!StringUtils.isEmpty(result.getDataSource()) && !StringUtils.isEmpty(result.getReportStatus())) {
if (result.getDataSource().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) {
if (result.getReportStatus().compareTo(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue()) == 0) result.setReportStatusName(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getDescription());
else result.setReportStatusName(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getDescription());
} else {
result.setReportStatusName(MesExtEnumUtil.WORK_ORDER_LOG_TYPE.valueOfDescription(result.getReportStatus()));
}
}
resultList.add(result);
}
}
pager = PagerHelper.getPager(pager, count);
return new ListPager(resultList, pager);
}
private void setQueryParams(Query query, MesProductionRecordReportExtModel model, List<Integer> reportStatusList2Pr, List<Integer> reportStatusList2Wo, Pager pager) {
query.setParameter(MesExtConstWords.ORGANIZE_CODE, model.getOrganizeCode());
query.setParameter(MesExtConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter(MesExtConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue());
query.setParameter(MesExtConstWords.COMPLETE_DATE_TIME_START, model.getCompleteDateTimeStart());
query.setParameter(MesExtConstWords.COMPLETE_DATE_TIME_END, model.getCompleteDateTimeEnd());
if (!CollectionUtils.isEmpty(reportStatusList2Pr)) {
if (reportStatusList2Pr.size() == 1) {
query.setParameter(MesExtConstWords.REPORT_STATUS, reportStatusList2Pr.get(0));
} else {
query.setParameter(MesExtConstWords.REPORT_STATUS, reportStatusList2Pr);
}
}
if (!CollectionUtils.isEmpty(reportStatusList2Wo)) {
if (reportStatusList2Wo.size() == 1) {
query.setParameter(MesExtConstWords.MESSAGE_TYPE, reportStatusList2Wo.get(0));
} else {
query.setParameter(MesExtConstWords.MESSAGE_TYPE, reportStatusList2Wo);
}
}
if (!StringUtils.isEmpty(model.getPartNo())) {
query.setParameter(MesExtConstWords.PART_NO, model.getPartNo());
}
if (!StringUtils.isEmpty(model.getWorkCenterCode())) {
query.setParameter(MesExtConstWords.WORK_CENTER_CODE, model.getWorkCenterCode());
}
if (!StringUtils.isEmpty(model.getWorkCellCode())) {
query.setParameter(MesExtConstWords.WORK_CELL_CODE, model.getWorkCellCode());
}
if (!StringUtils.isEmpty(model.getShiftCode())) {
query.setParameter(MesExtConstWords.SHIFT_CODE, model.getShiftCode());
}
if (!StringUtils.isEmpty(model.getEquipmentCode())) {
query.setParameter(MesExtConstWords.EQUIPMENT_CODE, model.getEquipmentCode());
}
if (null != pager) {
Integer startRow = (pager.getCurrentPage() - 1) * pager.getPageSize();
query.setParameter("startRow", startRow);
query.setParameter("pageSize", pager.getPageSize());
}
}
}

@ -201,18 +201,17 @@ public class MesYfReportDaoImpl implements IMesYfReportDao {
private String getGeneralExportCommonHql(MesGeneralExportReportModel model) {
StringBuilder commonHql = new StringBuilder();
commonHql.append(" from MesWorkOrderAssembly orderAssembly left join MesWorkOrder workOrder on workOrder.organizeCode = :organizeCode and workOrder.isDeleted=:isDeleted and workOrder.isValid=:isValid and orderAssembly.workOrderNo = workOrder.workOrderNo ");
commonHql.append(" left join MesProductionAssembly assembly on assembly.organizeCode=:organizeCode and assembly.isDeleted=:isDeleted and assembly.isValid=:isValid and workOrder.custSn = assembly.custSn and orderAssembly.assemblyPartNo = assembly.assemblyPartNo ");
commonHql.append(" left join MesProdRuleSortCfg sortCfg on sortCfg.organizeCode = :organizeCode and sortCfg.isDeleted=:isDeleted and sortCfg.isValid=:isValid and orderAssembly.pid = sortCfg.id and orderAssembly.assemblyPartNo = sortCfg.assemblyPartNo ");
commonHql.append(" left join MesPartType partType on partType.organizeCode = :organizeCode and partType.isDeleted=:isDeleted and partType.isValid=:isValid and sortCfg.partTypeCode = partType.partTypeCode ");
commonHql.append(" from MesWorkOrderAssembly orderAssembly left join MesWorkOrder workOrder on orderAssembly.workOrderNo = workOrder.workOrderNo and workOrder.organizeCode = :organizeCode and workOrder.isDeleted=:isDeleted and workOrder.isValid=:isValid");
commonHql.append(" left join MesProductionAssembly assembly on workOrder.custSn = assembly.custSn and orderAssembly.organizeCode=:organizeCode and orderAssembly.isDeleted=:isDeleted and orderAssembly.isValid=:isValid ");
commonHql.append(" left join MesProdRuleSortCfg sortCfg on orderAssembly.pid = sortCfg.id and sortCfg.organizeCode = :organizeCode and sortCfg.isDeleted=:isDeleted and sortCfg.isValid=:isValid");
commonHql.append(" left join MesPartType partType on sortCfg.partTypeCode = partType.partTypeCode and partType.organizeCode = :organizeCode and partType.isDeleted=:isDeleted and partType.isValid=:isValid");
commonHql.append(" where orderAssembly.organizeCode=:organizeCode and orderAssembly.isDeleted=:isDeleted and orderAssembly.isValid=:isValid and workOrder.organizeCode = :organizeCode");
commonHql.append(" and workOrder.isDeleted=:isDeleted and workOrder.isValid=:isValid and assembly.organizeCode = :organizeCode and assembly.isDeleted=:isDeleted and assembly.isValid=:isValid");
commonHql.append(" and sortCfg.organizeCode = :organizeCode and sortCfg.isDeleted=:isDeleted and sortCfg.isValid=:isValid and partType.organizeCode = :organizeCode and partType.isDeleted=:isDeleted and partType.isValid=:isValid ");
commonHql.append(" and partType.assemblyDescription = '通用追溯' and workOrder.workOrderStatus in (:workOrderStatus) ");
commonHql.append(" and assembly.assemblySn != '' and assembly.assemblySn is not null ");
if (!StringUtils.isEmpty(model.getWorkCenterCode())) commonHql.append(" and workOrder.workCenterCode like '%").append(model.getWorkCenterCode()).append("%' ");
if (!StringUtils.isEmpty(model.getCustSn())) commonHql.append(" and workOrder.custSn like '%").append(model.getCustSn()).append("%' ");
if (!StringUtils.isEmpty(model.getAssemblySn())) commonHql.append(" and assembly.assemblySn like '%").append(model.getAssemblySn()).append("%' ");
if (!StringUtils.isEmpty(model.getCustSn())) commonHql.append(" and orderAssembly.custSn like '%").append(model.getCustSn()).append("%' ");
if (!StringUtils.isEmpty(model.getAssemblySn())) commonHql.append(" and orderAssembly.assemblySn like '%").append(model.getAssemblySn()).append("%' ");
if (!StringUtils.isEmpty(model.getWorkOrderNo())) commonHql.append(" and workOrder.workOrderNo like '%").append(model.getWorkOrderNo()).append("%' ");
if (!StringUtils.isEmpty(model.getShippingTimeStart())) commonHql.append(" and workOrder.shippingTime >= :shippingTimeStart ");
if (!StringUtils.isEmpty(model.getShippingTimeEnd())) commonHql.append(" and workOrder.shippingTime <= :shippingTimeEnd ");

@ -103,15 +103,6 @@ public class ShipmentDetailReportDaoImpl implements IShipmentDetailReportDao {
commonQueryHql.append("AND ms.isValid = :isValid ");
// 动态添加其他查询条件
if (!StringUtils.isEmpty(model.getVin())) {
commonQueryHql.append("AND momd.vin like :vin ");
}
if (!StringUtils.isEmpty(model.getCustOrderNo())) {
commonQueryHql.append("AND momd.custOrderNo like :custOrderNo ");
}
if (!StringUtils.isEmpty(model.getBarCode())) {
commonQueryHql.append("AND momd.barcode like :barcode ");
}
if (!StringUtils.isEmpty(model.getShippingCode())) {
commonQueryHql.append("AND ms.shippingCode like :shippingCode ");
}
@ -127,9 +118,6 @@ public class ShipmentDetailReportDaoImpl implements IShipmentDetailReportDao {
if (!StringUtils.isEmpty(model.getCustCode())) {
commonQueryHql.append("AND ms.custCode like :custCode ");
}
if (!StringUtils.isEmpty(model.getShippingGroupName())) {
commonQueryHql.append("AND ms.shippingGroupName like :shippingGroupName ");
}
if (!StringUtils.isEmpty(model.getCustOrganizeCode())) {
commonQueryHql.append("AND ms.custOrganizeCode = :custOrganizeCode ");
}
@ -164,16 +152,6 @@ public class ShipmentDetailReportDaoImpl implements IShipmentDetailReportDao {
dataQuery.setParameter("organizeCode", model.getOrganizeCode());
dataQuery.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
dataQuery.setParameter("isValid", CommonEnumUtil.IS_VAILD.VAILD.getValue());
if (!StringUtils.isEmpty(model.getVin())) {
dataQuery.setParameter("vin", model.getVin() + "%");
}
if (!StringUtils.isEmpty(model.getCustOrderNo())) {
dataQuery.setParameter("custOrderNo", model.getCustOrderNo() + "%");
}
if (!StringUtils.isEmpty(model.getBarCode())) {
dataQuery.setParameter("barcode", model.getBarCode() + "%");
}
if (!StringUtils.isEmpty(model.getShippingCode())) {
dataQuery.setParameter("shippingCode", model.getShippingCode() + "%");
}
@ -189,9 +167,6 @@ public class ShipmentDetailReportDaoImpl implements IShipmentDetailReportDao {
if (!StringUtils.isEmpty(model.getCustCode())) {
dataQuery.setParameter("custCode", model.getCustCode() + "%");
}
if (!StringUtils.isEmpty(model.getShippingGroupName())) {
dataQuery.setParameter("shippingGroupName", "%" + model.getShippingGroupName() + "%");
}
if (!StringUtils.isEmpty(model.getCustOrganizeCode())) {
dataQuery.setParameter("custOrganizeCode", model.getCustOrganizeCode());
}

@ -23,7 +23,7 @@ public class MesAssemblyNosortCfgService extends BaseMesService<MesAssemblyNosor
for (MesAssemblyNosortCfg item : beanList) {
// 数据校验
ValidatorBean.checkNotNull(item.getPid(), "非排序加工规则ID不能为空");
ValidatorBean.checkNotNull(item.getPid(), "非排序加工规则ID");
ValidatorBean.checkNotNull(item.getAssemblyPartNo(), "原料零件号不能为空");
}

@ -1,7 +1,6 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesBomService;
import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesBomDao;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.model.MesBomTreeModel;
@ -16,7 +15,6 @@ import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesBom;
import cn.estsh.i3plus.pojo.mes.bean.MesConfig;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
@ -25,7 +23,6 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
@ -37,12 +34,9 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
@Autowired
private IMesBomDao mesBomDao;
@Autowired
private IMesConfigService mesConfigService;
protected void setPackQueryBean(MesBom bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getBomVersion(), MesExtConstWords.BOM_VERSION, packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), MesExtConstWords.PART_NO, packBean);
DdlPreparedPack.getStringEqualPack(bean.getBomVersion(), "bomVersion", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
}
@Override
@ -66,7 +60,7 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
organize.setName("LML");
// organize.setName(AuthUtil.getOrganize().getName());
List<MesBom> bomList = baseRDao.findByProperty(new String[]{MesConstWords.IS_VALID, MesConstWords.IS_DELETED, MesConstWords.ORGANIZE_CODE, MesExtConstWords.PART_NO},
List<MesBom> bomList = baseRDao.findByProperty(new String[]{MesConstWords.IS_VALID, MesConstWords.IS_DELETED, MesConstWords.ORGANIZE_CODE, "partNo"},
new Object[]{CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), bom.getOrganizeCode(), bom.getPartNo()});
if (!CollectionUtils.isEmpty(bomList)) {
@ -90,19 +84,13 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
organize.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue());
organize.setName(AuthUtil.getOrganize().getName());
//organize.setName("zxw");
DdlPackBean packBean = DdlPackBean.getDdlPackBean(bom.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bom.getPartNo(), MesExtConstWords.PART_NO, packBean);
DdlPreparedPack.getStringEqualPack(bom.getBomVersion(), MesExtConstWords.BOM_VERSION, packBean);
DdlPreparedPack.getStringEqualPack(bom.getBomCode(), MesExtConstWords.BOM_CODE, packBean);
DdlPreparedPack.getStringSmallerPack(bom.getEffStartTime(), MesExtConstWords.EFF_START_TIME, packBean);
String sql = " and (model.effEndTime = '' or model.effEndTime is null or model.effEndTime >= '" + bom.getEffStartTime() + "' )" ;
packBean.setWhereAppend(packBean.getWhereAppend() + sql);
DdlPackBean packBean = DdlPackBean.getDdlPackBean(bom.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bom.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringEqualPack(bom.getBomVersion(), "bomVersion", packBean);
DdlPreparedPack.getStringEqualPack(bom.getBomCode(), "bomCode", packBean);
DdlPreparedPack.getStringSmallerPack(bom.getEffStartTime(), "effStartTime", packBean);
packBean.setOrderByStr(" order by createDatetime desc ");
pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean));
List<MesBom> bomList = baseRDao.findByHqlWherePage(packBean, pager);
@ -128,10 +116,10 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
organize.setName(AuthUtil.getOrganize().getName());
//organize.setName("zxw");
DdlPackBean packBean = DdlPackBean.getDdlPackBean(bom.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(bom.getPartNo(), MesExtConstWords.PART_NO, packBean);
DdlPreparedPack.getStringEqualPack(bom.getBomVersion(), MesExtConstWords.BOM_VERSION, packBean);
DdlPreparedPack.getStringEqualPack(bom.getBomCode(), MesExtConstWords.BOM_CODE, packBean);
DdlPreparedPack.getStringSmallerPack(bom.getEffStartTime(), MesExtConstWords.EFF_START_TIME, packBean);
DdlPreparedPack.getStringEqualPack(bom.getPartNo(), "partNo", packBean);
DdlPreparedPack.getStringEqualPack(bom.getBomVersion(), "bomVersion", packBean);
DdlPreparedPack.getStringEqualPack(bom.getBomCode(), "bomCode", packBean);
DdlPreparedPack.getStringSmallerPack(bom.getEffStartTime(), "effStartTime", packBean);
packBean.setOrderByStr(" order by createDatetime desc ");
pager = PagerHelper.getPager(pager, baseRDao.findByHqlWhereCount(packBean));
@ -143,13 +131,12 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
return new ListPager<>(list, pager);
}
//报表使用的方法
public List<MesBom> findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion, String bomCode, String effStartTime) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean);
DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean);
DdlPreparedPack.getStringEqualPack(bomCode, MesExtConstWords.BOM_CODE, ddlPackBean);
DdlPreparedPack.getStringSmallerPack(effStartTime, MesExtConstWords.EFF_START_TIME, ddlPackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bomVersion, "bomVersion", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", ddlPackBean);
DdlPreparedPack.getStringSmallerPack(effStartTime, "effStartTime", ddlPackBean);
DdlPreparedPack.getOrderBy(null, null, ddlPackBean);
List<MesBom> mesBoms = baseRDao.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(mesBoms)) {
@ -158,33 +145,19 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
return mesBoms;
}
//生产汇报使用的方法
public List<MesBom> findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion) {
//MES汇报查询BOM是否携带结束查询条件
MesConfig config = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_REPORT_FIND_BOM_WITH_EFFENDTIME);
Boolean isWithEffEndTime = (null != config && !StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())) ? true : false;
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean);
if (!StringUtils.isEmpty(bomVersion)) {
DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean);
}
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_TIME, ddlPackBean);
if (isWithEffEndTime) DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, ddlPackBean);
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean);
List<MesBom> mesBoms = baseRDao.findByHqlTopWhere(ddlPackBean,1);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(bomVersion, "bomVersion", ddlPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", ddlPackBean);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean);
List<MesBom> mesBoms = baseRDao.findByHqlWhere(ddlPackBean);
if (CollectionUtils.isEmpty(mesBoms)) {
MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion);
}
MesBom mesBom = mesBoms.get(0);
String bomCode = mesBom.getBomCode();
String effStartTime = mesBom.getEffStartTime();
DdlPackBean ddlPackBean1= DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean1);
DdlPreparedPack.getStringEqualPack(bomCode, MesExtConstWords.BOM_CODE, ddlPackBean1);
DdlPreparedPack.getStringSmallerPack(effStartTime, MesExtConstWords.EFF_START_TIME, ddlPackBean1);
return baseRDao.findByHqlWhere(ddlPackBean1);
MesBom next = mesBoms.iterator().next();
//如果存在多个bomCode取最新的一个
return mesBoms.stream().collect(Collectors.groupingBy(t -> t.getBomCode() + t.getEffStartTime())).get(next.getBomCode() + next.getEffStartTime());
}
@Override
@ -229,28 +202,8 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
@Override
public MesBom findBom(String organizeCode, String bomVersion, String partNo) {
DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomPackBean);
if (bomVersion != null){
DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, bomPackBean);
}
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomPackBean);
List<MesBom> bomList = this.baseRDao.findByHqlTopWhere(bomPackBean,1);
return bomList.isEmpty() ? null : bomList.get(0);
}
@Override
public MesBom findBom(String organizeCode, String partNo) {
//MES汇报查询BOM是否携带结束查询条件
MesConfig config = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_REPORT_FIND_BOM_WITH_EFFENDTIME);
Boolean isWithEffEndTime = (null != config && !StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())) ? true : false;
DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_TIME, bomPackBean);
if (isWithEffEndTime){
DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, bomPackBean);
}
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomPackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomPackBean);
DdlPreparedPack.getStringEqualPack(bomVersion, "bomVersion", bomPackBean);
List<MesBom> bomList = this.baseRDao.findByHqlTopWhere(bomPackBean,1);
return bomList.isEmpty() ? null : bomList.get(0);
}
@ -259,8 +212,8 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
public List<MesBom> queryMesBomReverse(MesBom mesBom) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesBom.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesBom.getPartNo(), "itemPartNo", packBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_TIME, packBean);
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), packBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", packBean);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), packBean);
List<MesBom> mesBomList = baseRDao.findByHqlWhere(packBean);
if(CollectionUtils.isEmpty(mesBomList)){
return new ArrayList<>();
@ -281,8 +234,8 @@ public class MesBomService extends BaseMesService<MesBom> implements IMesBomServ
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, "itemPartNo", packBean);
DdlPreparedPack.getStringEqualPack("X", "partType", packBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_TIME, packBean);
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), packBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), "effStartTime", packBean);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), packBean);
List<MesBom> mesBomList = baseRDao.findByHqlWhere(packBean);
if(CollectionUtils.isEmpty(mesBomList)) return;
Map<String, List<MesBom>> mesBomMap = mesBomList.stream().collect(Collectors.groupingBy(bom -> bom.getPartNo() + bom.getItemPartNo()));

@ -1,9 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCimGmCbrRuleService;
import cn.estsh.i3plus.pojo.mes.bean.MesCimGmCbrRule;
import org.springframework.stereotype.Service;
@Service
public class MesCimGmCbrRuleServiceImpl extends BaseMesService<MesCimGmCbrRule> implements IMesCimGmCbrRuleService {
}

@ -4,7 +4,6 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesEquipmentSpotCheckDetailService;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
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.util.MesExtConstWords;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
@ -38,10 +37,9 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService<MesEquipm
private MesEquipmentVariableRepository mesEquipmentVariableRepository;
protected void setPackQueryBean(MesEquipmentSpotCheckDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getNumEqualPack(bean.getPid(), MesExtConstWords.PID, packBean);
DdlPreparedPack.getNumEqualPack(bean.getPid(), "pid", packBean);
DdlPreparedPack.getStringLikerPack(bean.getSpotCheckItemCode(), "spotCheckItemCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getSpotCheckItemName(), "spotCheckItemName", packBean);
DdlPreparedPack.getStringLikerPack(bean.getEquipCode(), MesExtConstWords.EQUIP_CODE, packBean);
DdlPreparedPack.getNumEqualPack(bean.getDataType(), "dataType", packBean);
DdlPreparedPack.getNumEqualPack(bean.getSpotCheckItemType(), "spotCheckItemType", packBean);
//43100 设备点检设置明细导入完成后,期望序列号可以正排
@ -55,7 +53,7 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService<MesEquipm
ValidatorBean.checkNotNull(item.getSpotCheckItemCode(), "点检项代码不能为空");
DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.PID, roadPackBean);
DdlPreparedPack.getNumEqualPack(item.getPid(), "pid", roadPackBean);
DdlPreparedPack.getStringEqualPack(item.getSpotCheckItemCode(), "spotCheckItemCode", roadPackBean);
boolean flg = baseRDao.isExitByHql(roadPackBean);
if (flg) {
@ -65,19 +63,6 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService<MesEquipm
.setErrorDetail("点检项代码【%s】已经存在请检查数据", item.getSpotCheckItemCode())
.build();
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.ID, packBean);
MesEquipmentSpotCheck equipmentSpotCheck = equipmentSpotCheckRepository.getByProperty(packBean);
if (null == equipmentSpotCheck) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("点检方案ID【%s】信息不存在请检查数据", item.getPid())
.build();
}
item.setEquipCode(equipmentSpotCheck.getEquipCode());
}
@Override
@ -86,9 +71,9 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService<MesEquipm
ValidatorBean.checkNotNull(item.getSpotCheckItemCode(), "点检项代码不能为空");
DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.PID, roadPackBean);
DdlPreparedPack.getNumEqualPack(item.getPid(), "pid", roadPackBean);
DdlPreparedPack.getStringEqualPack(item.getSpotCheckItemCode(), "spotCheckItemCode", roadPackBean);
DdlPreparedPack.getNumNOEqualPack(item.getId(), MesExtConstWords.ID, roadPackBean);
DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", roadPackBean);
boolean flg = baseRDao.isExitByHql(roadPackBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
@ -97,19 +82,6 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService<MesEquipm
.setErrorDetail("点检项代码【%s】已经存在请检查数据", item.getSpotCheckItemCode())
.build();
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.ID, packBean);
MesEquipmentSpotCheck equipmentSpotCheck = equipmentSpotCheckRepository.getByProperty(packBean);
if (null == equipmentSpotCheck) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("点检方案ID【%s】信息不存在请检查数据", item.getPid())
.build();
}
item.setEquipCode(equipmentSpotCheck.getEquipCode());
}
@Override
public void validateImport(List<MesEquipmentSpotCheckDetail> beanList) {
@ -119,7 +91,7 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService<MesEquipm
ValidatorBean.checkNotNull(item.getSpotCheckItemCode(), "点检项代码不能为空");
DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.PID, roadPackBean);
DdlPreparedPack.getNumEqualPack(item.getPid(), "pid", roadPackBean);
DdlPreparedPack.getStringEqualPack(item.getSpotCheckItemCode(), "spotCheckItemCode", roadPackBean);
boolean flg = baseRDao.isExitByHql(roadPackBean);
if (flg) {
@ -129,19 +101,6 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService<MesEquipm
.setErrorDetail("点检项代码【%s】已经存在请检查数据", item.getSpotCheckItemCode())
.build();
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.ID, packBean);
MesEquipmentSpotCheck equipmentSpotCheck = equipmentSpotCheckRepository.getByProperty(packBean);
if (null == equipmentSpotCheck) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("点检方案ID【%s】信息不存在请检查数据", item.getPid())
.build();
}
item.setEquipCode(equipmentSpotCheck.getEquipCode());
}
}
@Override
@ -166,33 +125,19 @@ public class MesEquipmentSpotCheckDetailService extends BaseMesService<MesEquipm
.build();
}
item.setPid(itemFlg.getId());
item.setEquipCode(itemFlg.getEquipCode());
}else {
ValidatorBean.checkNotNull(item.getId(), "点检项目id不能为空");
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getId(), MesExtConstWords.ID, seriesPackBean);
DdlPreparedPack.getNumNOEqualPack(item.getId(), "id", seriesPackBean);
if (!baseRDao.isExitByHql(seriesPackBean)) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】点检项目id不存在请检查数据", item.getId())
.setErrorDetail("【%s】点检项目id不存在请检查数据", item.getPid())
.build();
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.ID, packBean);
MesEquipmentSpotCheck equipmentSpotCheck = equipmentSpotCheckRepository.getByProperty(packBean);
if (null == equipmentSpotCheck) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("点检方案ID【%s】信息不存在请检查数据", item.getPid())
.build();
}
item.setEquipCode(equipmentSpotCheck.getEquipCode());
}
//实际值地址id
if (!Objects.isNull(variableMap) && !StringUtil.isEmpty(item.getRealValueAddress()) && variableMap.containsKey(item.getRealValueAddress())) {

@ -5,18 +5,13 @@ import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
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.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheck;
import cn.estsh.i3plus.pojo.mes.bean.MesEquipmentSpotCheckPart;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentSpotCheckRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -30,85 +25,37 @@ public class MesEquipmentSpotCheckPartService extends BaseMesService<MesEquipmen
@Autowired
private MesEquipmentSpotCheckRepository equipmentSpotCheckRepository;
@Autowired
private MesPartRepository mesPartRepository;
@Override
protected void setPackQueryBean(MesEquipmentSpotCheckPart bean, DdlPackBean packBean) {
DdlPreparedPack.getNumEqualPack(bean.getPid(), MesExtConstWords.PID, packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), MesExtConstWords.PART_NO, packBean);
DdlPreparedPack.getStringLikerPack(bean.getEquipCode(), MesExtConstWords.EQUIP_CODE, packBean);
}
@Override
protected void onInsertBean(MesEquipmentSpotCheckPart item) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.ID, packBean);
MesEquipmentSpotCheck equipmentSpotCheck = equipmentSpotCheckRepository.getByProperty(packBean);
if (null == equipmentSpotCheck) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("点检方案ID【%s】信息不存在请检查数据", item.getPid())
.build();
}
item.setEquipCode(equipmentSpotCheck.getEquipCode());
}
@Override
protected void onUpdateBean(MesEquipmentSpotCheckPart item) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.ID, packBean);
MesEquipmentSpotCheck equipmentSpotCheck = equipmentSpotCheckRepository.getByProperty(packBean);
if (null == equipmentSpotCheck) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("点检方案ID【%s】信息不存在请检查数据", item.getPid())
.build();
}
item.setEquipCode(equipmentSpotCheck.getEquipCode());
DdlPreparedPack.getNumEqualPack(bean.getPid(), "pid", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
}
@Override
public void validateImport(List<MesEquipmentSpotCheckPart> beanList) {
String organizeCode = AuthUtil.getOrganizeCode();
for (MesEquipmentSpotCheckPart item : beanList) {
// 数据校验
if (StringUtil.isEmpty(item.getPid())) {
ValidatorBean.checkNotNull(item.getSpotCheckCode(), "点检项目代码不能为空");
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getSpotCheckCode(), "spotCheckCode", seriesPackBean);
MesEquipmentSpotCheck itemFlg = equipmentSpotCheckRepository.getByProperty(seriesPackBean);
if (StringUtil.isEmpty(itemFlg)) {
MesException.throwMesBusiException("点检项目代码【%s】不存在请检查数据", item.getSpotCheckCode());
}
item.setPid(itemFlg.getId());
item.setEquipCode(itemFlg.getEquipCode());
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(item.getPartNo(), MesExtConstWords.PART_NO, partPackBean);
MesPart mesPart = mesPartRepository.getByProperty(partPackBean);
if (mesPart == null) {
MesException.throwMesBusiException("零件号【%s】不存在", item.getPartNo());
}
item.setPartName(mesPart.getPartName());
} else {
ValidatorBean.checkNotNull(item.getPid(), "点检项目id不能为空");
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.ID, packBean);
MesEquipmentSpotCheck equipmentSpotCheck = equipmentSpotCheckRepository.getByProperty(packBean);
if (null == equipmentSpotCheck) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("点检方案ID【%s】信息不存在请检查数据", item.getPid())
.build();
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), "id", seriesPackBean);
if (!equipmentSpotCheckRepository.isExitByHql(seriesPackBean)) {
MesException.throwMesBusiException("点检项目id【%s】不存在请检查数据", item.getPid());
}
item.setEquipCode(equipmentSpotCheck.getEquipCode());
}
item.setId(null);
item.setSystemSyncStatus(CommonEnumUtil.FALSE);
@ -132,22 +79,15 @@ public class MesEquipmentSpotCheckPartService extends BaseMesService<MesEquipmen
MesException.throwMesBusiException("点检项目代码【%s】不存在请检查数据", item.getSpotCheckCode());
}
item.setPid(itemFlg.getId());
item.setEquipCode(itemFlg.getEquipCode());
} else {
ValidatorBean.checkNotNull(item.getPid(), "点检项目id不能为空");
DdlPackBean packBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), MesExtConstWords.ID, packBean);
MesEquipmentSpotCheck equipmentSpotCheck = equipmentSpotCheckRepository.getByProperty(packBean);
if (null == equipmentSpotCheck) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("点检方案ID【%s】信息不存在请检查数据", item.getPid())
.build();
}
item.setEquipCode(equipmentSpotCheck.getEquipCode());
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(item.getPid(), "id", seriesPackBean);
if (!equipmentSpotCheckRepository.isExitByHql(seriesPackBean)) {
MesException.throwMesBusiException("点检项目id【%s】不存在请检查数据", item.getPid());
}
}
}
return beanList;

@ -2,22 +2,13 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPackingDefineDetailsService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
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.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingDefineDetails;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Description :
* @Reference :
@ -29,9 +20,6 @@ import java.util.List;
@Slf4j
public class MesPackingDefineDetailsServiceImpl extends BaseMesService<MesPackingDefineDetails> implements IMesPackingDefineDetailsService {
@Autowired
private MesPartRepository mesPartRepository;
@Override
protected void setPackQueryBean(MesPackingDefineDetails bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getPackCode(), "packCode", packBean);
@ -71,35 +59,4 @@ public class MesPackingDefineDetailsServiceImpl extends BaseMesService<MesPackin
MesException.throwMesBusiException("箱类别代号【%s】物料号【%s】已经存在请检查数据", item.getPackCode(),item.getPartNo());
}
}
@Override
public List<MesPackingDefineDetails> validateReturnImport(List<MesPackingDefineDetails> beanList) {
for (MesPackingDefineDetails item : beanList) {
String organizeCode = AuthUtil.getOrganizeCode();
// 数据校验
ValidatorBean.checkNotNull(item.getPackCode(), "箱类别代号不能为空");
ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
DdlPackBean partQueryPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringLikerPack(item.getPartNo(), "partNo", partQueryPackBean);
MesPart mesPart = mesPartRepository.getByProperty(partQueryPackBean);
if (mesPart == null) {
MesException.throwMesBusiException("物料号【%s】不存在请检查数据",item.getPartNo());
}
item.setPartName(mesPart.getPartName());
DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPackCode(), "packCode", roadPackBean);
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", roadPackBean);
boolean flg = baseRDao.isExitByHql(roadPackBean);
if (flg) {
MesException.throwMesBusiException("箱类别代号【%s】物料号【%s】已经存在请检查数据", item.getPackCode(),item.getPartNo());
}
}
return beanList;
}
}

@ -1,22 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPackingRuleDetailService;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingRuleDetail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MesPackingRuleDetailService extends BaseMesService<MesPackingRuleDetail> implements IMesPackingRuleDetailService {
@Override
protected void setPackQueryBean(MesPackingRuleDetail bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getPackageCode(), MesExtConstWords.PACKAGE_CODE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), MesExtConstWords.PART_NO, packBean);
DdlPreparedPack.getStringEqualPack(bean.getPartType(), MesExtConstWords.PART_TYPE, packBean);
}
}

@ -1,26 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPackingRuleService;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPackingRule;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Service
@Slf4j
public class MesPackingRuleService extends BaseMesService<MesPackingRule> implements IMesPackingRuleService {
@Override
protected void setPackQueryBean(MesPackingRule bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getPackageCode(), MesExtConstWords.PACKAGE_CODE, packBean);
DdlPreparedPack.getNumEqualPack(bean.getDefaultFlag(), MesExtConstWords.DEFAULT_FLAG, packBean);
DdlPreparedPack.getNumEqualPack(bean.getGenerateType(), MesExtConstWords.GENERATE_TYPE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getPackCode(), MesExtConstWords.PACK_CODE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getPackageBarcodeRule(), MesExtConstWords.PACKAGE_BARCODE_RULE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getPackageTemplate(), MesExtConstWords.PACKAGE_TEMPLATE, packBean);
DdlPreparedPack.getStringLikerPack(bean.getPrinter(), MesExtConstWords.PRINTER, packBean);
}
}

@ -5,16 +5,10 @@ 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.MesDefectType;
import cn.estsh.i3plus.pojo.mes.bean.MesPartType;
import cn.estsh.i3plus.pojo.mes.bean.MesPartTypeDefect;
import cn.estsh.i3plus.pojo.mes.repository.MesDefectTypeRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartTypeRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@ -23,11 +17,6 @@ import java.util.List;
@Slf4j
public class MesPartTypeDefectService extends BaseMesService<MesPartTypeDefect> implements IBaseMesService<MesPartTypeDefect> {
@Autowired
private MesPartTypeRepository partTypeRepository;
@Autowired
private MesDefectTypeRepository defectTypeRepository;
@Override
protected void setPackQueryBean(MesPartTypeDefect bean, DdlPackBean packBean) {
@ -98,52 +87,4 @@ public class MesPartTypeDefectService extends BaseMesService<MesPartTypeDefect>
}
}
}
@Override
public List<MesPartTypeDefect> validateReturnImport(List<MesPartTypeDefect> beanList) {
for (MesPartTypeDefect item : beanList) {
// 数据校验
ValidatorBean.checkNotNull(item.getDefectTypeCode(), "缺陷类型不能为空");
ValidatorBean.checkNotNull(item.getPartTypeCode(), "零件类型不能为空");
DdlPackBean roadPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getDefectTypeCode(), "defectTypeCode", roadPackBean);
DdlPreparedPack.getStringEqualPack(item.getPartTypeCode(), "partTypeCode", roadPackBean);
boolean flg = baseRDao.isExitByHql(roadPackBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("缺陷类型【%s】零件类型【%s】已经存在请检查数据", item.getDefectTypeCode(), item.getPartTypeCode())
.build();
}
DdlPackBean partTypePackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartTypeCode(), "partTypeCode", partTypePackBean);
MesPartType partType = partTypeRepository.getByProperty(partTypePackBean);
if (partType == null) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("零件类型【%s】不存在请检查数据", item.getPartTypeCode())
.build();
}
item.setPartTypeName(partType.getPartTypeName());
DdlPackBean defectTypePackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getDefectTypeCode(), "defectTypeCode", defectTypePackBean);
MesDefectType defectType = defectTypeRepository.getByProperty(defectTypePackBean);
if (defectType == null) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("缺陷类型【%s】不存在请检查数据", item.getDefectTypeCode())
.build();
}
item.setDefectTypeName(defectType.getDefectTypeName());
}
return beanList;
}
}

@ -4,20 +4,18 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.api.base.IMesProdCraftRouteService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.util.MesConstWords;
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.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.i3plus.pojo.mes.bean.MesCraftRoute;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
import cn.estsh.i3plus.pojo.mes.bean.MesProdCraftRoute;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import cn.estsh.i3plus.pojo.mes.repository.MesProdRouteCfgRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -26,7 +24,6 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
@ -45,8 +42,6 @@ public class MesProdCraftRouteServiceImpl extends BaseMesService<MesProdCraftRou
@Autowired
private MesWorkCenterRepository mesWorkCenterRDao;
@Autowired
private MesPartRepository mesPartRepository;
@Autowired
private IMesPartService mesPartService;
@Autowired
private MesProdRouteCfgRepository mesProdRouteCfgRepository;
@ -66,39 +61,7 @@ public class MesProdCraftRouteServiceImpl extends BaseMesService<MesProdCraftRou
// 数据校验
checkData(item);
}
@Override
public List<MesProdCraftRoute> validateReturnImport(List<MesProdCraftRoute> beanList) {
if (CollectionUtils.isEmpty(beanList)) return beanList;
String organizeCode = AuthUtil.getOrganizeCode();
String userName = AuthUtil.getSessionUser().getUserName();
for (MesProdCraftRoute item : beanList) {
ValidatorBean.checkNotNull(item.getCraftRouteCode(), "工艺路线代码不能为空");
ValidatorBean.checkNotNull(item.getCraftRouteName(), "工艺路线名称不能为空");
ValidatorBean.checkNotNull(item.getCraftRouteType(), "工艺路线类型不能为空");
DdlPackBean centePackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(),"workCenterCode", centePackBean);
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(centePackBean);
if (mesWorkCenter == null) {
MesException.throwMesBusiException("产线代码【%s】不存在", item.getWorkCenterCode());
}
item.setAreaCode(mesWorkCenter.getAreaCode());
if (!StringUtils.isEmpty(item.getPartNo())) {
DdlPackBean partPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(item.getPartNo(),"partNo", partPackBean);
MesPart mesPart = mesPartRepository.getByProperty(partPackBean);
if (mesPart == null) {
MesException.throwMesBusiException("零件号【%s】不存在", item.getPartNo());
}
item.setPartName(mesPart.getPartName());
}
item.setOrganizeCode(organizeCode);
ConvertBean.serviceModelInitialize(item, userName);
}
return beanList;
}
@Override
protected void onUpdateBean(MesProdCraftRoute item) {

@ -1,6 +1,5 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesEquitmentService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartSapService;
import cn.estsh.i3plus.ext.mes.api.base.IMesProdRuleNosortCfgService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesProdRuleNosortCfgDao;
@ -9,7 +8,6 @@ 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.MesEquipment;
import cn.estsh.i3plus.pojo.mes.bean.MesPartSap;
import cn.estsh.i3plus.pojo.mes.bean.MesProdRuleNosortCfg;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
@ -21,8 +19,6 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@Slf4j
@ -34,31 +30,14 @@ public class MesProdRuleNosortCfgService extends BaseMesService<MesProdRuleNosor
@Autowired
private IMesPartSapService partSapService;
@Autowired
private IMesEquitmentService equitmentService;
@Override
protected void setPackQueryBean(MesProdRuleNosortCfg bean, DdlPackBean packBean) {
DdlPreparedPack.getStringLikerPack(bean.getInPartNo(), "inPartNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getInPartNoRule(), "inPartNoRule", packBean);
DdlPreparedPack.getStringLikerPack(bean.getOutPartNo(), "outPartNo", packBean);
DdlPreparedPack.getStringEqualPack(bean.getEquipmentCode(), "equipmentCode", packBean);
}
@Override
protected void setBeanModel(List<MesProdRuleNosortCfg> prodRuleNosortCfgList) {
if (CollectionUtils.isEmpty(prodRuleNosortCfgList)) return;
List<MesEquipment> equipmentList = equitmentService.findAll(DdlPackBean.getDdlPackBean(prodRuleNosortCfgList.get(0).getOrganizeCode()));
Map<String, List<MesEquipment>> equipmentCodeMap = CollectionUtils.isEmpty(equipmentList) ? null :
equipmentList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getEquipmentCode()))).collect(Collectors.groupingBy(MesEquipment::getEquipmentCode));
if (CollectionUtils.isEmpty(equipmentCodeMap)) return;
prodRuleNosortCfgList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getEquipmentCode()))).forEach(o -> {
if (equipmentCodeMap.containsKey(o.getEquipmentCode())) o.setEquipmentName(equipmentCodeMap.get(o.getEquipmentCode()).get(0).getEquipmentName());
});
}
@Override
public MesProdRuleNosortCfg insert(MesProdRuleNosortCfg bean) {
//插入前构造并校验数据
onInsertBean(bean);
@ -68,9 +47,17 @@ public class MesProdRuleNosortCfgService extends BaseMesService<MesProdRuleNosor
}
protected void onInsertBean(MesProdRuleNosortCfg item) {
// 数据校验
//ValidatorBean.checkNotNull(item.getInPartNo(), "进件零件号不能为空");
ValidatorBean.checkNotNull(item.getOutPartNo(), "产成零件号不能为空");
ValidatorBean.checkNotNull(item.getEquipmentCode(), "设备不能为空");
ValidatorBean.checkNotNull(item.getOutPartNo(), "设备不能为空");
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
if (StringUtils.isEmpty(item.getInPartNo())) {
DdlPreparedPack.getStringEqualPack(item.getInPartNo(), "inPartNo", seriesPackBean);
}
DdlPreparedPack.getStringEqualPack(item.getOutPartNo(), "outPartNo", seriesPackBean);
DdlPreparedPack.getStringEqualPack(item.getEquipmentCode(), "equipmentCode", seriesPackBean);
if (!StringUtils.isEmpty(item.getInPartNo())) {
MesPartSap inPart = partSapService.getMesPartSapByPartNo(item.getInPartNo(), item.getOrganizeCode());
if (inPart == null) {
@ -91,19 +78,57 @@ public class MesProdRuleNosortCfgService extends BaseMesService<MesProdRuleNosor
.build();
}
}
boolean flg = baseRDao.isExitByHql(seriesPackBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("该非排序加工规则已存在,请检查数据")
.build();
}
}
protected void onUpdateBean(MesProdRuleNosortCfg item) { onInsertBean(item); }
protected void onUpdateBean(MesProdRuleNosortCfg item) {
ValidatorBean.checkNotNull(item.getOutPartNo(), "产成零件号不能为空");
ValidatorBean.checkNotNull(item.getOutPartNo(), "设备不能为空");
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
if (StringUtils.isEmpty(item.getInPartNo())) {
DdlPreparedPack.getStringEqualPack(item.getInPartNo(), "inPartNo", seriesPackBean);
}
DdlPreparedPack.getStringEqualPack(item.getOutPartNo(), "outPartNo", seriesPackBean);
DdlPreparedPack.getStringEqualPack(item.getEquipmentCode(), "equipmentCode", seriesPackBean);
if (!StringUtils.isEmpty(item.getInPartNo())) {
MesPartSap inPart = partSapService.getMesPartSapByPartNo(item.getInPartNo(), item.getOrganizeCode());
if (inPart == null) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("进料零件号不存在,请检查数据")
.build();
}
}
if (!StringUtils.isEmpty(item.getOutPartNo())) {
MesPartSap outPart = partSapService.getMesPartSapByPartNo(item.getOutPartNo(), item.getOrganizeCode());
if (outPart == null) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("产成零件号不存在,请检查数据")
.build();
}
}
}
@Override
public MesProdRuleNosortCfg findMesProdRuleNosortCfgByWorkCenterCode(String workCenterCode, String partNo, String organizeCode) {
List<MesProdRuleNosortCfg> prodRuleNosortCfgList = mesProdRuleNosortCfgDao.findMesProdRuleNosortCfgByWorkCenterCode(workCenterCode, partNo, organizeCode);
if(CollectionUtils.isEmpty(prodRuleNosortCfgList)){
MesException.throwMesBusiException("产线【%s】产出零件【%s】对应的非排序产品加工规则配置不存在",workCenterCode,partNo);
MesException.throwMesBusiException("产线【%s】产出零件【%s】对应的非排序工艺路线信息不存在",workCenterCode,partNo);
}
return prodRuleNosortCfgList.iterator().next();
}
@Override
public void validateImport(List<MesProdRuleNosortCfg> beanList) {
@ -111,6 +136,23 @@ public class MesProdRuleNosortCfgService extends BaseMesService<MesProdRuleNosor
// 数据校验
ValidatorBean.checkNotNull(item.getOutPartNo(), "产成零件号不能为空");
ValidatorBean.checkNotNull(item.getEquipmentCode(), "设备不能为空");
DdlPackBean seriesPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
if (StringUtils.isEmpty(item.getInPartNo())) {
DdlPreparedPack.getStringEqualPack(item.getInPartNo(), "inPartNo", seriesPackBean);
}
DdlPreparedPack.getStringEqualPack(item.getOutPartNo(), "outPartNo", seriesPackBean);
DdlPreparedPack.getStringEqualPack(item.getEquipmentCode(), "equipmentCode", seriesPackBean);
boolean flg = baseRDao.isExitByHql(seriesPackBean);
if (flg) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("该非排序加工规则已存在,请检查数据")
.build();
}
}
}
}

@ -64,7 +64,7 @@ public class MesQmsScrapService extends BaseMesService<MesQmsScrap> implements I
mesQmsScrap.setAsnNo("");
mesQmsScrap.setSource("MES");
double sum = mesPartInspections.stream().mapToDouble(MesPartInspection::getRejectQty).sum();
mesQmsScrap.setRejectQty(sum);
mesQmsScrap.setRejectQty((int) sum);
mesQmsScrap.setPartNo(keyPartNo);
mesQmsScrap.setPartName(next.getPartName());
String defectTypeName = mesPartInspectionDetails.stream().map(MesPartInspectionDetail::getDefectTypeName).collect(Collectors.joining(";"));

@ -2,7 +2,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesQmsSuspiciousService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.MathOperation;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.base.util.StringUtil;
@ -154,28 +153,28 @@ public class MesQmsSuspiciousService extends BaseMesService<MesQmsSuspicious> im
//检验数量是全部数量汇总
double sumQty = mesPartInspections.stream().mapToDouble(MesPartInspection::getQty).sum();
mesQmsSuspicious.setInspectionQty(sumQty);
mesQmsSuspicious.setInspectionQty((int) sumQty);
//一次合格数 nc_status=10 inspection_status=10
double qualifiedQty = mesPartInspections.stream().filter(m -> m.getNcStatus() == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.CREATE.getValue()
&& m.getInspectionStatus() == MesExtEnumUtil.PART_INSPECTION_STATUS.QUALIFIED.getValue()).mapToDouble(MesPartInspection::getQty).sum();
mesQmsSuspicious.setQualifiedQty(qualifiedQty);
mesQmsSuspicious.setQualifiedQty((int) qualifiedQty);
//不合格数 nc_status=10 inspection_status=20
double unqualifiedQty = mesPartInspections.stream().filter(m -> m.getNcStatus() == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.CREATE.getValue()
&& m.getInspectionStatus() == MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue()).mapToDouble(MesPartInspection::getQty).sum();
mesQmsSuspicious.setUnqualifiedQty(unqualifiedQty);
mesQmsSuspicious.setUnqualifiedQty((int) unqualifiedQty);
//误判数量 nc_status=30 inspection_status=20
double misjudgmentQty = mesPartInspections.stream().filter(m -> m.getNcStatus() == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.RELEASE.getValue()).mapToDouble(MesPartInspection::getQty).sum();
mesQmsSuspicious.setMisjudgmentQty(misjudgmentQty);
mesQmsSuspicious.setMisjudgmentQty((int) misjudgmentQty);
//一次报废数 nc_status=40 inspection_status=20
double scrappedQty = mesPartInspections.stream().filter(m -> m.getNcStatus() == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.SCRAP.getValue() && m.getInspectionStatus() == MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue()).mapToDouble(MesPartInspection::getQty).sum();
mesQmsSuspicious.setScrappedQty(scrappedQty);
mesQmsSuspicious.setScrappedQty((int) scrappedQty);
//返工合格数 nc_status=50 返工单 status=20
Double reworkQualified = new Double(0);
Integer reworkQualified = 0;
//返工pending创建返工单未处理
Double reworkPending = new Double(0);
Integer reworkPending = 0;
//返工数
Double reworkQty = new Double(0);
Integer reworkQty = 0;
List<MesPartInspectionDetail> mesPartInspectionDetails = new ArrayList<>();
for (MesPartInspection mesPartInspection : mesPartInspections) {
if (!StringUtil.isEmpty(idDetailListMap.get(mesPartInspection.getId()))) {
@ -189,21 +188,21 @@ public class MesQmsSuspiciousService extends BaseMesService<MesQmsSuspicious> im
if (!StringUtil.isEmpty(reworkTask)) {
//返工是否完成
if (reworkTask.getStatus() == MesExtEnumUtil.REWORK_TASK_STATUS.FINISH.getValue()) {
reworkQualified = MathOperation.add(reworkQualified, mesPartInspection.getQty());
reworkQualified += mesPartInspection.getQty();
} else {
reworkPending = MathOperation.add(reworkPending, mesPartInspection.getQty());
reworkPending += mesPartInspection.getQty();
}
} else {
reworkPending = MathOperation.add(reworkPending, mesPartInspection.getQty());
reworkPending += mesPartInspection.getQty();
}
reworkQty = MathOperation.add(reworkQty, mesPartInspection.getQty());
reworkQty += mesPartInspection.getQty();
}
}
mesQmsSuspicious.setReworkQty(reworkQty);
mesQmsSuspicious.setReworkQualified(reworkQualified);
mesQmsSuspicious.setReworkPending(reworkPending);
mesQmsSuspicious.setNcPending(new Double(0));
mesQmsSuspicious.setReworkScrapped(new Double(0));
mesQmsSuspicious.setNcPending(0);
mesQmsSuspicious.setReworkScrapped(0);
mesQmsSuspicious.setPartNo(key);
mesQmsSuspicious.setPartName(next.getPartName());
//缺陷分类缺陷数量JOSN格式:【批次&单件数量汇总时需要根据检验时间段合并】

@ -3,6 +3,7 @@ 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.schedulejob.TestJob;
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;
@ -27,6 +28,8 @@ import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountModel;
import cn.estsh.i3plus.pojo.mes.model.report.MesProductAccountResModel;
import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.DateUtilExt;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
@ -183,9 +186,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Autowired
private EntityManager entityManager;
@Autowired
private MesPartProdGroupRepository mesPartProdGroupRao;
@Override
public MesWorkOrder insert(MesWorkOrder bean) {
// 数据校验
@ -292,23 +292,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
DdlPreparedPack.getInPackList(Arrays.stream(bean.getWorkOrderStatusQuery().split(MesExtConstWords.COMMA)).map(Integer::parseInt).collect(Collectors.toList()), MesExtConstWords.WORK_ORDER_STATUS, packBean);
} else DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), MesExtConstWords.WORK_ORDER_STATUS, packBean);
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderType(), MesExtConstWords.WORK_ORDER_TYPE, packBean);
if (!StringUtils.isEmpty(bean.getCreateDateTimeStart()) || !StringUtils.isEmpty(bean.getCreateDateTimeEnd())) {
DdlPreparedPack.timeBuilder(bean.getCreateDateTimeStart(), bean.getCreateDateTimeEnd(), MesExtConstWords.CREATE_DATE_TIME, packBean, false);
}
if (!StringUtils.isEmpty(bean.getStartTimeStart()) || !StringUtils.isEmpty(bean.getStartTimeEnd())) {
DdlPreparedPack.timeBuilder(bean.getStartTimeStart(), bean.getStartTimeEnd(), MesExtConstWords.PLAN_START_TIME, packBean, false);
}
if (!StringUtils.isEmpty(bean.getEndTimeStart()) || !StringUtils.isEmpty(bean.getEndTimeEnd())) {
DdlPreparedPack.timeBuilder(bean.getEndTimeStart(), bean.getEndTimeEnd(), MesExtConstWords.PLAN_END_TIME, packBean, false);
}
if (!StringUtils.isEmpty(bean.getOnlineTimeStart()) || !StringUtils.isEmpty(bean.getOnlineTimeEnd())) {
DdlPreparedPack.timeBuilder(bean.getOnlineTimeStart(), bean.getOnlineTimeEnd(), MesExtConstWords.ONLINE_TIME, packBean, false);
}
if (!StringUtils.isEmpty(bean.getOfflineTimeStart()) || !StringUtils.isEmpty(bean.getOfflineTimeEnd())) {
DdlPreparedPack.timeBuilder(bean.getOfflineTimeStart(), bean.getOfflineTimeEnd(), MesExtConstWords.OFFLINE_TIME, packBean, false);
}
packBean.setOrderByStr(" order by createDatetime desc, productSeq desc ");
DdlPreparedPack.timeBuilder(bean.getCreateDateTimeStart(), bean.getCreateDateTimeEnd(), MesExtConstWords.CREATE_DATE_TIME, packBean, false);
DdlPreparedPack.timeBuilder(bean.getStartTimeStart(), bean.getStartTimeEnd(), MesExtConstWords.PLAN_START_TIME, packBean, false);
DdlPreparedPack.timeBuilder(bean.getEndTimeStart(), bean.getEndTimeEnd(), MesExtConstWords.PLAN_END_TIME, packBean, false);
packBean.setOrderByStr(" order by workOrderSeq desc, createDatetime desc, productSeq asc, workOrderNo asc ");
}
@Override
@ -519,9 +506,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) {
//获取生产版本
mesProductVersion = getMesProductVersion(item.getOrganizeCode(),item.getPartNo());
if (mesProductVersion != null) {
item.setProductVersion(mesProductVersion.getProductVersion());
}
item.setProductVersion(mesProductVersion.getProductVersion());
}
//是否自动发布
return isAuto(item, mesProductVersion);
@ -550,20 +535,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
}
Integer enableBomVersion = mesPartProdGroup.getEnableBomVersion();
String bomVersion ="";
/**
* 2024-12-20 bomVersion
*/
if (enableBomVersion == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
if(!Objects.isNull(mesProductVersion)){
bomVersion = mesProductVersion.getAlternativePartList();
}
}
// 打散bom
List<MesWorkOrderPart> workOrderPartList = new ArrayList<>();
if (mesPartProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
workOrderPartList = dismantleBom(findBomList(item.getOrganizeCode(), iMesPartService.getPartByPartNo(item.getPartNo(), item.getOrganizeCode()),bomVersion), item.getQty(), item.getOrganizeCode(), item.getWorkCellCode(), item.getWorkOrderNo());
if (mesPartProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && !Objects.isNull(mesProductVersion)) {
workOrderPartList = dismantleBom(findBomList(item.getOrganizeCode(), iMesPartService.getPartByPartNo(item.getPartNo(), item.getOrganizeCode()),mesProductVersion.getAlternativePartList()), item.getQty(), item.getOrganizeCode(), item.getWorkCellCode(), item.getWorkOrderNo());
}
return workOrderPartList;
}
@ -966,12 +941,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrderDb.getPartNo(), mesWorkOrderDb.getOrganizeCode());
//查询产线信息
MesWorkCenter mesWorkCenter = getMesWorkCenter(mesWorkOrderDb.getOrganizeCode(),mesWorkOrderDb.getWorkCenterCode());
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrderDb.getOrganizeCode(),mesWorkOrderDb.getPartNo(),mesWorkOrderDb.getProductVersion());
//物料+生产版本获取bom信息
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
//报工类型
if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) {
mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrderDb.getReportedQty()));
@ -1017,7 +990,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String nowTime = StringUtil.isEmpty(mesWorkOrder.getDescription())?TimeTool.getNowTime(true):mesWorkOrder.getDescription();
for (MesBom mesBom : mesBoms) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, nowTime,mesBoms.size()));
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, false,nowTime,mesBoms.size()));
}
mesProductOffLineService.insertBatch(mesProductOffLineList);
}
@ -1068,21 +1041,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesWorkOrder.getAdjustQty(), mesWorkOrder.getReportedQty());
}
}
String partProdGroupCode = mesWorkOrder.getPartProdGroupCode();
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(partProdGroupCode,"partProdGroupCode",ddlPackBean);
List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupRao.findByHqlTopWhere(ddlPackBean, 1);
String bomVersion = "";
MesProductVersion mesProductVersion = new MesProductVersion();
if (!mesPartProdGroupList.isEmpty()){
MesPartProdGroup mesPartProdGroup = mesPartProdGroupList.get(0);
if (mesPartProdGroup.getEnableBomVersion() == null || mesPartProdGroup.getEnableBomVersion() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
//获取生产版本
mesProductVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion());
bomVersion = mesProductVersion.getAlternativePartList();
}
}
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion());
//物料+生产版本获取bom信息
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
//生成条码
String sn = getStringList(mesWorkOrderNew.getOrganizeCode(), AuthUtilExt.getUserName());
//保存数据
@ -1093,17 +1055,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
String nowTime = TimeTool.getNowTime(true);
//排序工单
if (MesExtEnumUtil.ORDER_TYPE.SORT.getValue() == mesWorkOrder.getWorkOrderType()) {
//排序线不能做报工调整ESD属性类型
if (MesExtEnumUtil.REPORT_TYPE.WRITE_OFF.getValue() == mesWorkOrderNew.getReportType()) {
MesConfig config = mesConfigService.getCfgValueByCode(mesWorkOrder.getOrganizeCode(), MesExtConstWords.NOT_ALLOW_WRITE_OFF);
if (!Objects.isNull(config) && config.getCfgValue().contains(mesPart.getEsd())) {
MesException.throwMesBusiException("物料特殊移库类型为【%s】,不允许冲销", mesPart.getEsd());
}
}
//查询工单零件表
List<MesWorkOrderPart> partList = mesWorkOrderPartService.findMesWorkOrderPart(mesWorkOrder.getWorkOrderNo(), mesWorkOrder.getOrganizeCode());
if(CollectionUtils.isEmpty(partList)){
MesException.throwMesBusiException("工单【%s】工单零件表信息不存在不允许冲销", mesWorkOrder.getWorkOrderNo());
//报工类型
if (MesExtEnumUtil.REPORT_TYPE.WRITE_OFF.getValue() == mesWorkOrder.getReportType()) {
MesException.throwMesBusiException("工单【%s】为排序工单不允许冲销", mesWorkOrder.getWorkOrderNo());
}
//排序加工规则
MesProdRuleSortCfg mesProdRuleSortCfg = getMesProdRuleSortCfg(mesWorkOrder);
@ -1115,7 +1069,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
isReport = true;
isMove = true;
} else if (MesExtEnumUtil.MES_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue() == mesProdRuleSortCfg.getReportType()) {
customerSupplyMoveSort(mesWorkOrderNew, mesProductVersion, partList, sn, mesProductOffLineList, mesMoveList, nowTime);
customerSupplyMove(mesWorkOrderNew, mesProductVersion, mesBoms, sn, mesProductOffLineList, mesMoveList,nowTime,true);
} else {
log.info("工单{}排序加工规则报工类型未维护", mesWorkOrder.getWorkOrderNo());
return;
@ -1126,8 +1080,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode());
//成品汇报
if (isReport) {
for (MesWorkOrderPart orderPart : partList) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, orderPart,false,nowTime,partList.size()));
for (MesBom mesBom : mesBoms) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false,nowTime,mesBoms.size()));
}
}
//成品移库
@ -1138,23 +1092,18 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
}
} else if (MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue() == mesWorkOrder.getWorkOrderType()) {
//物料+生产版本获取bom信息
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, bomVersion);
MesProdRuleNosortCfg mesProdRuleNoSortCfg = mesProdRuleNosortCfgService.findMesProdRuleNosortCfgByWorkCenterCode(mesWorkOrder.getWorkCenterCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode());
if (MesExtEnumUtil.NOSORT_REPORT_TYPE.REPORT.getValue() == mesProdRuleNoSortCfg.getReportType()) {
for (MesBom mesBom : mesBoms) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, nowTime,mesBoms.size()));
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrderNew, mesProductVersion, sn, mesBom, false,nowTime,mesBoms.size()));
}
}else if(MesExtEnumUtil.NOSORT_REPORT_TYPE.CUSTOMER_SUPPLY_MOVE.getValue() == mesProdRuleNoSortCfg.getReportType()) {
customerSupplyMove(mesWorkOrderNew, mesProductVersion, mesBoms, sn, mesProductOffLineList, mesMoveList,nowTime);
customerSupplyMove(mesWorkOrderNew, mesProductVersion, mesBoms, sn, mesProductOffLineList, mesMoveList,nowTime,false);
}
} else {
log.info("工单{}排序规则不属于排序工单和非排序工单", mesWorkOrder.getWorkOrderNo());
return;
}
//原因备注
mesWorkOrder.setRemark(mesWorkOrderNew.getRemark());
mesWorkOrder.setDescription(mesWorkOrderNew.getDescription());
//更新工单
updateMesWorkOrder(mesWorkOrder, (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderNew.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrderNew.getNum());
@ -1221,9 +1170,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (StringUtil.isEmpty(model.getSn())) {
//获取生产版本
MesProductVersion mesProductVersion = getMesProductVersion(model.getOrganizeCode(),model.getPartNo());
if (Objects.isNull(mesProductVersion)) {
MesException.throwMesBusiException("物料【%s】生产版本信息不存在", model.getPartNo());
}
//获取bom
List<MesBom> mesBoms = mesBomService.findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
//生成流水码
@ -1523,56 +1469,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return newMesProductOffLine;
}
private void customerSupplyMoveSort(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, List<MesWorkOrderPart> orderPartList, String sn, List<MesProductOffLine> mesProductOffLineList, List<MesMove> mesMoveList,String nowTime) {
boolean isItemMove;
boolean isItemReport;
MesMoveRule moveRule;
MesPart itemPart;
//查询零件生产组的移库规则
List<MesMoveRule> moveRules = mesMoveRuleService.findMesMoveRuleByPartProdGroupCode(mesWorkOrder.getPartProdGroupCode(), mesWorkOrder.getOrganizeCode(), MesExtEnumUtil.MOVE_RULE_GROUP_TYPE.MOVE_RULE_GROUP_TYPE_20.getValue());
Map<String, List<MesMoveRule>> mesMoveRuleMap = moveRules.stream().filter(t -> Objects.nonNull(t.getSrcType())).collect(Collectors.groupingBy(MesMoveRule::getSrcType));
List<String> itemPartNoList = orderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList());
//子物料SAP下发信息
Map<String, List<MesPartSap>> mesPartSapMap = getPartSapMap(mesWorkOrder, itemPartNoList);
//获取物料信息
Map<String, List<MesPart>> itemPartMap = getItemPartMap(mesWorkOrder, itemPartNoList);
for (MesWorkOrderPart orderPart : orderPartList) {
isItemReport = false;
isItemMove = false;
moveRule = null;
itemPart = null;
if (itemPartMap.containsKey(orderPart.getPartNo())) {
itemPart = itemPartMap.get(orderPart.getPartNo()).iterator().next();
if (!StringUtil.isEmpty(itemPart.getEsd()) && mesMoveRuleMap.containsKey(itemPart.getEsd())) {
moveRule = mesMoveRuleMap.get(itemPart.getEsd()).iterator().next();
if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT_MOVE.getValue() == moveRule.getReportType()) {
isItemMove = true;
isItemReport = true;
} else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.REPORT.getValue() == moveRule.getReportType()) {
isItemReport = true;
} else if (MesExtEnumUtil.MOVE_TYPE_REPORT_TYPE.MOVE.getValue() == moveRule.getReportType()) {
isItemMove = true;
}
}
}
//汇报
if (isItemReport) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, orderPart, true, nowTime, null));
}
//移库
if (isItemMove) {
MesPartSap mesPartSap = null;
if (mesPartSapMap.containsKey(orderPart.getPartNo())) {
mesPartSap = mesPartSapMap.get(orderPart.getPartNo()).iterator().next();
}
MesMove move = createMove(mesPartSap, moveRule.getErpSrcLocateNo(), moveRule.getErpDestLocateNo(), orderPart.getOrganizeCode(), mesWorkOrder.getWorkCenterCode(), orderPart.getItemQty(), MesExtConstWords.EMPTY, MesExtEnumUtil.MOVE_TYPE.RAW_MATERIAL_MOVE.getValue());
move.setMatnr(orderPart.getPartNo());
mesMoveList.add(move);
}
}
}
private void customerSupplyMove(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, List<MesBom> mesBoms, String sn, List<MesProductOffLine> mesProductOffLineList, List<MesMove> mesMoveList,String nowTime) {
private void customerSupplyMove(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion, List<MesBom> mesBoms, String sn, List<MesProductOffLine> mesProductOffLineList, List<MesMove> mesMoveList,String nowTime,boolean isSort) {
boolean isItemMove;
boolean isItemReport;
MesMoveRule moveRule;
@ -1605,7 +1502,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
}
//汇报
if (isItemReport) {
if (isItemReport && isSort) {
mesProductOffLineList.add(creatMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, true, nowTime, null));
} else if (isItemReport) {
String reportSn = String.valueOf(snowflakeIdMaker.nextId());
MesProductVersion itemVersion = getMesProductVersion(mesWorkOrder.getOrganizeCode(), mesBom.getItemPartNo(), mesProductVersion.getProductVersion());
List<MesBom> bomList = null;
@ -1616,10 +1515,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//bom下的子节汇报
if (!CollectionUtils.isEmpty(bomList)) {
for (MesBom bom : bomList) {
mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, itemVersion, reportSn, bom, mesBom.getItemQty(), true, bomList.size(), nowTime, MesExtConstWords.SAVE_PRODUCT_VERSION_FLAG.equals(itemPart.getEsd())));
mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, itemVersion, reportSn, bom, mesBom.getItemQty(), true,bomList.size(), nowTime));
}
} else {
mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, itemVersion, reportSn, mesBom, mesBom.getQty(), true,MesExtConstWords.ONE, nowTime,false));
mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, itemVersion, reportSn, mesBom, mesBom.getQty(), true,MesExtConstWords.ONE, nowTime));
}
}
//移库
@ -1635,9 +1534,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
//bom下的子节汇报总成也需要汇报
if (!CollectionUtils.isEmpty(mesProductOffLineList)) {
if (!isSort && !CollectionUtils.isEmpty(mesProductOffLineList)) {
for (MesBom mesBom : mesBoms) {
mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, mesBom.getQty(), false,mesBoms.size(), nowTime,false));
mesProductOffLineList.add(getMesProductOffLine(mesWorkOrder, mesProductVersion, sn, mesBom, mesBom.getQty(), false,mesBoms.size(), nowTime));
}
}
}
@ -1669,8 +1568,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
private MesProductOffLine getMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion,
String sn, MesBom mesBom,Double itemQty, boolean isItemReport,
Integer bomSize,String nowTime,boolean saveProductVersionFlag) {
String sn, MesBom mesBom,Double itemQty, boolean isItemReport,Integer bomSize,String nowTime) {
MesProductOffLine newMesProductOffLine = new MesProductOffLine();
BeanUtils.copyProperties(mesBom, newMesProductOffLine,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
newMesProductOffLine.setReportPartNo(mesBom.getPartNo());
@ -1679,7 +1577,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint());
newMesProductOffLine.setQty(MathOperation.mul(mesWorkOrder.getNum(),itemQty));
newMesProductOffLine.setItemQty(MathOperation.mul(newMesProductOffLine.getQty(), mesBom.getItemQty()));
//装配费没有bom情况
if (isItemReport && mesBom.getPartNo().equals(mesWorkOrder.getPartNo())) {
newMesProductOffLine.setReportPartNo(mesBom.getItemPartNo());
newMesProductOffLine.setReportPartNameRdd(mesBom.getItemPartName());
@ -1698,10 +1595,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
if (Objects.equals(MesExtEnumUtil.ORDER_TYPE.BTO.getValue(), mesWorkOrder.getWorkOrderType())){
newMesProductOffLine.setWorkCenterCode(mesProductVersion.getWorkCenterCode());
}
newMesProductOffLine.setSapWorkCenter(saveProductVersionFlag ? mesProductVersion.getProductVersion() : mesProductVersion.getWorkCenterCode());
newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime);
newMesProductOffLine.setBomTotalSize(bomSize);
@ -1710,45 +1604,14 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return newMesProductOffLine;
}
private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion,
String sn, MesWorkOrderPart workOrderPart, boolean isItemReport,String nowTime,Integer bomTotalSize) {
String sn, MesBom mesBom, boolean isItemReport,String nowTime,Integer bomTotalSize) {
MesProductOffLine newMesProductOffLine = new MesProductOffLine();
if(!isItemReport){
if (!isItemReport) {
newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo());
newMesProductOffLine.setReportPartNameRdd(mesWorkOrder.getPartName());
}
newMesProductOffLine.setReportSn(sn);
newMesProductOffLine.setItemPartNo(workOrderPart.getPartNo());
newMesProductOffLine.setItemPartName(workOrderPart.getPartName());
newMesProductOffLine.setItemQty(MathOperation.mul(mesWorkOrder.getNum(), workOrderPart.getItemQty()));
if (mesProductVersion != null){
newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint());
newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint());
newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode());
}
newMesProductOffLine.setQty(Double.valueOf(mesWorkOrder.getNum()));
newMesProductOffLine.setBomVersion(mesWorkOrder.getProductVersion());
newMesProductOffLine.setSerialNumber(sn);
newMesProductOffLine.setItemUnit(workOrderPart.getItemUnit());
newMesProductOffLine.setWorkOrderNo(mesWorkOrder.getWorkOrderNo());
newMesProductOffLine.setWorkOrderType(mesWorkOrder.getWorkOrderType());
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime);
newMesProductOffLine.setBomTotalSize(bomTotalSize);
ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser());
return newMesProductOffLine;
}
private MesProductOffLine creatMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion,
String sn, MesBom mesBom, String nowTime, Integer bomTotalSize) {
MesProductOffLine newMesProductOffLine = new MesProductOffLine();
newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo());
newMesProductOffLine.setReportPartNameRdd(mesWorkOrder.getPartName());
newMesProductOffLine.setReportSn(sn);
newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo());
@ -1765,8 +1628,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setWorkOrderType(mesWorkOrder.getWorkOrderType());
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getErpWorkCenter());
newMesProductOffLine.setSapWorkCenter(mesWorkOrder.getErpWorkCenter());
newMesProductOffLine.setWorkCenterCode(mesProductVersion.getWorkCenterCode());
newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
newMesProductOffLine.setDescription(nowTime);
@ -2191,7 +2054,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
sqlStr += " and mwo.work_center_code = :workCenterCode ";
}
sqlStr += "order by mwo.create_date_time ";
sqlStr += "order by mwo.create_date_time limit 16";
String dateTime = new SimpleDateFormat("yyyy-MM-dd").format(TimeTool.getDateBefore(new Date(), 30)) + " 00:00:00";
Query query = entityManager.createNativeQuery(sqlStr);
@ -2282,7 +2145,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
}
mesWorkOrderBoardResModels = mesWorkOrderBoardResModels.stream().filter(mesWorkOrderBoardResModel -> mesWorkOrderBoardResModel.getQty() > mesWorkOrderBoardResModel.getCompleteQty()).collect(Collectors.toList());
mesWorkOrderBoardResModels = mesWorkOrderBoardResModels.subList(0, 16);
return mesWorkOrderBoardResModels;
}
@ -2320,7 +2183,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
// 递归展开 BOM
expendBomChild(organizeCode, mesPart.getPartNo(), bomVersion, bomData);
if (bomData.isEmpty()) {
if (bomData.size() == 0) {
MesException.throwMesBusiException("零件号 %s 没找找到 ERP 同步的原始 BOM 数据,请检查接口是否正常!", mesPart.getPartNo());
}
@ -2379,36 +2242,20 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
}
}
public List<MesBom> findMesBomByPartNoAndBomVersion(String partNo, String organizeCode, String bomVersion) {
//MES汇报查询BOM是否携带结束查询条件
MesConfig config = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_REPORT_FIND_BOM_WITH_EFFENDTIME);
boolean isWithEffEndTime = null != config && !StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr());
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean);
if (!StringUtils.isEmpty(partNo)) {
DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean);
}
DdlPreparedPack.getStringEqualPack(bomVersion, MesExtConstWords.BOM_VERSION, ddlPackBean);
DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_START_TIME, ddlPackBean);
if(isWithEffEndTime)DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, ddlPackBean);
DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime(true), MesExtConstWords.EFF_END_TIME, ddlPackBean);
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), ddlPackBean);
List<MesBom> mesBoms = mesBomRDao.findByHqlTopWhere(ddlPackBean,1);
List<MesBom> mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean);
if (org.springframework.util.CollectionUtils.isEmpty(mesBoms)) {
MesException.throwMesBusiException("物料【%s】对应bom信息不存在", partNo);
MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在", partNo, bomVersion);
}
MesBom mesBom = mesBoms.get(0);
String effStartTime = mesBom.getEffStartTime();
String bomCode = mesBom.getBomCode();
DdlPackBean ddlPackBean1 = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, ddlPackBean1);
DdlPreparedPack.getStringEqualPack(effStartTime, MesExtConstWords.EFF_START_TIME, ddlPackBean1);
DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", ddlPackBean1);
MesBom next = mesBoms.iterator().next();
//如果存在多个bomCode取最新的一个
return mesBomRDao.findByHqlWhere(ddlPackBean1);
return mesBoms.stream().collect(Collectors.groupingBy(t -> t.getBomCode() + t.getEffStartTime())).get(next.getBomCode() + next.getEffStartTime());
}
@ -2814,9 +2661,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(workOrderNo, MesExtConstWords.WORK_ORDER_NO, packBean);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.QUEUE_ORDER_STATUS.CREATE.getValue(), MesExtConstWords.STATUS, packBean);
queueOrderRao.updateByPropertiesNoSync(
new String[]{MesExtConstWords.MODIFY_USER, MesExtConstWords.MODIFY_DATE_TIME, MesExtConstWords.SYSTEM_SYNC_STATUS, MesExtConstWords.STATUS},
new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesExtEnumUtil.QUEUE_ORDER_STATUS.CLOSED.getValue()}, packBean);
queueOrderRao.updateByProperties(
new String[]{MesExtConstWords.MODIFY_USER, MesExtConstWords.MODIFY_DATE_TIME, MesExtConstWords.STATUS},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.QUEUE_ORDER_STATUS.CLOSED.getValue()}, packBean);
}
private void closeMesPullingOrderInfo(String workOrderNo, String organizeCode, String userName) {
@ -2857,18 +2704,18 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
}
private MesProductVersion getMesProductVersion(String organizeCode, String partNo, String productVersion) {
MesProductVersion mesProductVersion = new MesProductVersion();
if (!StringUtils.isEmpty(productVersion)){
mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, productVersion);
if (Objects.isNull(mesProductVersion)) {
MesException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", partNo, productVersion);
}
MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, productVersion);
if (Objects.isNull(mesProductVersion)) {
MesException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", partNo, productVersion);
}
return mesProductVersion;
}
private MesProductVersion getMesProductVersion(String organizeCode, String partNo) {
MesProductVersion mesProductVersion = mesProductVersionService.getMesProductVersionByPartNoAndProductVersion(organizeCode, partNo, null);
if (Objects.isNull(mesProductVersion)) {
MesException.throwMesBusiException("物料【%s】生产版本信息不存在", partNo);
}
return mesProductVersion;
}

@ -1,13 +1,11 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.roundness;
import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService;
import cn.estsh.i3plus.ext.mes.api.base.IMesCustSoftInfoService;
import cn.estsh.i3plus.ext.mes.api.base.strategy.IRoundnessStrategy;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesBomService;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesPartSapService;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesWorkOrderService;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi.MesCreateWorkOrderImpl;
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;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
@ -103,9 +101,6 @@ public class MesPackageRoundnessService implements IRoundnessStrategy {
@Autowired
private MesCreateWorkOrderImpl mesCreateWorkOrder;
@Autowired
private IMesConfigService mesConfigService;
@Override
public void execute(MesPartProdGroup partProdGroup, List<MesCustSortInfo> sortInfoList, List<MesPartProdGroupDetail> details) {
try {
@ -796,18 +791,12 @@ public class MesPackageRoundnessService implements IRoundnessStrategy {
private List<MesBom> getPlatBom(String partNo, String effectiveTime, String bomCode, String organizeCode) {
//MES汇报查询BOM是否携带结束查询条件
MesConfig config = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_REPORT_FIND_BOM_WITH_EFFENDTIME);
Boolean isWithEffEndTime = (null != config && !org.springframework.util.StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())) ? true : false;
if (bomCode == null) {
//首先根据虚结构的零件号查询出最新的一条bom信息作为bomCode
DdlPackBean bomCodePackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomCodePackBean);
DdlPreparedPack.getStringSmallerPack(effectiveTime, MesExtConstWords.EFF_START_TIME, bomCodePackBean);
if (isWithEffEndTime) DdlPreparedPack.getStringBiggerPack(effectiveTime, MesExtConstWords.EFF_END_TIME, bomCodePackBean);
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomCodePackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomCodePackBean);
DdlPreparedPack.getTimeBetweenCol(effectiveTime, "effStartTime", "effEndTime", bomCodePackBean, false);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomCodePackBean);
List<MesBom> bomList = bomRao.findByHqlTopWhere(bomCodePackBean, 1);
if (bomList == null || bomList.isEmpty()) {
return new ArrayList<>();
@ -817,9 +806,9 @@ public class MesPackageRoundnessService implements IRoundnessStrategy {
List<MesBom> bomResultList = new ArrayList<>();
DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", bomPackBean);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomPackBean);
DdlPreparedPack.getStringSmallerPack(effectiveTime, MesExtConstWords.EFF_START_TIME, bomPackBean);
if (isWithEffEndTime) DdlPreparedPack.getStringBiggerPack(effectiveTime, MesExtConstWords.EFF_END_TIME, bomPackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomPackBean);
DdlPreparedPack.getStringSmallerPack(effectiveTime, "effStartTime", bomPackBean);
DdlPreparedPack.getStringBiggerPack(effectiveTime, "effEndTime", bomPackBean);
List<MesBom> bomList = bomRao.findByHqlWhere(bomPackBean);
for (MesBom bom : bomList) {

@ -18,7 +18,6 @@ import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.repository.wh.MesCimGmGepicsRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import com.xxl.job.core.util.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -62,10 +61,6 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
@Autowired
private MesCimGmGepicsRepository mesCimGmGepicsRepository;
@Autowired
private MesDowntimeRecordRepository mesDowntimeRecordRDao;
private static final String START_TIME = "START_TIME";
private static final String END_TIME = "END_TIME";
@ -344,47 +339,9 @@ public class IMesYfBoardServiceImpl implements IMesYfBoardService {
public MesWorkCenterBoardResultModel queryAbnormalDowntime(MesWorkCenterBoardConditionModel conditionModel) {
MesWorkCenterBoardResultModel resultModel = new MesWorkCenterBoardResultModel();
//获取查询时间区间(需求未明确,暂时注释,返回固定值)
Map<String, Map<String, String>> timeZoneMap = getTimeZoneMap(conditionModel.getWorkCenterCodeList(),
conditionModel.getTimeRangeIdentification(), conditionModel.getOrganizeCode());
if(!timeZoneMap.isEmpty()){
Set<String> keySet = timeZoneMap.keySet();
for (String key : keySet) {
Map<String, String> map = timeZoneMap.get(key);
String startTime = map.get("START_TIME");
String endTime = map.get("END_TIME");
//根据产线查询停机记录表汇总
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(conditionModel.getOrganizeCode());
DdlPreparedPack.getStringBiggerPack(startTime,"createDatetime",ddlPackBean);
DdlPreparedPack.getStringSmallerPack(endTime,"createDatetime",ddlPackBean);
DdlPreparedPack.getInPackList(conditionModel.getWorkCenterCodeList(), "workCenterCode", ddlPackBean);
List<MesDowntimeRecord> recordList = mesDowntimeRecordRDao.findByHqlWhere(ddlPackBean);
//遍历recordList汇总停机时间
long total = 0L;
for (MesDowntimeRecord record : recordList) {
// 如果停机结束时间还在,则需要补充动态停机时间,否则需要有停机时间
if (StringUtils.isEmpty(record.getModifyDatetime())) {
Date startTDateTime = DateUtil.parseDateTime(record.getCreateDatetime());
Date currentTime = new Date();
total += (currentTime.getTime() - startTDateTime.getTime())/(1000 * 60);
} else {
Date startTDateTime = DateUtil.parseDateTime(record.getCreateDatetime());
Date endDateTime = DateUtil.parseDateTime(record.getModifyDatetime());
total += (endDateTime.getTime() - startTDateTime.getTime())/(1000 * 60);
}
}
if (total > 0){
//转换成小时分钟
long minutes = total % 60;
long hours = total / 60;
resultModel.setAbnormalDowntime(String.format("%02d",hours)+":"+String.format("%02d",minutes));
}
}
}else {
resultModel.setAbnormalDowntime("00:00");
}
// Map<String, Map<String, String>> timeZoneMap = getTimeZoneMap(conditionModel.getWorkCenterCodeList(),
// conditionModel.getTimeRangeIdentification(), conditionModel.getOrganizeCode());
resultModel.setAbnormalDowntime("00:00");
return resultModel;
}

@ -1,11 +1,9 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService;
import cn.estsh.i3plus.ext.mes.api.busi.IMesCreateWorkOrder;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesBomService;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesPartSapService;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesWorkOrderService;
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;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
@ -19,6 +17,7 @@ import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@ -90,9 +89,6 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
@Autowired
private MesCustomerCarModelRepository mesCustomerCarModelRepository;
@Autowired
private IMesConfigService mesConfigService;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void createWorkOrder(MesPartProdGroup partProdGroup, MesPartProdGroupDetail mesPartProdGroupDetail, MesPartSap partSap, MesCustSortInfo sortInfo,Long productSeq) {
@ -199,41 +195,19 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
/**
* erp
*/
/**
* 2024-12-13 bug 44316 bom by castle
* EDIBOM
*
* -线
* 1使BOM
* 2使BOM
*
*
* 1BOM
* 2BOM
* BOM
*
* BOM;
* limit 1ECN
* ***BOM > BOM <= yyyy-mm-dd hh:MM:ss
*/
MesBom bom;
if (partProdGroup.getEnableBomVersion() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
MesProductVersion prodVersion = getProdVersion(organizeCode, mesPartProdGroupDetail.getProductPartNo());
if (prodVersion == null) {
log.info("请配置工厂:{},partNo:{}的生产版本", mesPartProdGroupDetail.organizeCode, mesPartProdGroupDetail.getProductPartNo());
} else {
String productVersion = prodVersion.getProductVersion();
mesWorkOrder.setProductVersion(productVersion);
}
bom = mesBomService.findBom(organizeCode, prodVersion == null ? null : prodVersion.getAlternativePartList(), mesPartProdGroupDetail.getProductPartNo());
}else {
bom = mesBomService.findBom(organizeCode, mesPartProdGroupDetail.getProductPartNo());
MesProductVersion prodVersion = getProdVersion(organizeCode, mesPartProdGroupDetail.getProductPartNo());
if (prodVersion == null) {
log.info("请配置工厂:{},partNo:{}的生产版本", mesPartProdGroupDetail.organizeCode, mesPartProdGroupDetail.getProductPartNo());
} else {
String productVersion = prodVersion.getProductVersion();
mesWorkOrder.setProductVersion(productVersion);
}
// bom prodVersion.alternativePartList bom版本
/**
* bom
*/
MesBom bom = mesBomService.findBom(organizeCode, prodVersion == null ? null : prodVersion.getAlternativePartList(), mesPartProdGroupDetail.getProductPartNo());
if (bom != null) {
mesWorkOrder.setBomCode(bom.getBomCode());
} else {
@ -334,7 +308,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
List<MesWorkOrderPart> workOrderPartList = new ArrayList<>();
if (partProdGroup.getIsDisassembleBom() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
//打散bom使用生产零件号
workOrderPartList = dismantleBom(bom, mesPartProdGroupDetail.getProductPartNo(), mesWorkOrder.getQty(), sortInfo.getMatchTime(), sortInfo.getOrganizeCode(), mesPartProdGroupDetail.getWorkCellCode(), mesWorkOrder.getWorkOrderNo());
workOrderPartList = dismantleBom(mesPartProdGroupDetail.getProductPartNo(), mesWorkOrder.getQty(), sortInfo.getMatchTime(), bom.getBomCode(), sortInfo.getOrganizeCode(), mesPartProdGroupDetail.getWorkCellCode(), mesWorkOrder.getWorkOrderNo());
}
@ -395,22 +369,8 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
//ptr信息
List<String> partNoList = workOrderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList());
List<MesPartPtr> partPtrList = getPartPtrList(organizeCode, mesWorkOrder.getWorkCenterCode(), partNoList);
/**
* ptr
* 1.ptr - PTR
* 1.1
* 1.2 ptrptr
* 1.3 ptrptrptr
*
* 2.ptr - PTR
* 2.1 bom,
* 2.2 PTR
*
* 3.PTR - F
* 2.1 bom,
* 2.2 ptr F
*/
//遍历workOrderPartList
for (MesWorkOrderPart orderPart : workOrderPartList) {
List<MesPartPtr> ptr = partPtrList.stream().filter(item -> item.getSrcPartNo().equals(orderPart.getPartNo())).collect(Collectors.toList());
if (ptr.isEmpty()) {
@ -419,7 +379,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
//判断是否是客户替换
boolean isCust = false;
for (MesPartPtr mesPartPtr : ptr) {
if (custPtrPartList.contains(mesPartPtr.getSeqInfoPrtPart()) && mesPartPtr.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
if (custPtrPartList.contains(mesPartPtr.getSrcPartNo())) {
isCust = true;
break;
}
@ -430,7 +390,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
if (isCust) {
//查找客户发送的ptr信息
List<MesPartPtr> custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && custPtrPartList.contains(item.getSeqInfoPrtPart())).collect(Collectors.toList());
List<MesPartPtr> custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && custPtrPartList.contains(item.getSrcPartNo())).collect(Collectors.toList());
if (!custPartPtrList.isEmpty()) {
mesPartPtr = custPartPtrList.get(0);
}
@ -438,24 +398,14 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
//获取相同总成的ptrId 在ptr详情中
List<MesPartPtr> custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == null || item.getIsCustomerSendPrtInfo() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).collect(Collectors.toList());
if (!custPartPtrList.isEmpty()) {
/**
* bug 44747 ptr
* PTRPTRPTRPTR;
*/
for (MesPartPtr partPtr : custPartPtrList) {
//查询ptr总成--只有特定总成才会替换
DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(partPtr.getId(), "ptrId", detailPartPtr);
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "totalPartNo", detailPartPtr);
List<MesPartPtrDetail> ptrDetailList = partPtrDetailRao.findByHqlWhere(detailPartPtr);
if (!ptrDetailList.isEmpty()) {
mesPartPtrDetail = ptrDetailList.get(0);
mesPartPtr = partPtr;
break;
}
}
if (mesPartPtr == null){
mesPartPtr = custPartPtrList.get(0);
mesPartPtr = custPartPtrList.get(0);
//查询ptr总成--只有特定总成才会替换
DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(), "ptrId", detailPartPtr);
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "totalPartNo", detailPartPtr);
List<MesPartPtrDetail> ptrDetailList = partPtrDetailRao.findByHqlWhere(detailPartPtr);
if (!ptrDetailList.isEmpty()) {
mesPartPtrDetail = ptrDetailList.get(0);
}
}
}
@ -468,17 +418,12 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
custFlag = true;
}
}
ptrFlag = true;
if (!isCust && mesPartPtr.getIsInterPrt()==CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
if (!fOrderFlag){
fOrderFlag = true;
}
}
if (!isCust && mesPartPtr.getIsInterPrt()!=CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
if (!ptrFlag){
ptrFlag = true;
}
}
//将工单类零件表替换位PTR条件中维护的替换零件
MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesPartPtr.getDestPartNo(), organizeCode);
orderPart.setPartNo(mesPartSap.getPartNo());
@ -517,27 +462,26 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
* pisces
* add by aix 2017.4.11 PTRWORKORDERASSEMBLYpartdesc
*/
if (!Objects.isNull(orderAssemblyList)){
if (orderAssemblyList.getDisplaySeq()!=null && orderAssemblyList.getDisplaySeq()!=0){
orderAssemblyList.setDisplayValue(mesPartPtr.getVisualItem());
}
orderAssemblyList.setAssemblyPartNo(mesPartSap.getPartNo());
orderAssemblyList.setAssemblyPartName(mesPartSap.getPartName());
orderAssemblyList.setMatchRule(mesPartPtr.getReplacePartSnRule());
ptrInfos.append("INFO|").append(mesPartPtr.getId());
if (mesPartPtrDetail != null) {
ptrInfos.append("PART|").append(mesPartPtrDetail.getId());
}
}
if (!Objects.isNull(orderAssemblyList)){
if (orderAssemblyList.getDisplaySeq()!=null && orderAssemblyList.getDisplaySeq()!=0){
orderAssemblyList.setDisplayValue(mesPartPtr.getVisualItem());
}
orderAssemblyList.setAssemblyPartNo(mesPartSap.getPartNo());
orderAssemblyList.setAssemblyPartName(mesPartSap.getPartName());
orderAssemblyList.setMatchRule(mesPartPtr.getReplacePartSnRule());
ptrInfos.append("INFO|").append(mesPartPtr.getId());
if (mesPartPtrDetail != null) {
ptrInfos.append("PART|").append(mesPartPtrDetail.getId());
}
}
}
}
if (custFlag || ptrFlag){
if (ptrFlag && custFlag){
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.PTR.getValue());
}else if (fOrderFlag){
}else if (ptrFlag){
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.F.getValue());
}
else {
}else {
mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue());
}
@ -815,11 +759,11 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
}
return null;
}
private List<MesWorkOrderPart> dismantleBom(MesBom mesBom, String partNo, double qty, String productTime, String organizeCode, String workCellCode, String workOrderNo) {
private List<MesWorkOrderPart> dismantleBom(String partNo, double qty, String productTime, String bomCode, String organizeCode, String workCellCode, String workOrderNo) {
List<MesWorkOrderPart> orderPartList = new ArrayList<>();
//1.根据bomCode,partNo productTime organizeCode 查询bom清单 bomList
List<MesBom> bomList = getPlatBom(mesBom,partNo, productTime, organizeCode);
List<MesBom> bomList = getPlatBom(partNo, productTime, bomCode, organizeCode);
//2.根据bomList中的subPartNo 查询零件清单 partList
List<String> partNoList = bomList.stream().map(MesBom::getItemPartNo).distinct().collect(Collectors.toList());
@ -859,34 +803,30 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder {
return orderPartList;
}
private List<MesBom> getPlatBom(MesBom mesBom,String partNo, String effectiveTime,String organizeCode) {
//MES汇报查询BOM是否携带结束查询条件
MesConfig config = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_REPORT_FIND_BOM_WITH_EFFENDTIME);
Boolean isWithEffEndTime = (null != config && !org.springframework.util.StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())) ? true : false;
if (mesBom == null) {
private List<MesBom> getPlatBom(String partNo, String effectiveTime, String bomCode, String organizeCode) {
if (bomCode == null) {
//首先根据虚结构的零件号查询出最新的一条bom信息作为bomCode
DdlPackBean bomCodePackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomCodePackBean);
DdlPreparedPack.getStringSmallerPack(effectiveTime, MesExtConstWords.EFF_START_TIME, bomCodePackBean);
if (isWithEffEndTime) DdlPreparedPack.getStringBiggerPack(effectiveTime, MesExtConstWords.EFF_END_TIME, bomCodePackBean);
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomCodePackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomCodePackBean);
DdlPreparedPack.getTimeBetweenCol(effectiveTime, "effStartTime", "effEndTime", bomCodePackBean, false);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomCodePackBean);
List<MesBom> bomList = bomRao.findByHqlTopWhere(bomCodePackBean, 1);
if (bomList == null || bomList.isEmpty()) {
return new ArrayList<>();
}
mesBom = bomList.get(0);
bomCode = bomList.get(0).getBomCode();
}
List<MesBom> bomResultList = new ArrayList<>();
DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesBom.getBomCode(), "bomCode", bomPackBean);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomPackBean);
DdlPreparedPack.getStringEqualPack(mesBom.getEffStartTime(), MesExtConstWords.EFF_START_TIME, bomPackBean);
DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", bomPackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomPackBean);
DdlPreparedPack.getStringSmallerPack(effectiveTime, "effStartTime", bomPackBean);
DdlPreparedPack.getStringBiggerPack(effectiveTime, "effEndTime", bomPackBean);
List<MesBom> bomList = bomRao.findByHqlWhere(bomPackBean);
for (MesBom bom : bomList) {
if (bom.getPartType() != null && bom.getPartType().equalsIgnoreCase("X")) {
getPlatBom(null,bom.getItemPartNo(), effectiveTime, organizeCode);
getPlatBom(bom.getItemPartNo(), effectiveTime, null, organizeCode);
} else {
bom.setBomCode(bom.getBomCode().toLowerCase());
bomResultList.add(bom);

@ -4,6 +4,7 @@ import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartSapService;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkCenterService;
import cn.estsh.i3plus.ext.mes.api.busi.IMesInputDefectRecordService;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
@ -19,6 +20,7 @@ import cn.estsh.i3plus.pojo.mes.repository.MesPartInspectionDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartInspectionRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.util.ResultBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@ -100,7 +102,7 @@ public class MesInputDefectRecordServiceImpl implements IMesInputDefectRecordSer
partInspection.setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue());
partInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.CREATE.getValue());
partInspection.setSn(sn);
partInspection.setQty(new Double(1));
partInspection.setQty(MesCommonConstant.TRUE_INTEGER);
partInspection.setSourceType(MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue());
ConvertBean.serviceModelInitialize(partInspection, userName);
return partInspection;

@ -1,10 +1,8 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.api.base.IMesConfigService;
import cn.estsh.i3plus.ext.mes.api.busi.IMesSortRuleCfgOfflineService;
import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.MesBomService;
import cn.estsh.i3plus.ext.mes.apiservice.utils.MesException;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
@ -69,8 +67,8 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
@Autowired
private MesPartSapRepository partSapRao;
@Autowired
private IMesConfigService mesConfigService;
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Override
@ -92,15 +90,9 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
if (count > 0){
return;
}
MesProductVersion mesProductVersion= null;
if (mesPartProdGroup.getEnableBomVersion() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
mesProductVersion = getMesProductVersion(productPartNo, organizeCode);
}
MesProductVersion mesProductVersion = getMesProductVersion(productPartNo, organizeCode);
//4.总成零件号打散bom
String bomVersion = null;
if (mesProductVersion != null){
bomVersion = mesProductVersion.getAlternativePartList();
}
String bomVersion = mesProductVersion.getAlternativePartList();
MesBom bom = mesBomService.findBom(organizeCode, bomVersion, productPartNo);
if (bom == null) {
return;
@ -115,9 +107,6 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
}
//5.打散的bom 获取排序加工规则
List<MesWorkOrderPart> workOrderPartList = dismantleBom(productPartNo, 1, TimeTool.getNowTime(true), bom.getBomCode(), organizeCode, detail.getWorkCellCode());
if (workOrderPartList.isEmpty()){
return;
}
//6.装配件获取的三种条件
String custCode = mesCustomerPart.getCustCode();
MesCustomerCarModel mesCustomerCarModel = getMesCustomerCarModel(custPartNo, organizeCode, custCode);
@ -266,7 +255,7 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
ddlPackBean.setOrderByStr(" order by createDatetime desc ");
List<MesProductVersion> mesProductVersionList = mesProductVersionRDao.findByHqlTopWhere(ddlPackBean, 1);
if (Objects.isNull(mesProductVersionList) || mesProductVersionList.isEmpty()) {
return null;
MesException.throwMesBusiException("物料【%s】对应的生产版本信息不存在", partNo);
}
return mesProductVersionList.get(0);
}
@ -311,18 +300,12 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
}
private List<MesBom> getPlatBom(String partNo, String effectiveTime, String bomCode, String organizeCode) {
//MES汇报查询BOM是否携带结束查询条件
MesConfig config = mesConfigService.getCfgValueByCode(organizeCode, MesExtConstWords.MES_REPORT_FIND_BOM_WITH_EFFENDTIME);
Boolean isWithEffEndTime = (null != config && !org.springframework.util.StringUtils.isEmpty(config.getCfgValue()) && config.getCfgValue().equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValueStr())) ? true : false;
if (bomCode == null) {
//首先根据虚结构的零件号查询出最新的一条bom信息作为bomCode
DdlPackBean bomCodePackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomCodePackBean);
DdlPreparedPack.getStringSmallerPack(effectiveTime, MesExtConstWords.EFF_START_TIME, bomCodePackBean);
if (isWithEffEndTime) DdlPreparedPack.getStringBiggerPack(effectiveTime, MesExtConstWords.EFF_END_TIME, bomCodePackBean);
DdlPreparedPack.getOrderBy(MesExtConstWords.EFF_START_TIME, CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomCodePackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomCodePackBean);
DdlPreparedPack.getTimeBetweenCol(effectiveTime, "effStartTime", "effEndTime", bomCodePackBean, false);
DdlPreparedPack.getOrderBy("effStartTime", CommonEnumUtil.ASC_OR_DESC.DESC.getValue(), bomCodePackBean);
List<MesBom> bomList = bomRao.findByHqlTopWhere(bomCodePackBean, 1);
if (bomList == null || bomList.isEmpty()) {
return new ArrayList<>();
@ -332,8 +315,9 @@ public class MesSortRuleCfgOfflineServiceImpl implements IMesSortRuleCfgOfflineS
List<MesBom> bomResultList = new ArrayList<>();
DdlPackBean bomPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(bomCode, "bomCode", bomPackBean);
DdlPreparedPack.getStringEqualPack(partNo, MesExtConstWords.PART_NO, bomPackBean);
DdlPreparedPack.getStringEqualPack(effectiveTime, MesExtConstWords.EFF_START_TIME, bomPackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", bomPackBean);
DdlPreparedPack.getStringSmallerPack(effectiveTime, "effStartTime", bomPackBean);
DdlPreparedPack.getStringBiggerPack(effectiveTime, "effEndTime", bomPackBean);
List<MesBom> bomList = bomRao.findByHqlWhere(bomPackBean);
for (MesBom bom : bomList) {

@ -315,43 +315,43 @@ public class MesSpotCheckOrderService extends BaseMesService<MesSpotCheckOrder>
String organizeCode = AuthUtilExt.getOrganizeCode();
for (Long id : ids) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(id, MesExtConstWords.ID, ddlPackBean);
DdlPreparedPack.getNumEqualPack(id, "id", ddlPackBean);
MesSpotCheckOrder bean = baseRDao.getByProperty(ddlPackBean);
if (null == bean) continue;
if (!StringUtils.isEmpty(bean.getStatus()) && bean.getStatus().compareTo(MesExtEnumUtil.SPOT_CHECK_ORDER_STATUS.COMPLETE.getValue()) == 0 &&
!StringUtils.isEmpty(bean.getSpotCheckOrderResult()) && bean.getSpotCheckOrderResult().compareTo(MesExtEnumUtil.SPOT_CHECK_ORDER_RESULT_TYPE.OK.getValue()) == 0) {
if (StringUtils.isEmpty(bean)) continue;
if (bean.getStatus() == MesExtEnumUtil.SPOT_CHECK_ORDER_STATUS.COMPLETE.getValue() && Objects.equals(bean.getSpotCheckOrderResult(),
MesExtEnumUtil.SPOT_CHECK_ORDER_RESULT_TYPE.OK.getValue())) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("【%s】点检单状态为【%s】,且点检结果为OK,不允许修改,请检查数据", bean.getSpotCheckId(), MesExtEnumUtil.SPOT_CHECK_ORDER_STATUS.valueOfDescription(bean.getStatus()))
.build();
}
bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
bean.setSystemSyncStatus(CommonEnumUtil.FALSE);
bean.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
ConvertBean.serviceModelUpdate(bean, AuthUtil.getSessionUser().getUserName());
//获取点检方案明细
DdlPackBean packBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(bean.getId(), MesExtConstWords.PID, packBean);
DdlPreparedPack.getNumEqualPack(bean.getId(), "pid", packBean);
List<MesSpotCheckOrderResult> detailList = spotCheckOrderResultRepository.findByHqlWhere(packBean);
if (!CollectionUtils.isEmpty(detailList)) {
detailList.forEach(k -> {
k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
k.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
k.setSystemSyncDatetime("");
ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName());
});
spotCheckOrderResultRepository.saveAll(detailList);
}
detailList.forEach(k -> {
k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
k.setSystemSyncStatus(CommonEnumUtil.FALSE);
k.setSystemSyncDatetime("");
ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName());
});
spotCheckOrderResultRepository.saveAll(detailList);
//获取点检方案零件 主表零件表 spotCheckId-pid关联
//获取点检单零件号
DdlPackBean orderPartPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(bean.getId(), MesExtConstWords.SPOT_CHECK_ORDER_ID, orderPartPackBean);
DdlPreparedPack.getNumEqualPack(bean.getId(), "spotCheckOrderId", orderPartPackBean);
List<MesSpotCheckOrderPart> oldOrderPartList = spotCheckOrderPartRepository.findByHqlWhere(orderPartPackBean);
if (!CollectionUtils.isEmpty(oldOrderPartList)) {
if (CollectionUtils.isEmpty(oldOrderPartList)) {
oldOrderPartList.forEach(k -> {
k.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
k.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
k.setSystemSyncStatus(CommonEnumUtil.FALSE);
k.setSystemSyncDatetime("");
ConvertBean.serviceModelUpdate(k, AuthUtil.getSessionUser().getUserName());
});

@ -59,7 +59,7 @@ public class AssemblyVisualListPrintStrategy implements IPrintTemplateStrategySe
// vinCode
resultMap.put(MesExtConstWords.VIN_CODE, workOrder.getVinCode());
// vinCode 后四位
resultMap.put(MesExtConstWords.VIN_CODE_AFTER_FOUR, !StringUtils.isEmpty(workOrder.getVinCode()) && workOrder.getVinCode().length() > MesExtConstWords.FOUR ? workOrder.getVinCode().substring(workOrder.getVinCode().length() - MesExtConstWords.FOUR) : workOrder.getVinCode());
resultMap.put(MesExtConstWords.VIN_CODE_AFTER_FOUR, workOrder.getVinCode());
// 总成零件号
resultMap.put(MesExtConstWords.PART_NO, workOrder.getPartNo());
// 工单标识

@ -1,49 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.report;
import cn.estsh.i3plus.ext.mes.api.busi.report.IMesInspectionProductDataReportService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesInspectionProductDataReportDao;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesInspectionProductDataAmountReportModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List;
@Service
@Slf4j
public class MesInspectionProductDataReportService implements IMesInspectionProductDataReportService {
@Autowired
private IMesInspectionProductDataReportDao inspectionProductDataReportDao;
/**
*
* @param model
* @param pager
* @return
*/
@Override
public ListPager<MesInspectionProductDataAmountReportModel> queryInspectionProductDataAmountReport(MesInspectionProductDataAmountReportModel model, Pager pager) {
pager = PagerHelper.getPager(pager, inspectionProductDataReportDao.queryInspectionProductDataAmountReportCount(model));
List<MesInspectionProductDataAmountReportModel> resultList = inspectionProductDataReportDao.queryInspectionProductDataAmountReport(model, pager);
if (!CollectionUtils.isEmpty(resultList)) {
for (MesInspectionProductDataAmountReportModel result : resultList) {
if (null == result) continue;
if (!StringUtils.isEmpty(result.getFrontBack())) result.setFrontBackName(MesExtEnumUtil.DEFECT_ALARM_CONFIG_SIDES.valueOfDescription(result.getFrontBack()));
if (!StringUtils.isEmpty(result.getInspectionStatus())) result.setInspectionStatusName(MesExtEnumUtil.PART_INSPECTION_STATUS.valueOfDescription(result.getInspectionStatus()));
if (!StringUtils.isEmpty(result.getNcStatus())) result.setNcStatusName(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.valueOfDescription(result.getNcStatus()));
if (!StringUtils.isEmpty(result.getTaskStatus())) result.setTaskStatusName(MesExtEnumUtil.REWORK_TASK_STATUS.valueOfDescription(result.getTaskStatus()));
}
}
return new ListPager<>(resultList, pager);
}
}

@ -1,70 +0,0 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.report;
import cn.estsh.i3plus.ext.mes.api.busi.report.IMesProductionRecordReportExtService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.report.IMesProductionRecordReportExtDao;
import cn.estsh.i3plus.ext.mes.pojo.model.report.MesProductionRecordReportExtModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
@Slf4j
public class MesProductionRecordReportExtService implements IMesProductionRecordReportExtService {
@Autowired
private IMesProductionRecordReportExtDao productionRecordReportExtDao;
/**
*
* @param model
* @param pager
* @return
*/
@Override
public ListPager<MesProductionRecordReportExtModel> queryProductionRecordUnionWorkOrderLogReport(MesProductionRecordReportExtModel model, Pager pager) {
List<Integer> reportStatusList = !StringUtils.isEmpty(model.getReportStatusList())
? Arrays.asList(model.getReportStatusList().split(MesExtConstWords.COMMA)).stream().map(Integer::parseInt).collect(Collectors.toList()) :
Stream.of(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_10.getValue(),
MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_20.getValue(),
MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_30.getValue(),
MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_40.getValue()
).collect(Collectors.toList());
List<Integer> reportStatusList2Pr = null;
List<Integer> reportStatusList2Wo = null;
if (reportStatusList.contains(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_10.getValue())) {
reportStatusList2Pr = new ArrayList<>();
reportStatusList2Pr.add(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_10.getValue());
reportStatusList2Pr.add(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_40.getValue());
}
if (reportStatusList.contains(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_20.getValue())) {
if (CollectionUtils.isEmpty(reportStatusList2Pr)) reportStatusList2Pr = new ArrayList<>();
reportStatusList2Pr.add(MesExtEnumUtil.REPORT_STATUS.REPORT_STATUS_20.getValue());
}
if (StringUtils.isEmpty(model.getWorkCellCode()) && StringUtils.isEmpty(model.getEquipmentCode())) {
reportStatusList2Wo = new ArrayList<>();
if (reportStatusList.contains(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_30.getValue())) reportStatusList2Wo.add(MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT.getValue());
if (reportStatusList.contains(MesExtEnumUtil.PRODUCTION_RECORD_QUREY_REPORT_STATUS.REPORT_STATUS_40.getValue())) reportStatusList2Wo.add(MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST.getValue());
}
ListPager<MesProductionRecordReportExtModel> listPager = productionRecordReportExtDao.queryProductionRecordUnionWorkOrderLogReport(model, pager, reportStatusList2Pr, reportStatusList2Wo);
return listPager;
}
}

@ -48,7 +48,7 @@ public class MesException {
* @param errorDetail
* @param errorSoluction
*/
public static void throwBusiExceptionByCode(String errorCode,String errorDetail,String errorSoluction,Object...args){
public static void throwBusiException(String errorCode,String errorDetail,String errorSoluction,Object...args){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(errorCode)

@ -1,242 +0,0 @@
#\u9879\u76EE\u7AEF\u53E3
server.port=8300
#\u672C\u673Aip
impp.server.ip=localhost
#\u94FE\u8DEF\u8FFD\u8E2Azipkin\u63A7\u5236\u53F0ip\u5730\u5740
impp.console.ip=http://10.193.30.22:8010
################ \u529F\u80FD\u914D\u7F6E1 ################
#mes webservice\u5F00\u5173
mes.webservice.open=true
#\u5DE5\u4F5C\u533AID,\u4E0D\u540C\u670D\u52A1\u5668\u4E0D\u540CID 0 - 31
impp.snowflake.work.id=19
#\u6570\u636E\u4ED3\u533AID 0 - 31 \u6709\u9ED8\u8BA4\u56FA\u5B9AID
impp.snowflake.database.id=11
#\u82E5\u65E0\u6CD5\u8FDE\u63A5\u6CE8\u518C\u4E2D\u5FC3\uFF0C\u662F\u5426\u9700\u8981\u4E00\u76F4\u68C0\u6D4B\u52A0\u5165
impp.cluster.fetch=false
#\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3
impp.cluster.regist.center=http://10.193.30.22:8000/eureka/
#\u65E5\u5FD7\u9ED8\u8BA4\u4F7F\u7528log4j2
logging.config=classpath:log4j2-spring.xml
########\u5E73\u53F0\u76F8\u5173\u53C2\u6570##########
#\u662F\u5426\u5F00\u542Fredis\u7F13\u5B58
impp.config.redis=true
#\u662F\u5426\u5F00\u542Fmongo
impp.config.mongo=true
#\u662F\u5426\u5F00\u542FrabbitMQ
impp.config.rabbitmq=false
#\u662F\u5426\u5F00\u542Fswagger
impp.config.swagger=true
#\u662F\u5426\u5F00\u542Fwebsocket
impp.config.websocket=true
#\u662F\u5426\u5F00\u542F\u6587\u4EF6\u670D\u52A1
impp.config.fileserver=fastdfs
#\u662F\u5426\u5BF9\u53D1\u5E03\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790
impp.log.detail.controller=false
#\u662F\u5426\u5BF9\u8C03\u7528\u670D\u52A1\u8FDB\u884C\u8BE6\u7EC6\u65E5\u5FD7\u5206\u6790
impp.log.detail.service=false
################ \u961F\u5217\u5904\u7406 ################
#\u7AD9\u5185\u4FE1
impp.mq.queue.letter=true
#\u90AE\u4EF6
impp.mq.queue.mail=true
#\u5B9A\u65F6\u4EFB\u52A1
impp.mq.queue.schedule=true
#SWEB\u901A\u77E5\u5904\u7406\u961F\u5217
impp.mq.queue.sweb.notice=true
################################ \u5176\u4ED6\u529F\u80FD\u8BBE\u7F6E ################################
#elasticsearch ip \u591A\u4E2A\u7528\u9017\u53F7\u9694\u5F00
elasticsearch.ip=10.193.30.22:9200
################ FastDfs \u914D\u7F6E ################
#tracker\u670D\u52A1\u5668ip
fastdfs.tracker_servers=10.193.30.22:22122
# tracker\u7684http\u7AEF\u53E3
fastdfs.http_tracker_http_port=22122
# \u4F7F\u7528\u81EA\u5B9A\u4E49\u5DE5\u5177\u83B7\u53D6\u6587\u4EF6\u5C55\u793A\u5730\u5740
fastdfs.http.ui.host=http://dfs.estsh.com
#\u5BC6\u7801
#fastdfs.http.secret_key=
#\u8FDE\u63A5\u8D85\u65F6
fastdfs.connect_timeout_in_seconds=500000
#\u4F20\u8F93\u8D85\u65F6
fastdfs.network_timeout_in_seconds=60000000
fastdfs.charset=UTF-8
# token \u9632\u76D7\u94FE\u529F\u80FD
fastdfs.http_anti_steal_token=no
#redisIP
redis.hostName=10.193.30.9
#\u7AEF\u53E3\u53F7
redis.port=6379
#\u5982\u679C\u6709\u5BC6\u7801
redis.password=(mfLEu7@9kmfdsTy
##\u5176\u4ED6redis\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904
################## rabbitMQ\u914D\u7F6E ####################
spring.rabbitmq.vhost=/
spring.rabbitmq.host=10.193.30.18
spring.rabbitmq.port=15672
spring.rabbitmq.username=root
spring.rabbitmq.password=(mfLEu7@9kmfdsTy
##\u5176\u4ED6rabbitMq\u914D\u7F6E\u9700\u8981\u8C03\u6574\u7684\u52A0\u5728\u6B64\u5904
################ \u529F\u80FD\u914D\u7F6E2 ################
#\u662F\u5426\u5F00\u542Fredis
mes.redis.open=true
#\u662F\u5426\u5141\u8BB8\u524D\u7AEF\u8DE8\u57DF\u63D0\u4EA4
impp.web.cross=true
################ \u6388\u6743\u8FC7\u6EE4\u914D\u7F6E ################
#\u7528\u6237\u6388\u6743\u8FC7\u6EE4\u8DEF\u5F84
filter.shiro.user.filteruri=/mes/operate/*
#\u7528\u6237\u6388\u6743\u8FC7\u6EE4\u8DEF\u5F84
filter.shiro.admin.filteruri=/mes/adoperate/*
#\u7528\u6237\u6388\u6743\u8FC7\u6EE4\u8DEF\u5F84
filter.shiro.saadmin.filteruri=/mes/saoperate/*
################ \u4E91\u914D\u7F6E \uFF08\u4EE5projectName\u4F5C\u4E3A\u5E94\u7528\u540D\uFF09 ################
#\u662F\u5426\u5F00\u542F\u5FAE\u670D
eureka.client.enabled=false
#\uFF08\u53C2\u6570\u914D\u7F6E\uFF09\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740 -\u300B i3plus-ics\uFF0C\u591A\u4E2A\u7528\u9017\u53F7\u5206\u9694
eureka.client.service-url.defaultZone=${impp.cluster.regist.center}
#\u533A\u57DF\uFF08\u6E90\u7801\u4E2D\u5305\u542BdefaultZone\uFF0C\u6240\u4EE5\u9ED8\u8BA4\u4F7F\u7528defaultZone\uFF09
#eureka.client.region=estsh
#eureka.client.service-url.estsh:http://192.168.1.20:8000/eureka/,http://192.168.1.20:8001/eureka/
################ \u672C\u673A\u5FAE\u670D\u914D\u7F6E ################
#\u672C\u670D\u52A1\u4E3B\u673Aip\uFF08\u82E5\u591A\u4E2A\u7F51\u5361\uFF0C\u5219\u9700\u8981\u8BBE\u7F6E\u672C\u670D\u52A1ip\uFF09
eureka.instance.ip-address=${impp.server.ip}
#\u672C\u670D\u52A1\u5B9E\u4F8BID
eureka.instance.instance-id=${impp.server.ip}:${server.port}
#\u672C\u670D\u52A1\u4E3B\u673A\u540D
eureka.instance.hostname=${impp.server.ip}
#\u672C\u670D\u52A1\u72B6\u6001\u9875\u9762
eureka.instance.status-page-url=http://${impp.server.ip}:${server.port}/swagger-ui.html
#\u5C06\u81EA\u5DF1\u7684IP\u6CE8\u518C\u5230Eureka Server\u3002\u82E5\u4E0D\u914D\u7F6E\u6216\u8BBE\u7F6E\u4E3Afalse\uFF0C\u8868\u793A\u6CE8\u518C\u5FAE\u670D\u52A1\u6240\u5728\u64CD\u4F5C\u7CFB\u7EDF\u7684hostname\u5230Eureka Server
eureka.instance.prefer-ip-address=true
#\u662F\u5426\u8FDB\u884C\u5065\u5EB7\u68C0\u67E5
eureka.client.healthcheck.enabled=true
################ \u68C0\u6D4B\u673A\u5236 ################
#\u5FC3\u8DF3\u95F4\u9694\u5468\u671F\uFF0C\u5B95\u673A\u9650\u5236\uFF08\u79D2\uFF09\uFF0C30\u79D2\u6CA1\u53CD\u5E94\u89C6\u4E3A\u5B95\u673A
eureka.instance.lease-expiration-duration-in-seconds=30
#\u5FC3\u8DF3\u5468\u671F
eureka.instance.lease-renewal-interval-in-seconds=20
#client\u8FDE\u63A5Eureka\u670D\u52A1\u7AEF\u540E\u7684\u7A7A\u95F2\u7B49\u5F85\u65F6\u95F4\uFF0C\u9ED8\u8BA4\u4E3A30 \u79D2
eureka.client.eureka-connection-idle-timeout-seconds=1
#\u6700\u521D\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\u6240\u9700\u7684\u65F6\u95F4\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A40\u79D2
eureka.client.initial-instance-info-replication-interval-seconds=1
#\u95F4\u9694\u591A\u957F\u65F6\u95F4\u518D\u6B21\u590D\u5236\u5B9E\u4F8B\u4FE1\u606F\u5230eureka\u670D\u52A1\u5668\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2
eureka.client.instance-info-replication-interval-seconds=1
#\u4ECEeureka\u670D\u52A1\u5668\u6CE8\u518C\u8868\u4E2D\u83B7\u53D6\u6CE8\u518C\u4FE1\u606F\u7684\u65F6\u95F4\u95F4\u9694\uFF08s\uFF09\uFF0C\u9ED8\u8BA4\u4E3A30\u79D2
eureka.client.registry-fetch-interval-seconds=1
################ \u6253\u5F00feign\u7684\u7194\u65AD ################
feign.hystrix.enabled=true
#\u8BFB\u53D6\u6570\u636E\u65F6\u957F
ribbon.ReadTimeout=100000
#\u8FDE\u63A5\u65F6\u957F
ribbon.ConnectTimeout=100000
#\u91CD\u8BD5
ribbon.maxAutoRetries=2
#\u54CD\u5E94\u8D85\u8FC7\u65F6\u957F\uFF0C\u8FDB\u884C\u7194\u65AD\uFF08\u7194\u65AD\u8D85\u65F6\u9700\u8981\u5927\u4E8E\u8BFB\u53D6\u65F6\u957F\u53CA\u8FDE\u63A5\u65F6\u957F\uFF09
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=150000
#\u96C6\u7FA4\u540D
eureka.instance.metadata-map.cluster=impp_cluster
################ \u94FE\u8DEF\u8FFD\u8E2A ################
#\u4F7F\u7528web\u65B9\u5F0F\u4F20\u8F93\u4FE1\u606F
spring.zipkin.sender.type=web
#\u94FE\u8DEF\u8FFD\u8E2A\u670D\u52A1\u7684\u5730\u5740
spring.zipkin.base-url=${impp.console.ip}
#\u8FFD\u8E2A\u6DF1\u5EA6\uFF0C\u767E\u5206\u6BD4\uFF0C1\u662F\u5168\u90E8
spring.sleuth.sampler.probability=1.0
################ \u65E5\u5FD7\u636E\u6E90 ################
spring.data.mongodb.database=mongoDBSource
spring.data.mongodb.uri=10.193.30.22:27017
spring.data.mongodb.username=sa
spring.data.mongodb.password=i3plus
spring.data.mongodb.port=27017
################ \u4E3B\u6570\u636E\u6E90 ################
##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316##############
impp.schedule.open=true
impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.schedule.datasource.jdbc-url=jdbc:mysql://10.193.30.20:3306/impp_i3_schedule?autoReconnect=true&useSSL=false&characterEncoding=utf-8
impp.schedule.datasource.username=root
impp.schedule.datasource.password=(mfLEu7@9kmfdsTy
impp.schedule.datasource.max-connections=20
#\u5B9A\u65F6\u4EFB\u52A1\u5728\u670D\u52A1\u542F\u52A8\u540E\u591A\u5C11\u79D2\u6267\u884C
impp.schedule.start.after-second=20
#\u662F\u5426\u96C6\u7FA4\u90E8\u7F72
impp.schedule.datasource.is-clustered=true
#\u6267\u884C\u68C0\u6D4B\uFF08\u6BEB\u79D2\uFF09\uFF0C\u82E5\u5B95\u673A\u7531\u5176\u4ED6\u5B9A\u65F6\u5668\u6267\u884C
impp.schedule.datasource.cluster-checkin-interval=30000
#\u7EBF\u7A0B\u6570
impp.schedule.thread-count=10
#\u7EBF\u7A0B\u4F18\u5148\u7EA7\uFF081-10\uFF09\u9ED8\u8BA4\u4E3A5
impp.schedule.thread-priority=5
################ \u6570\u636E\u6C60\u8BBE\u7F6E ################
## \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF0C\u9ED8\u8BA4\u662F10
spring.datasource.hikari.maximum-pool-size=100
## \u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\u6570\u91CF
spring.datasource.hikari.minimum-idle=10
## \u7A7A\u95F2\u8FDE\u63A5\u5B58\u6D3B\u6700\u5927\u65F6\u95F4\uFF0C\u9ED8\u8BA4600000\uFF0810\u5206\u949F\uFF09
spring.datasource.hikari.idle-timeout=600000
## \u6B64\u5C5E\u6027\u63A7\u5236\u6C60\u4E2D\u8FDE\u63A5\u7684\u6700\u957F\u751F\u547D\u5468\u671F\uFF0C\u503C0\u8868\u793A\u65E0\u9650\u751F\u547D\u5468\u671F\uFF0C\u9ED8\u8BA41800000\u537330\u5206\u949F
spring.datasource.hikari.max-lifetime=1800000
## \u6570\u636E\u5E93\u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4,\u9ED8\u8BA430\u79D2\uFF0C\u537330000
spring.datasource.hikari.connection-timeout=30000
################ JPA\u8BBE\u7F6E\u8BBE\u7F6E ################
# mysql
spring.jpa.database=MYSQL
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
##Sql-server##
#spring.jpa.database=sql_server
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServerDialect
##oracle##
#spring.jpa.database=oracle
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
# mysql
spring.datasource.validationQuery=SELECT 1
##Sql-server##
# spring.datasource.validationQuery=SELECT 1
##oracle##
# spring.datasource.validationQuery=SELECT 1 FROM DUAL
#ImprovedNamingStrategy / physical_naming_strategy java\u5C5E\u6027\u6620\u5C04\u5230\u6570\u636E\u5E93\u5B57\u6BB5\u65F6\u547D\u540D\u89C4\u5219
# spring.jpa.properties.hibernate.physical_naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy/org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
#\u8868\u5173\u7CFBcreate,create-drop,update,validate
spring.jpa.properties.hibernate.hbm2ddl.auto=none
#\u662F\u5426\u663E\u793Asql
spring.jpa.show-sql=true
################ \u6388\u6743\u914D\u7F6E ################
slm.api.password=4C9479EBEFA6FA6E232EF25EFA49C4D2
slm.app.id=20190513
###################\uFFFD\uFFFD\u013F\uFFFD\uFFFD\uFFFD\u077F\uFFFD\u02B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B7\uFFFD\uFFFD##################################################
project.entity.path=cn.estsh.i3plus.pojo
impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.write.datasource.jdbc-url=jdbc:mysql://10.193.30.20:3306/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
impp.write.datasource.username=root
impp.write.datasource.password=(mfLEu7@9kmfdsTy
impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource
impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver
impp.read.datasource.jdbc-url=jdbc:mysql://10.193.30.20:3306/impp_i3_mes?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
impp.read.datasource.username=root
impp.read.datasource.password=(mfLEu7@9kmfdsTy
#impp.schedule.scheduleType=xxljob
#xxl.job.admin.addresses=http://10.193.30.22:10010/xxl-job-admin
#### xxl-job, access token
#xxl.job.accessToken=
#### xxl-job executor appname
##xxl.job.executor.appname=${project.name}
#xxl.job.executor.appname=i3mes-castle
#### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
#xxl.job.executor.address=
#### xxl-job executor server-info
#xxl.job.executor.ip=172.24.96.1
##xxl.job.executor.ip=
##xxl.job.executor.port=9999
#xxl.job.executor.port=8888
#### xxl-job executor log-path
#xxl.job.executor.logpath=
#### xxl-job executor log-retention-days
#xxl.job.executor.logretentiondays=10
#xxl.job.basePackage=cn.estsh.i3plus.ext.mes.apiservice.schedulejob
impp.app.ext.base-packages=cn.estsh.i3plus.ext.mes.apiservice

@ -39,7 +39,7 @@ impp.yfas.datasource.password=estsh123
#impp.sweb.datasource.username=root
#impp.sweb.datasource.password=estsh123
#Pisces\u6570\u636E\u6E90
#Pisces数据源
impp.pisces.datasource.isopen=true
impp.pisces.datasource.alias=piscesDataSource
impp.pisces.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
@ -47,7 +47,7 @@ impp.pisces.datasource.jdbc-url=jdbc:sqlserver://172.28.239.113:1433;SelectMetho
impp.pisces.datasource.username=sa
impp.pisces.datasource.password=sahasnopassword
#Pisces\u6570\u636E\u6E90
#Pisces数据源
impp.pisces1.datasource.isopen=true
impp.pisces1.datasource.alias=piscesDataSource
impp.pisces1.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
@ -55,18 +55,10 @@ impp.pisces1.datasource.jdbc-url=jdbc:sqlserver://172.28.239.113:1433;SelectMeth
impp.pisces1.datasource.username=sa
impp.pisces1.datasource.password=sahasnopassword
#Pisces2\u6570\u636E\u6E90
impp.pisces2.datasource.isopen=true
impp.pisces2.datasource.alias=pisces2DataSource
impp.pisces2.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
impp.pisces2.datasource.jdbc-url=jdbc:sqlserver://172.28.239.113:1433;SelectMethod=cursor;DatabaseName=PiscesTest;applicationIntent=schemaOnly;selectedSchema=MES
impp.pisces2.datasource.username=sa
impp.pisces2.datasource.password=sahasnopassword
#Pisces3\u6570\u636E\u6E90
impp.pisces3.datasource.isopen=true
impp.pisces3.datasource.alias=pisces3DataSource
impp.pisces3.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
impp.pisces3.datasource.jdbc-url=jdbc:sqlserver://172.28.239.113:1433;SelectMethod=cursor;DatabaseName=PiscesTest;applicationIntent=schemaOnly;selectedSchema=MES
impp.pisces3.datasource.username=sa
impp.pisces3.datasource.password=sahasnopassword
#Pisces中间表数据源
impp.pisces1.datasource.isopen=true
impp.pisces1.datasource.alias=pisces1DataSource
impp.pisces1.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
impp.pisces1.datasource.jdbc-url=jdbc:sqlserver://172.28.16.73:1433;SelectMethod=cursor;DatabaseName=YFMES_DATACENTER;applicationIntent=schemaOnly;selectedSchema=MES
impp.pisces1.datasource.username=sa
impp.pisces1.datasource.password=sahasnopassword

@ -1,153 +0,0 @@
package cn.estsh.i3plus.ext.mes.pojo.model.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import org.springframework.util.StringUtils;
import java.io.Serializable;
@Data
@ApiModel("检验产品数据总报表")
public class MesInspectionProductDataAmountReportModel implements Serializable {
private static final long serialVersionUID = -2963567250001047604L;
//-----------查询条件-------------
@ApiParam(value = "组织代码")
private String organizeCode;
@ApiParam(value = "检验日期起始")
private String inspectionDateStart;
@ApiParam(value = "检验日期截止")
private String inspectionDateEnd;
@ApiParam(value = "NC判定时间起始")
private String modifyDateTimeStart;
@ApiParam(value = "NC判定时间截止")
private String modifyDateTimeEnd;
@ApiParam(value = "零件号")
private String partNo;
@ApiParam(value = "零件名称")
private String partName;
@ApiParam(value = "零件条码")
private String productSn;
@ApiParam("生产线代码")
private String workCenterCode;
@ApiParam("检验人")
private String createUser;
@ApiParam("检验结果")
private Integer inspectionStatus;
@ApiParam("NC判定结果")
private Integer ncStatus;
@ApiParam("NC处理结果")
private Integer taskStatus;
@ApiParam("缺陷位置")
private String defectLocation;
@ApiParam("正面反面(方向)")
private Integer frontBack;
@ApiParam("缺陷描述")
private String defectTypeName;
@ApiParam("责任库区")
private String umlgo;
@ApiParam("返工人")
private String modifyUser;
@ApiParam("返工单号")
private String reworkOrder;
@ApiParam("零件类型")
private String partTypeCode;
//-----------展示列-------------
@ApiParam(value = "id")
private Long id;
@ApiParam(value = "pid")
private Long pid;
@ApiParam(value = "检验日期")
private String inspectionDate;
@ApiParam(value = "条码")
private String sn;
@ApiParam("数量")
private Integer qty;
@ApiParam("生产线名称")
private String workCenterName;
@ApiParam("检验结果(名称)")
private String inspectionStatusName;
@ApiParam("方向")
private String frontBackName;
@ApiParam("NC判定结果(名称)")
private String ncStatusName;
@ApiParam("源库区")
private String lgort;
@ApiParam("NC处理结果(名称)")
private String taskStatusName;
@ApiParam(value = "NC判定时间")
private String modifyDatetime;
@ApiParam("NC判定人")
private String ncModifyUser;
@ApiParam("zrsum")
private String zrsum;
public MesInspectionProductDataAmountReportModel() {}
public MesInspectionProductDataAmountReportModel(Long id, Long pid, String inspectionDate, String modifyDatetime, String partName, String partNo, String sn, Integer qty, String workCenterCode,
String createUser, String ncModifyUser, Integer inspectionStatus, Integer ncStatus, String defectLocation, Integer frontBack, String defectTypeName,
String lgort, String umlgo, String zrsum, Integer taskStatus, String reworkOrder, String modifyUser, String partTypeCode, String workCenterName) {
this.id = id;
this.pid = pid;
this.inspectionDate = inspectionDate;
this.modifyDatetime = modifyDatetime;
this.partName = partName;
this.partNo = partNo;
this.sn = sn;
this.qty = qty;
this.workCenterCode = workCenterCode;
this.createUser = createUser;
this.ncModifyUser = ncModifyUser;
this.inspectionStatus = inspectionStatus;
this.ncStatus = ncStatus;
this.defectLocation = defectLocation;
this.frontBack = frontBack;
this.defectTypeName = defectTypeName;
this.lgort = lgort;
this.umlgo = umlgo;
this.zrsum = zrsum;
this.taskStatus = taskStatus;
this.reworkOrder = reworkOrder;
this.modifyUser = modifyUser;
this.partTypeCode = partTypeCode;
this.workCenterName = workCenterName;
}
}

@ -1,76 +0,0 @@
package cn.estsh.i3plus.ext.mes.pojo.model.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import org.springframework.util.StringUtils;
import java.io.Serializable;
@Data
@ApiModel("加工记录合并批量汇报查询报表")
public class MesProductionRecordReportExtModel implements Serializable {
private static final long serialVersionUID = 7580273561023637832L;
@ApiParam(value = "组织代码")
private String organizeCode;
@ApiParam(value = "物料编号")
private String partNo;
@ApiParam(value = "物料名称")
private String partName;
@ApiParam("生产线代码")
private String workCenterCode;
@ApiParam(value = "工位代码")
private String workCellCode;
@ApiParam(value = "数量")
private Integer qty;
@ApiParam("班次代码")
private String shiftCode;
@ApiParam(value = "设备代码")
public String equipmentCode;
@ApiParam("设备名称")
private String equipmentName;
@ApiParam(value = "汇报状态")
private String reportStatusList;
@ApiParam(value = "完成时间开始日期")
private String completeDateTimeStart;
@ApiParam(value = "完成时间结束日期")
private String completeDateTimeEnd;
//1=加工记录 2=工单日志批量汇报
@ApiParam("数据来源")
private Integer dataSource;
@ApiParam("汇报状态")
private Integer reportStatus;
@ApiParam("汇报状态名称")
private String reportStatusName;
public MesProductionRecordReportExtModel() {}
public MesProductionRecordReportExtModel(Object workCenterCode, Object workCellCode, Object partNo, Object partName, Object shiftCode, Object equipmentCode, Object equipmentName, Object reportStatus, Object dataSource, Object qty) {
if (!StringUtils.isEmpty(workCenterCode)) this.workCenterCode = (String) workCenterCode;
if (!StringUtils.isEmpty(workCellCode)) this.workCellCode = (String) workCellCode;
if (!StringUtils.isEmpty(partNo)) this.partNo = (String) partNo;
if (!StringUtils.isEmpty(partName)) this.partName = (String) partName;
if (!StringUtils.isEmpty(shiftCode)) this.shiftCode = (String) shiftCode;
if (!StringUtils.isEmpty(equipmentCode)) this.equipmentCode = (String) equipmentCode;
if (!StringUtils.isEmpty(equipmentName)) this.equipmentName = (String) equipmentName;
if (!StringUtils.isEmpty(reportStatus)) this.reportStatus = Integer.valueOf(reportStatus.toString());
if (!StringUtils.isEmpty(dataSource)) this.dataSource = Integer.valueOf(dataSource.toString());
if (!StringUtils.isEmpty(qty)) this.qty = Double.valueOf(qty.toString()).intValue();
}
}

@ -35,8 +35,6 @@ public class MesExtConstWords {
public static final String EQUIPMENT_CODE = "equipmentCode";
// 设备名称
public static final String EQUIPMENT_NAME = "equipmentName";
// 设备代码
public static final String EQUIP_CODE = "equipCode";
// 开模记录ID
public static final String MOULD_RECORD_ID = "mouldRecordId";
// 设备数据变量ID
@ -161,10 +159,6 @@ public class MesExtConstWords {
public static final String PLAN_START_TIME = "planStartTime";
//计划结束时间
public static final String PLAN_END_TIME = "planEndTime";
//上线时间
public static final String ONLINE_TIME = "onlineTime";
//下线时间
public static final String OFFLINE_TIME = "offlineTime";
//执行开始日期
public static final String BEGIN_DATE = "beginDate";
//执行结束日期
@ -183,8 +177,6 @@ public class MesExtConstWords {
public static final String SYNC_TO_WMS = "syncToWms";
//BOM版本
public static final String BOM_VERSION = "bomVersion";
//BOM代码
public static final String BOM_CODE = "bomCode";
//生效时间
public static final String EFF_START_TIME = "effStartTime";
//失效时间
@ -207,40 +199,6 @@ public class MesExtConstWords {
public static final String PULL_NAME = "pullName";
//拉动地址
public static final String PULL_ADDR = "pullAddr";
//点检单id
public static final String SPOT_CHECK_ORDER_ID = "spotCheckOrderId";
//检验结果
public static final String INSPECTION_STATUS = "inspectionStatus";
//NC判定结果
public static final String NC_STATUS = "ncStatus";
//缺陷位置
public static final String DEFECT_LOCATION = "defectLocation";
//正面反面"
public static final String FRONT_BACK = "frontBack";
//缺陷名称
public static final String DEFECT_TYPE_NAME = "defectTypeName";
//目标库存地点
public static final String UMLGO = "umlgo";
//任务状态
public static final String TASK_STATUS = "taskStatus";
//返工单据号
public static final String REWORK_ORDER = "reworkOrder";
//零件类别
public static final String PART_TYPE_CODE = "partTypeCode";
//包装代码
public static final String PACKAGE_CODE = "packageCode";
//统计方式
public static final String GENERATE_TYPE = "generateType";
//箱类别代号
public static final String PACK_CODE = "packCode";
//包装条码编码规则
public static final String PACKAGE_BARCODE_RULE = "packageBarcodeRule";
//包装条码模板
public static final String PACKAGE_TEMPLATE = "packageTemplate";
//是否默认
public static final String DEFAULT_FLAG = "defaultFlag";
//零件类型
public static final String PART_TYPE = "partType";
//时间[开始/结束]条件
public static final String START_TIME_START = "startTimeStart";
@ -251,10 +209,6 @@ public class MesExtConstWords {
public static final String CREATE_DATE_TIME_END = "createDatetimeEnd";
public static final String MODIFY_DATE_TIME_START = "modifyDatetimeStart";
public static final String MODIFY_DATE_TIME_END = "modifyDatetimeEnd";
public static final String COMPLETE_DATE_TIME_START = "completeDateTimeStart";
public static final String COMPLETE_DATE_TIME_END = "completeDateTimeEnd";
public static final String INSPECTION_DATE_START = "inspectionDateStart";
public static final String INSPECTION_DATE_END = "inspectionDateEnd";
//0
public static final int ZERO = 0;
@ -264,8 +218,6 @@ public class MesExtConstWords {
public static final int ONE = 1;
//"1"
public static final String ONE_STR = "1";
//4
public static final Integer FOUR = 4;
// 10
public static final Integer TEN = 10;
//""
@ -446,12 +398,5 @@ public class MesExtConstWords {
//非排序工单关闭是否关闭试制单
public static final String CLOSE_P_WORK_ORDER = "CLOSE_P_WORK_ORDER";
//MES汇报查询BOM是否携带结束查询条件
public static final String MES_REPORT_FIND_BOM_WITH_EFFENDTIME = "MES_REPORT_FIND_BOM_WITH_EFFENDTIME";
//螺钉包保存生产版本标记
public static final String SAVE_PRODUCT_VERSION_FLAG = "ZFBT";
//排序线不能做报工调整ESD属性类型
public static final String NOT_ALLOW_WRITE_OFF = "NOT_ALLOW_WRITE_OFF";
}

Loading…
Cancel
Save