diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesLabelTemplateService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesLabelTemplateService.java index b08eb00..86123a7 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesLabelTemplateService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesLabelTemplateService.java @@ -3,6 +3,10 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateFieldInfo; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateFieldValue; + +import java.util.List; /** * @Description : 打印模板 @@ -16,4 +20,12 @@ public interface IMesLabelTemplateService extends IBaseMesService queryMesLabelTemplateParamField(MesLabelTemplateFieldInfo request); + + void saveMesLabelTemplateParamField(List templateFieldInfos); + + List queryMesLabelTemplateParamPartValue(String partNo, String labelTemplate, String organizeCode); + + void saveMesLabelTemplateParamPartValue(List templateFieldValues); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesLabelTemplateController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesLabelTemplateController.java index 7b1c2c1..2afe79f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesLabelTemplateController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesLabelTemplateController.java @@ -7,6 +7,8 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplate; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateFieldInfo; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateFieldValue; import cn.estsh.i3plus.pojo.mes.bean.MesSpotCheckOrder; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -18,9 +20,9 @@ import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * @Description : 打印模板 @@ -50,4 +52,53 @@ public class MesLabelTemplateController extends BaseMesController templateFieldInfos) { + try { + mesLabelTemplateService.saveMesLabelTemplateParamField(templateFieldInfos); + return ResultBean.success("保存成功"); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @GetMapping("/query-param-part-value") + @ApiOperation(value = "查询模板明细字段零件内容") + public ResultBean queryMesLabelTemplateParamPartValue(String partNo, String labelTemplate, String organizeCode) { + try { + return ResultBean.success("查询成功").setResultList(mesLabelTemplateService.queryMesLabelTemplateParamPartValue(partNo, labelTemplate, organizeCode)); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @PostMapping("/save-param-field-value") + @ApiOperation(value = "保存模板明细字段零件内容") + public ResultBean saveMesLabelTemplateParamPartValue(@RequestBody List templateFieldValues) { + try { + mesLabelTemplateService.saveMesLabelTemplateParamPartValue(templateFieldValues); + return ResultBean.success("保存成功"); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java index 9ce81aa..4d5cf27 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesLabelTemplateServiceImpl.java @@ -1,7 +1,9 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesLabelTemplateService; +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.util.MesPcnConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; @@ -11,14 +13,23 @@ 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.MesLabelTemplate; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateFieldInfo; +import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateFieldValue; import cn.estsh.i3plus.pojo.mes.bean.MesLabelTemplateParam; +import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateFieldInfoRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateFieldValueRepository; import cn.estsh.i3plus.pojo.mes.repository.MesLabelTemplateParamRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.util.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.TreeMap; /** * @Description : 打印模板 @@ -33,6 +44,13 @@ public class MesLabelTemplateServiceImpl extends BaseMesService queryMesLabelTemplateParamField(MesLabelTemplateFieldInfo request) { + List result = new ArrayList<>(); + // 根据模板代码查询模板参数信息 + List templateParamList = mesLabelTemplateParamRDao.findByProperty( + new String[]{"templateCode", MesPcnConstWords.IS_VALID, MesPcnConstWords.IS_DELETED, MesExtConstWords.ORGANIZE_CODE}, + new Object[]{request.getTemplateCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), + CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),request.getOrganizeCode()}); + + if (CollectionUtils.isEmpty(templateParamList)) { + return result; + } + + Map templateParamMap = new TreeMap<>(); + for (MesLabelTemplateParam param : templateParamList) { + templateParamMap.putIfAbsent(param.getTemplateParam(), param); + } + List templateFieldInfos = labelTemplateFieldInfoRDao.findByProperty( + new String[]{"templateCode", MesPcnConstWords.IS_VALID, MesPcnConstWords.IS_DELETED, MesExtConstWords.ORGANIZE_CODE}, + new Object[]{request.getTemplateCode(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), + CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),request.getOrganizeCode()}); + if (!CollectionUtils.isEmpty(templateFieldInfos)) { + for (MesLabelTemplateFieldInfo templateFieldInfo : templateFieldInfos) { + if (StringUtil.isEmpty(templateFieldInfo.getTemplateParam())) { + continue; + } + if (templateParamMap.remove(templateFieldInfo.getTemplateParam()) != null) { + result.add(templateFieldInfo); + } + } + } + for (Map.Entry entry : templateParamMap.entrySet()) { + MesLabelTemplateParam param = entry.getValue(); + MesLabelTemplateFieldInfo fieldInfo = new MesLabelTemplateFieldInfo(); + fieldInfo.setTemplateId(param.getTemplateId()); + fieldInfo.setTemplateParam(param.getTemplateParam()); + fieldInfo.setTemplateCode(param.getTemplateCode()); + fieldInfo.setOrganizeCode(param.getOrganizeCode()); + result.add(fieldInfo); + } + return result; + } + + @Override + public void saveMesLabelTemplateParamField(List templateFieldInfos) { + if (CollectionUtils.isEmpty(templateFieldInfos)) { + return; + } + + MesLabelTemplateFieldInfo request = templateFieldInfos.get(0); + final String username = request.getCreateUser(); + if (StringUtil.isEmpty(username)) { + MesException.throwMesBusiException("用户名不能为空"); + } + Map templateFieldInfoMap = new TreeMap<>(); + for (MesLabelTemplateFieldInfo info : templateFieldInfos) { + templateFieldInfoMap.putIfAbsent(info.getTemplateParam(), info); + } + + List saveFieldInfos = new ArrayList<>(); + List oldFieldInfos = labelTemplateFieldInfoRDao.findByProperty( + new String[]{"templateCode", MesExtConstWords.ORGANIZE_CODE}, + new Object[]{request.getTemplateCode(), request.getOrganizeCode()}); + if (!CollectionUtils.isEmpty(oldFieldInfos)) { + for (MesLabelTemplateFieldInfo oldFieldInfo : oldFieldInfos) { + if (StringUtil.isEmpty(oldFieldInfo.getTemplateParam())) { + oldFieldInfo.setIsValid(CommonEnumUtil.IS_VAILD.INVAILD.getValue()); + oldFieldInfo.setRemark("模板参数字段名为空"); + saveFieldInfos.add(oldFieldInfo); + continue; + } + MesLabelTemplateFieldInfo templateFieldInfo = templateFieldInfoMap.remove(oldFieldInfo.getTemplateParam()); + if (templateFieldInfo != null) { + oldFieldInfo.setTemplateId(templateFieldInfo.getTemplateId()); + oldFieldInfo.setTemplateFieldType(templateFieldInfo.getTemplateFieldType()); + oldFieldInfo.setTemplateFieldText(templateFieldInfo.getTemplateFieldText()); + oldFieldInfo.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); + oldFieldInfo.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + } else { + oldFieldInfo.setIsValid(CommonEnumUtil.IS_VAILD.INVAILD.getValue()); + oldFieldInfo.setRemark("模板参数字段被移除"); + } + ConvertBean.serviceModelUpdate(oldFieldInfo, username); + saveFieldInfos.add(oldFieldInfo); + } + } + + for (Map.Entry entry : templateFieldInfoMap.entrySet()) { + MesLabelTemplateFieldInfo fieldInfo = entry.getValue(); + ConvertBean.serviceModelInitialize(fieldInfo, username); + saveFieldInfos.add(fieldInfo); + } + + labelTemplateFieldInfoRDao.saveAll(saveFieldInfos); + } + + @Override + public List queryMesLabelTemplateParamPartValue(String partNo, String labelTemplate, String organizeCode) { + if (StringUtil.isEmpty(labelTemplate)) { + MesException.throwMesBusiException("零件号【%s】未维护\"零件条码匹配模板\"字段值", partNo); + } + + List result = new ArrayList<>(); + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean); + + List templateFieldInfos = labelTemplateFieldInfoRDao.findByProperty( + new String[]{"templateCode", "templateFieldType", MesPcnConstWords.IS_VALID, MesPcnConstWords.IS_DELETED, MesExtConstWords.ORGANIZE_CODE}, + new Object[]{labelTemplate, MesExtEnumUtil.LABEL_TEMPLATE_FIELD_TYPE.CUSTOM.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), + CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), organizeCode}); + Map templateFieldInfoMap = new TreeMap<>(); + for (MesLabelTemplateFieldInfo info : templateFieldInfos) { + templateFieldInfoMap.putIfAbsent(info.getTemplateParam(), info); + } + + List fieldValueList = labelTemplateFieldValueRDao.findByProperty( + new String[]{"partNo", "templateCode", MesPcnConstWords.IS_VALID, MesPcnConstWords.IS_DELETED, MesExtConstWords.ORGANIZE_CODE}, + new Object[]{partNo, labelTemplate, CommonEnumUtil.IS_VAILD.VAILD.getValue(), + CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), organizeCode}); + if (!CollectionUtils.isEmpty(fieldValueList)) { + for (MesLabelTemplateFieldValue fieldValue : fieldValueList) { + if (StringUtil.isEmpty(fieldValue.getTemplateParam())) { + continue; + } + MesLabelTemplateFieldInfo templateFieldInfo = templateFieldInfoMap.remove(fieldValue.getTemplateParam()); + if (templateFieldInfo != null) { + MesLabelTemplateFieldValue field = new MesLabelTemplateFieldValue(); + field.setPartNo(partNo); + field.setTemplateCode(templateFieldInfo.getTemplateCode()); + field.setTemplateParam(templateFieldInfo.getTemplateParam()); + field.setTemplateFieldText(templateFieldInfo.getTemplateFieldText()); + field.setFieldValue(fieldValue.getFieldValue()); + field.setOrganizeCode(organizeCode); + result.add(field); + } + } + } + + for (Map.Entry entry : templateFieldInfoMap.entrySet()) { + MesLabelTemplateFieldInfo fieldInfo = entry.getValue(); + MesLabelTemplateFieldValue fieldValue = new MesLabelTemplateFieldValue(); + fieldValue.setPartNo(partNo); + fieldValue.setTemplateCode(fieldInfo.getTemplateCode()); + fieldValue.setTemplateParam(fieldInfo.getTemplateParam()); + fieldValue.setTemplateFieldText(fieldInfo.getTemplateFieldText()); + fieldValue.setOrganizeCode(organizeCode); + result.add(fieldValue); + } + return result; + } + + @Override + public void saveMesLabelTemplateParamPartValue(List templateFieldValues) { + if (CollectionUtils.isEmpty(templateFieldValues)) { + return; + } + MesLabelTemplateFieldValue request = templateFieldValues.get(0); + final String username = request.getCreateUser(); + if (StringUtil.isEmpty(username)) { + MesException.throwMesBusiException("用户名不能为空"); + } + Map templateFieldInfoMap = new TreeMap<>(); + for (MesLabelTemplateFieldValue value : templateFieldValues) { + templateFieldInfoMap.putIfAbsent(value.getTemplateParam(), value); + } + + List saveFieldValues = new ArrayList<>(); + List oldFieldValues = labelTemplateFieldValueRDao.findByProperty( + new String[]{"partNo", "templateCode", MesExtConstWords.ORGANIZE_CODE}, + new Object[]{request.getPartNo(), request.getTemplateCode(), request.getOrganizeCode()}); + if (!CollectionUtils.isEmpty(oldFieldValues)) { + for (MesLabelTemplateFieldValue oldFieldValue : oldFieldValues) { + if (StringUtil.isEmpty(oldFieldValue.getTemplateParam())) { + oldFieldValue.setIsValid(CommonEnumUtil.IS_VAILD.INVAILD.getValue()); + oldFieldValue.setRemark("模板参数字段名为空"); + saveFieldValues.add(oldFieldValue); + continue; + } + MesLabelTemplateFieldValue templateFieldInfo = templateFieldInfoMap.remove(oldFieldValue.getTemplateParam()); + if (templateFieldInfo != null) { + oldFieldValue.setFieldValue(templateFieldInfo.getFieldValue()); + oldFieldValue.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); + oldFieldValue.setIsDeleted(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + } else { + oldFieldValue.setIsValid(CommonEnumUtil.IS_VAILD.INVAILD.getValue()); + oldFieldValue.setRemark("模板参数字段被移除"); + } + ConvertBean.serviceModelUpdate(oldFieldValue, username); + saveFieldValues.add(oldFieldValue); + } + } + + for (Map.Entry entry : templateFieldInfoMap.entrySet()) { + MesLabelTemplateFieldValue fieldInfo = entry.getValue(); + ConvertBean.serviceModelInitialize(fieldInfo, username); + saveFieldValues.add(fieldInfo); + } + + labelTemplateFieldValueRDao.saveAll(saveFieldValues); + } }