diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteDetailService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteDetailService.java new file mode 100644 index 0000000..a5fc0b5 --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteDetailService.java @@ -0,0 +1,21 @@ +package cn.estsh.i3plus.ext.mes.api.base; + +import cn.estsh.i3plus.pojo.mes.bean.MesCraftRouteDetail; + +import java.util.List; + +/** + * @Description :工艺路线明细 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/5/8 16:48 + * @Modify: + **/ +public interface IMesCraftRouteDetailService extends IBaseMesService { + + void insertMesCraftRouteDetailBatch(List mesCraftRouteDetailList); + + void updateMesCraftRouteDetailBatch(List mesCraftRouteDetailList); + + void deleteMesCraftRouteDetailBatch(String organizeCode, String userName, String craftRouteCode); +} diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteService.java index e8e9ca9..d19ded1 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftRouteService.java @@ -10,4 +10,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCraftRoute; * @Modify: **/ public interface IMesCraftRouteService extends IBaseMesService { + + MesCraftRoute getMesCraftRouteByCode(String code, String organizeCode); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftService.java index c67cec6..f0a2fc8 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesCraftService.java @@ -1,6 +1,9 @@ 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.MesCraft; +import io.swagger.annotations.ApiOperation; /** * @Description : 工艺信息 @@ -11,5 +14,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCraft; **/ public interface IMesCraftService extends IBaseMesService { - + @ApiOperation("根据工艺流程代码查询工艺") + ListPager findMesCraft(MesCraft mesCraft, Pager pager); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftController.java index 1df82a3..6102aaa 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftController.java @@ -1,8 +1,18 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesCraftService; +import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +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.MesCraft; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +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; @@ -13,8 +23,25 @@ import org.springframework.web.bind.annotation.RestController; * @CreateDate 2024/5/11 13:52 * @Modify: **/ -@Api("工艺信息") +@Api(description = "工艺信息") @RestController @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCraft") public class MesCraftController extends BaseMesController { + + @Autowired + private IMesCraftService mesCraftService; + + @GetMapping(value = "/find-mes-craft") + @ApiOperation(value = "查询信息带分页", notes = "组合查询,外带分页功能") + public ResultBean findMesCraft(MesCraft bean, Pager pager) { + try { + bean.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + ListPager listPager = mesCraftService.findMesCraft(bean, pager); + return ResultBean.success("操作成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setListPager(listPager); + } catch (ImppBusiException e) { + return ResultBean.fail(e); + } + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteDetailController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteDetailController.java new file mode 100644 index 0000000..d112498 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesCraftRouteDetailController.java @@ -0,0 +1,71 @@ +package cn.estsh.i3plus.ext.mes.apiservice.controller.base; + +import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteDetailService; +import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesCraftRouteDetail; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +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.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@Api(description = "工艺路线明细") +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCraftRouteDetail") +public class MesCraftRouteDetailController extends BaseMesController { + + @Autowired + private IMesCraftRouteDetailService mesCraftRouteDetailService; + + @PostMapping(value = "/insert-batch") + @ApiOperation(value = "批量新增") + public ResultBean insertMesCraftRouteDetailBatch(@RequestBody List mesCraftRouteDetailList) { + try { + mesCraftRouteDetailService.insertMesCraftRouteDetailBatch(mesCraftRouteDetailList); + return ResultBean.success("新增成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException e) { + return ResultBean.fail(e).build(); + } catch (Exception e) { + return ResultBean.fail(e); + } + } + + @PostMapping(value = "/update-batch") + @ApiOperation(value = "批量修改") + public ResultBean updateMesCraftRouteDetailBatch(@RequestBody List mesCraftRouteDetailList) { + try { + mesCraftRouteDetailService.updateMesCraftRouteDetailBatch(mesCraftRouteDetailList); + return ResultBean.success("修改成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException e) { + return ResultBean.fail(e).build(); + } catch (Exception e) { + return ResultBean.fail(e); + } + } + + @PostMapping(value = "/delete-batch") + @ApiOperation(value = "批量删除") + public ResultBean deleteMesCraftRouteDetailBatch(String craftRouteCode) { + try { + String organizeCode = AuthUtilExt.getOrganizeCode(); + String userName = AuthUtilExt.getUserName(); + mesCraftRouteDetailService.deleteMesCraftRouteDetailBatch(organizeCode, userName, craftRouteCode); + return ResultBean.success("新增成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException e) { + return ResultBean.fail(e).build(); + } catch (Exception e) { + return ResultBean.fail(e); + } + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesCraftDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesCraftDao.java new file mode 100644 index 0000000..4e7d3f0 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesCraftDao.java @@ -0,0 +1,20 @@ +package cn.estsh.i3plus.ext.mes.apiservice.dao; + +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.mes.bean.MesCraft; +import io.swagger.annotations.ApiOperation; + +/** + * @Description : 工艺信息 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/5/11 13:54 + * @Modify: + **/ +public interface IMesCraftDao { + + @ApiOperation("根据工艺流程代码查询工艺") + ListPager findMesCraft(MesCraft mesCraft, Pager pager); + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesCraftDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesCraftDaoImpl.java new file mode 100644 index 0000000..f6bec4d --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesCraftDaoImpl.java @@ -0,0 +1,77 @@ +package cn.estsh.i3plus.ext.mes.apiservice.daoimpl; + +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCraftDao; +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.base.util.StringUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesCraft; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.persistence.EntityManager; +import javax.persistence.Query; +import java.util.ArrayList; + +/** + * @Description :工艺信息 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/5/6 15:52 + * @Modify: + **/ +@Service +@Slf4j +public class MesCraftDaoImpl implements IMesCraftDao { + + @Autowired + private EntityManager entityManager; + + @Override + @ApiOperation("根据工艺流程代码查询工艺") + public ListPager findMesCraft(MesCraft mesCraft, Pager pager) { + + StringBuffer hql = new StringBuffer("from MesCraft mc" + + " left join MesProcessCraftCfg pc on mc.craftCode = pc.craftCode " + + " left join MesRouteProcess rp on pc.processCode = rp.processCode " + + " where mc.isDeleted=:isDeleted and mc.isValid = :isValid and mc.organizeCode = :organizeCode " + + " and pc.isDeleted=:isDeleted and pc.isValid = :isValid and pc.organizeCode = :organizeCode " + + " and rp.isDeleted=:isDeleted and rp.isValid = :isValid and rp.organizeCode = :organizeCode "); + if (!StringUtil.isEmpty(mesCraft.getRouteCode())) { + hql.append(" and rp.routeCode = :routeCode"); + } + if (!StringUtil.isEmpty(mesCraft.getCraftCode())) { + hql.append(" and mc.craftCode = :craftCode"); + } + if (!StringUtil.isEmpty(mesCraft.getCraftName())) { + hql.append(" and mc.craftName like '%").append(mesCraft.getCraftName()).append("%' "); + } + Query query = entityManager.createQuery("select mc " + hql, MesCraft.class); + Query countQuery = entityManager.createQuery("select count(1) " + hql, Long.class); + query.setParameter("organizeCode", mesCraft.getOrganizeCode()); + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + + countQuery.setParameter("organizeCode", mesCraft.getOrganizeCode()); + countQuery.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + countQuery.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + if (!StringUtil.isEmpty(mesCraft.getRouteCode())) { + query.setParameter("routeCode", mesCraft.getRouteCode()); + countQuery.setParameter("routeCode", mesCraft.getRouteCode()); + } + if (!StringUtil.isEmpty(mesCraft.getCraftCode())) { + query.setParameter("craftCode", mesCraft.getCraftCode()); + countQuery.setParameter("craftCode", mesCraft.getCraftCode()); + } + int count = Integer.parseInt(String.valueOf(countQuery.getSingleResult())); + pager = PagerHelper.getPager(pager, count); + if (count <= 0) { + return new ListPager<>(new ArrayList<>(), pager); + } + query.setFirstResult(pager.getStartRow()).setMaxResults(pager.getPageSize()); + return new ListPager<>(query.getResultList(), pager); + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/BaseMesService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/BaseMesService.java index 195b102..dd17887 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/BaseMesService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/BaseMesService.java @@ -68,6 +68,7 @@ public abstract class BaseMesService implements IBaseMesServ @Override public List findAll(DdlPackBean packBean) { + setPackQueryBean(packBean); return baseRDao.findByHqlWhere(packBean); } @@ -168,6 +169,9 @@ public abstract class BaseMesService implements IBaseMesServ protected void setPackQueryBean(T bean, DdlPackBean packBean) { } + protected void setPackQueryBean(DdlPackBean packBean) { + } + protected void onDeleteId(Long id) { } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteDetailServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteDetailServiceImpl.java new file mode 100644 index 0000000..7f321d6 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteDetailServiceImpl.java @@ -0,0 +1,207 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.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.api.base.IMesCraftService; +import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt; +import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesCraft; +import cn.estsh.i3plus.pojo.mes.bean.MesCraftRoute; +import cn.estsh.i3plus.pojo.mes.bean.MesCraftRouteDetail; +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 org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * @Description : 工艺路线明细 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/5/12 15:13 + * @Modify: + **/ +@Service +@Slf4j +public class MesCraftRouteDetailServiceImpl extends BaseMesService implements IMesCraftRouteDetailService { + + @Autowired + private IMesCraftRouteService mesCraftRouteService; + + @Autowired + private IMesCraftService mesCraftService; + + + protected void setPackQueryBean(MesCraftRouteDetail bean, DdlPackBean packBean) { + DdlPreparedPack.getStringEqualPack(bean.getCraftRouteCode(), "craftRouteCode", packBean); + DdlPreparedPack.getStringEqualPack(bean.getCraftCode(), "craftCode", packBean); + DdlPreparedPack.getStringLikerPack(bean.getCraftName(), "craftName", packBean); + packBean.setOrderByStr(" order by seq asc "); + } + + protected void setPackQueryBean(DdlPackBean packBean) { + packBean.setOrderByStr(" order by seq asc "); + } + + @Override + public void insertMesCraftRouteDetailBatch(List mesCraftRouteDetailList) { + //校验数据 + checkData(mesCraftRouteDetailList, true); + //校验工艺 + checkCraft(mesCraftRouteDetailList, mesCraftRouteDetailList.iterator().next().getRouteCode()); + //保存数据 + insertBatch(mesCraftRouteDetailList); + } + + + @Override + public void updateMesCraftRouteDetailBatch(List mesCraftRouteDetailList) { + String organizeCode = AuthUtilExt.getOrganizeCode(); + String userName = AuthUtilExt.getUserName(); + MesCraftRouteDetail craftRouteDetail = mesCraftRouteDetailList.iterator().next(); + //根据工艺流程代码查询工艺流程明细明细信息 + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(craftRouteDetail.getCraftRouteCode(), "craftRouteCode", ddlPackBean); + List oldMesCraftRouteDetailList = findAll(ddlPackBean); + //明细不存 新增 + if (CollectionUtils.isEmpty(oldMesCraftRouteDetailList)) { + insertMesCraftRouteDetailBatch(mesCraftRouteDetailList); + return; + } + //校验数据 + checkData(mesCraftRouteDetailList, false); + //校验工艺 + boolean isCheckCraft = false; + String routeCode = null; + //判断是否存在新增数据 + List insertMesCraftRouteDetails = mesCraftRouteDetailList.stream().filter(t -> Objects.isNull(t.getId())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(insertMesCraftRouteDetails)) { + isCheckCraft = true; + insertMesCraftRouteDetails.forEach(t -> { + ConvertBean.serviceModelInitialize(t, userName); + }); + routeCode = insertMesCraftRouteDetails.iterator().next().getRouteCode(); + } + //判断是否修改工艺代码 + List updateCraft = mesCraftRouteDetailList.stream().filter(t -> !Objects.isNull(t.getId()) + && !Objects.isNull(t.getRouteCode())).collect(Collectors.toList()); + if (!CollectionUtils.isEmpty(updateCraft)) { + isCheckCraft = true; + routeCode = updateCraft.iterator().next().getRouteCode(); + } + if (isCheckCraft) { + checkCraft(mesCraftRouteDetailList, routeCode); + } + //保存数据 + //新增数据直接保存 + if (!CollectionUtils.isEmpty(insertMesCraftRouteDetails)) { + insertBatch(insertMesCraftRouteDetails); + } + //修改或者删除 + for (MesCraftRouteDetail mesCraftRouteDetail : oldMesCraftRouteDetailList) { + //判断是否删除数据 + boolean exist = mesCraftRouteDetailList.stream().anyMatch(t -> mesCraftRouteDetail.getId().equals(t.getId())); + if (!exist) { + deleteWeaklyById(mesCraftRouteDetail.getId(), mesCraftRouteDetail.getModifyUser()); + } else { + update(mesCraftRouteDetail); + } + } + + } + + @Override + public void deleteMesCraftRouteDetailBatch(String organizeCode, String userName, String craftRouteCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(craftRouteCode, "craftRouteCode", ddlPackBean); + baseRDao.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "isDeleted"}, + new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()}, ddlPackBean); + } + + private void checkCraft(List mesCraftRouteDetailList, String routeCode) { + //获取工艺路线信息 + MesCraftRouteDetail craftRouteDetailFist = mesCraftRouteDetailList.iterator().next(); + String organizeCode = craftRouteDetailFist.getOrganizeCode(); + MesCraftRoute mesCraftRoute = mesCraftRouteService.getMesCraftRouteByCode(craftRouteDetailFist.getCraftRouteCode(), organizeCode); + //排序 + if (MesExtEnumUtil.LINE_TYPE.LINE_TYPE_10.getValue() == mesCraftRoute.getCraftRouteType()) { + //根据路线代码查询可选的工艺信息 + List craftCodeList = findMesCraftCode(organizeCode, routeCode); + //判断工艺是否属于同一流程 + mesCraftRouteDetailList.forEach(mesCraftRouteDetail -> { + if (!craftCodeList.contains(mesCraftRouteDetail.getCraftCode())) { + MesException.throwMesBusiException("工艺【%s】与其他工艺不属于同一流程【%s】", mesCraftRouteDetail.getCraftName(),routeCode); + } + }); + //非排序 + } else if (MesExtEnumUtil.LINE_TYPE.LINE_TYPE_20.getValue() != mesCraftRoute.getCraftRouteType()) { + MesException.throwMesBusiException("工艺路线类型不存在"); + } + } + + private void checkData(List mesCraftRouteDetailList, boolean isInsert) { + List seqList = new ArrayList<>(); + List craftCodeList = new ArrayList<>(); + String userName = AuthUtilExt.getUserName(); + //属性校验 + mesCraftRouteDetailList.forEach(mesCraftRouteDetail -> { + ValidatorBean.checkNotNull(mesCraftRouteDetail.getCraftRouteCode(), "工艺路线代码不能为空"); + ValidatorBean.checkNotNull(mesCraftRouteDetail.getCraftCode(), "工艺代码不能为空"); + ValidatorBean.checkNotNull(mesCraftRouteDetail.getCraftName(), "工艺名称不能为空"); + ValidatorBean.checkNotZero(mesCraftRouteDetail.getSeq(), "顺序不能为0"); + //校验顺序号不能重复 + if (seqList.contains(mesCraftRouteDetail.getSeq())) { + MesException.throwMesBusiException("顺序号不能重复"); + } else { + seqList.add(mesCraftRouteDetail.getSeq()); + } + //校验工艺是否重复 + if (craftCodeList.contains(mesCraftRouteDetail.getCraftCode())) { + MesException.throwMesBusiException("工艺代码【%s】重复", mesCraftRouteDetail.getCraftCode()); + } else { + craftCodeList.add(mesCraftRouteDetail.getCraftCode()); + } + //校验已完成工序最大重复次数 >= 0 + if (mesCraftRouteDetail.getRepeatTimes() < 0) { + MesException.throwMesBusiException("已完成工序最大重复次数不能小于0"); + } + mesCraftRouteDetail.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + if (isInsert) { + ConvertBean.serviceModelInitialize(mesCraftRouteDetail, userName); + } else { + ConvertBean.serviceModelUpdate(mesCraftRouteDetail, userName); + } + + }); + + } + + private List findMesCraftCode(String organizeCode, String routeCode) { + //封装查询条件 + MesCraft mesCraft = new MesCraft(); + mesCraft.setOrganizeCode(organizeCode); + mesCraft.setRouteCode(routeCode); + //封装分页信息 + Pager pager = new Pager(); + pager.setCurrentPage(0); + pager.setPageSize(100); + List mesCraftList = mesCraftService.findMesCraft(mesCraft, pager).getObjectList(); + if (CollectionUtils.isEmpty(mesCraftList)) { + MesException.throwMesBusiException("工艺流程【%s】没有对应的工艺信息",routeCode); + } + return mesCraftList.stream().map(MesCraft::getCraftCode).collect(Collectors.toList()); + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteServiceImpl.java index 692c668..ee78e4f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteServiceImpl.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesCraftRouteService; +import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.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; @@ -10,6 +11,7 @@ import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; + /** * @Description : 工艺路线 * @Reference : @@ -60,4 +62,15 @@ public class MesCraftRouteServiceImpl extends BaseMesService impl .build(); } } + + @Override + public MesCraftRoute getMesCraftRouteByCode(String code, String organizeCode) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(code, "craftRouteCode", ddlPackBean); + MesCraftRoute mesCraftRoute = baseRDao.getByProperty(ddlPackBean); + if (null == mesCraftRoute) { + MesException.throwMesBusiException("工艺路线代码【%s】不存在,请检查数据", code); + } + return mesCraftRoute; + } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftServiceImpl.java index e5b8e56..08a52b8 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftServiceImpl.java @@ -1,17 +1,18 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; import cn.estsh.i3plus.ext.mes.api.base.IMesCraftService; -import cn.estsh.i3plus.ext.mes.api.base.IMesProcessCraftCfgService; +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesCraftDao; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesCraft; -import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel; -import cn.estsh.i3plus.pojo.mes.bean.MesProcessCraftCfg; 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; /** @@ -25,6 +26,9 @@ import org.springframework.stereotype.Service; @Slf4j public class MesCraftServiceImpl extends BaseMesService implements IMesCraftService { + @Autowired + private IMesCraftDao mesCraftDao; + protected void setPackQueryBean(MesCraft bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getCraftCode(), "craftCode", packBean); DdlPreparedPack.getStringLikerPack(bean.getCraftName(), "craftName", packBean); @@ -64,4 +68,9 @@ public class MesCraftServiceImpl extends BaseMesService implements IMe .build(); } } + + @Override + public ListPager findMesCraft(MesCraft mesCraft, Pager pager) { + return mesCraftDao.findMesCraft(mesCraft, pager); + } }