From 971c719065b72bed4c668a33b834b286f1179f83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E7=AC=91=E7=9D=80=E9=9D=A2=E5=AF=B9=E6=98=8E?= =?UTF-8?q?=E5=A4=A9?= <752558143@qq.com> Date: Tue, 28 May 2024 19:45:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E4=B8=BB=E6=95=B0=E6=8D=AEbu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ext/mes/api/busi/IProdExtOrgService.java | 303 +++++++++ .../controller/base/BaseMesController.java | 2 +- .../controller/base/ExtProdOrgController.java | 25 +- .../ext/mes/apiservice/dao/IEquipmentExtDao.java | 78 +++ .../mes/apiservice/daoimpl/EquipmentExtDao.java | 432 +++++++++++++ .../base/MesWcEquipmentServiceImpl.java | 2 +- .../serviceimpl/busi/ProdExtOrgService.java | 675 +++++++++++++++++++++ 7 files changed, 1503 insertions(+), 14 deletions(-) create mode 100644 modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IProdExtOrgService.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IEquipmentExtDao.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/EquipmentExtDao.java create mode 100644 modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/ProdExtOrgService.java diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IProdExtOrgService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IProdExtOrgService.java new file mode 100644 index 0000000..bb6324f --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/busi/IProdExtOrgService.java @@ -0,0 +1,303 @@ +package cn.estsh.i3plus.ext.mes.api.busi; + +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.mes.bean.*; +import cn.estsh.i3plus.pojo.mes.model.ProdOrgModel; +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +/** + * @Description : 通用业务方法的调度接口 + * @Reference : + * @Author : jack.jia + * @CreateDate : 2019-04-11 + * @Modify: + **/ +public interface IProdExtOrgService { + + /** + * 查询MES组织模型数据返回树结构 + * + * @param organizeCode 组织代码 + * @return 组织模型数据返回树结构 + */ + @ApiOperation(value = "查询MES组织模型数据返回树结构") + List queryMesDataTree(String organizeCode); + + /** + * 新增mes组织模型信息(区域,生产线,工位) + * + * @param prodOrgModel 组织模型信息 + * @return 新增后的组织模型信息 + */ + Object insertMesProdOrg(ProdOrgModel prodOrgModel); + + /*************MES区域服务*****start***********/ + + /** + * 按条件分页查询区域信息 + * + * @param mesArea 区域信息 + * @param pager 分页条件 + * @return 分页数据 + */ + @ApiOperation(value = "按条件分页查询区域信息") + ListPager queryMesAreaByPager(MesArea mesArea, Pager pager); + + /** + * 按条件查询区域所有数据 + * + * @param mesArea 区域信息查询条件 + * @return 区域所有数据 + */ + @ApiOperation(value = "按条件查询区域所有数据") + List queryMesAreaByProperties(MesArea mesArea); + + /** + * 更新区域 + * + * @param mesArea 区域 + * @return 更新后的区域 + */ + @ApiOperation(value = "更新区域", notes = "更新区域") + MesArea updateMesArea(MesArea mesArea); + + /** + * 更新区域状态 + * + * @param id 区域id + * @param status 更新状态 + * @param userName 操作人 + * @return 操作行数 + */ + @ApiOperation(value = "更新区域状态") + int updateMesAreaStatusById(Long id, int status, String userName); + + /*************MES区域服务*****end***********/ + + /*************MES生产线服务*****start***********/ + + /** + * 按条件分页查询生产线信息 + * + * @param mesWorkCenter 产线查询条件 + * @param pager 分页条件 + * @return 分页数据 + */ + @ApiOperation(value = "按条件分页查询生产线信息") + ListPager queryWorkCenterByPager(MesWorkCenter mesWorkCenter, Pager pager); + + /** + * 按条件查询生产线所有数据 + * + * @param workCenter 产线查询条件 + * @return 数据集合 + */ + @ApiOperation(value = "按条件查询生产线所有数据") + List queryMesWorkCenterByProperties(MesWorkCenter workCenter); + + /** + * 按org查询生产线所有数据 + * + * @param org 组织代码 + * @return 生产线所有数据 + */ + @ApiOperation(value = "按org查询生产线所有数据") + List queryMesWorkCenterByOrg(String org); + + /** + * 更新生产线信息 + * + * @param workCenter 产线 + * @return 更新后的产线信息 + */ + @ApiOperation(value = "更新生产线信息", notes = "更新生产线信息") + MesWorkCenter updateMesWorkCenter(MesWorkCenter workCenter); + + /** + * 更新生产线状态 + * + * @param id 产线id + * @param status 更新状态 + * @param userName 操作人 + * @return 操作行数 + */ + @ApiOperation(value = "更新生产线状态") + int updateMesCenterStatusById(Long id, int status, String userName); + + /*************MES生产线服务*****end***********/ + + /*************MES工位服务*****start***********/ + + /** + * 按条件分页查询工位信息 + * + * @param mesWorkCell 工位查询条件 + * @param pager 分页条件 + * @return 分页数据 + */ + @ApiOperation(value = "按条件分页查询工位信息") + ListPager queryWorkCellByPager(MesWorkCell mesWorkCell, Pager pager); + + /** + * 按条件查询工位所有数据 + * + * @param workCell 工位查询条件 + * @return 数据集合 + */ + @ApiOperation(value = "按条件查询工位所有数据") + List queryMesWorkCellByProperties(MesWorkCell workCell); + + /** + * 更新工位信息 + * + * @param workCell 工位信息 + * @return 更新后的工位信息 + */ + @ApiOperation(value = "更新工位信息", notes = "更新工位信息") + MesWorkCell updateMesWorkCell(MesWorkCell workCell); + + /** + * 更新工位状态 + * + * @param id 工位状态id + * @param status 更新状态 + * @param userName 操作人 + * @return 操作行数 + */ + @ApiOperation(value = "更新工位状态") + int updateMesCellStatusById(Long id, int status, String userName); + + /*************MES工位服务*****end***********/ + + /*************MES工位参数服务*****start***********/ + + /** + * 按条件分页查询工位参数信息 + * + * @param workCellParam 工位参数信息 + * @param pager 分页条件 + * @return 分页数据 + */ + @ApiOperation(value = "按条件分页查询工位参数信息") + ListPager queryMesWorkCellParamByPager(MesWorkCellParam workCellParam, Pager pager); + + /** + * 新增工位参数配置信息 + * + * @param workCellParam 工位参数信息 + * @return 新增后的工位参数信息 + */ + @ApiOperation(value = "新增工位参数信息", notes = "新增工位参数信息") + MesWorkCellParam insertMesWorkCellParam(MesWorkCellParam workCellParam); + + /** + * 更新工位参数配置信息 + * + * @param workCellParam 更新工位参数信息 + * @return 更新后的更新工位参数信息 + */ + @ApiOperation(value = "更新工位参数信息", notes = "更新工位参数信息") + MesWorkCellParam updateMesWorkCellParam(MesWorkCellParam workCellParam); + + /** + * 更新工位参数状态(启用、禁用) + * + * @param id 工位参数状态id + * @param status 更新状态 + * @param userName 操作人 + * @return 操作行数 + */ + @ApiOperation(value = "更新工位参数状态(启用、禁用)") + int updateMesWorkCellParamStatusById(Long id, int status, String userName); + + /*************MES工位参数服务*****end***********/ + + /*************MES工位参数配置服务*****start***********/ + + /** + * 按条件分页查询工位参数配置信息 + * + * @param workCellParamCfg 工位参数配置信息 + * @param pager 分页条件 + * @return 分页数据 + */ + @ApiOperation(value = "按条件分页查询工位参数配置信息") + ListPager queryMesWorkCellParamCfgByPager(MesWorkCellParamCfg workCellParamCfg, Pager pager); + + /** + * 新增工位参数配置信息 + * + * @param workCellParamCfg 工位参数配置信息 + * @return 新增后的工位参数配置信息 + */ + @ApiOperation(value = "新增工位参数配置信息", notes = "新增工位参数配置信息") + MesWorkCellParamCfg insertMesWorkCellParamCfg(MesWorkCellParamCfg workCellParamCfg); + + /** + * 更新工位参数配置信息 + * + * @param workCellParamCfg 工位参数配置信息 + * @return 更新后的工位参数配置信息 + */ + @ApiOperation(value = "更新工位参数配置信息", notes = "更新工位参数配置信息") + MesWorkCellParamCfg updateMesWorkCellParamCfg(MesWorkCellParamCfg workCellParamCfg); + + /** + * 更新工位参数配置状态(启用、禁用) + * + * @param id 工位参数配置信息id + * @param status 更新状态 + * @param userName 操作人 + * @return 操作行数 + */ + @ApiOperation(value = "更新工位参数配置状态(启用、禁用)") + int updateMesWorkCellParamCfgStatusById(Long id, int status, String userName); + + /*************MES工位参数配置服务*****end***********/ + + /*************MES工位队列服务*****start***********/ + + /** + * 按条件分页查询工位队列信息 + * + * @param workCellPoint 工位队列信息查询条件 + * @param pager 分页条件 + * @return 分页数据 + */ + @ApiOperation(value = "按条件分页查询工位队列信息") + ListPager queryMesWorkCellPointByPager(MesWorkCellPoint workCellPoint, Pager pager); + + /** + * 新增工位参数配置信息 + * + * @param workCellPoint 工位队列信息 + * @return 新增后的工位队列信息 + */ + @ApiOperation(value = "新增工位队列信息", notes = "新增工位队列信息") + MesWorkCellPoint insertMesWorkCellPoint(MesWorkCellPoint workCellPoint); + + /** + * 更新工位队列信息 + * + * @param workCellPoint 工位队列信息 + * @return 更新后的工位队列信息 + */ + @ApiOperation(value = "更新工位队列信息", notes = "更新工位队列信息") + MesWorkCellPoint updateMesWorkCellPoint(MesWorkCellPoint workCellPoint); + + /** + * 更新工位队列状态(启用、禁用) + * + * @param id 工位队列信息id + * @param status 更新状态 + * @param userName 操作人 + * @return 操作行数 + */ + @ApiOperation(value = "更新工位队列状态(启用、禁用)") + int updateMesWorkCellPointStatusById(Long id, int status, String userName); + + /*************MES工位队列服务*****end***********/ +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java index 17e38f1..7bb3b8f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java @@ -152,7 +152,7 @@ public abstract class BaseMesController extends BaseControll @ApiOperation(value = "查询信息带分页", notes = "组合查询,外带分页功能") public ResultBean queryByPager(T bean, Pager pager) { try { - bean.setOrganizeCode(AuthUtilExt.getOrganizeCode()); + bean.setOrganizeCode("CK01"); ListPager listPager = getBaseService().queryPager(bean, pager); return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/ExtProdOrgController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/ExtProdOrgController.java index 0ae39ba..5bed39e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/ExtProdOrgController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/ExtProdOrgController.java @@ -1,8 +1,10 @@ package cn.estsh.i3plus.ext.mes.apiservice.controller.base; +import cn.estsh.i3plus.ext.mes.api.base.IMesWcEquipmentService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkCellService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkCenterService; import cn.estsh.i3plus.ext.mes.api.busi.IEquipmentExtService; +import cn.estsh.i3plus.ext.mes.api.busi.IProdExtOrgService; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.mes.api.iservice.base.IProdOrgService; import cn.estsh.i3plus.mes.apiservice.util.MesCommConstWords; @@ -14,10 +16,7 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesArea; -import cn.estsh.i3plus.pojo.mes.bean.MesEquipment; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; +import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.ProdOrgExtModel; import cn.estsh.impp.framework.base.controller.MesBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; @@ -50,7 +49,7 @@ public class ExtProdOrgController extends MesBaseController { public static final Logger LOGGER = LoggerFactory.getLogger(ExtProdOrgController.class); @Autowired - private IProdOrgService prodOrgService; + private IProdExtOrgService prodOrgService; @Autowired private IEquipmentExtService mesEquipmentService; @@ -60,6 +59,8 @@ public class ExtProdOrgController extends MesBaseController { @Autowired private IMesWorkCellService mesWorkCellService; + @Autowired + private IMesWcEquipmentService mesWcEquipmentService; @GetMapping(value = "/mes-data-tree/query") @ApiOperation(value = "查询MES组织模型数据返回树结构") @@ -81,7 +82,7 @@ public class ExtProdOrgController extends MesBaseController { ListPager listPager = null; - ProdOrgExtModel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); + ProdOrgExtModel.setOrganizeCode("CK01"); //工厂 if (MesEnumUtil.PROD_ORG_LEVEL.LEVEL_ONE.getValue() == ProdOrgExtModel.getLevel()) { @@ -109,12 +110,12 @@ public class ExtProdOrgController extends MesBaseController { //工位下的设备 if (MesEnumUtil.PROD_ORG_LEVEL.LEVEL_FOUR.getValue() <= ProdOrgExtModel.getLevel()) { - MesEquipment equipment = new MesEquipment(); + MesWcEquipment equipment = new MesWcEquipment(); //这是用到的参数有id 必须使用org.springframework.beans.BeanUtils //如果使用org.apache.commons.beanutils.BeanUtils当id为null会默认转化为0 BeanUtils.copyProperties(ProdOrgExtModel, equipment); - listPager = mesEquipmentService.queryMesEquipmentByPagerOrg(equipment, pager); + listPager = mesWcEquipmentService.queryPager(equipment, pager); } if (null == listPager) { @@ -194,7 +195,7 @@ public class ExtProdOrgController extends MesBaseController { .build(); } - prodOrgService.updateMesAreaStatusById(id, status, AuthUtil.getSessionUser().getUserName(), AuthUtil.getOrganize().getOrganizeCode()); + prodOrgService.updateMesAreaStatusById(id, status, AuthUtil.getSessionUser().getUserName()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { @@ -214,7 +215,7 @@ public class ExtProdOrgController extends MesBaseController { .notNull(MesCommConstWords.AREA_CODE, mesArea.getAreaCode()) .notNull(MesCommConstWords.AREA_NAME, mesArea.getAreaName()); - prodOrgService.updateMesArea(mesArea, AuthUtil.getSessionUser().getUserName(), AuthUtil.getOrganize().getOrganizeCode()); + prodOrgService.updateMesArea(mesArea); return ResultBean.success("修改成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -304,7 +305,7 @@ public class ExtProdOrgController extends MesBaseController { .build(); } - prodOrgService.updateMesCenterStatusById(id, status, AuthUtil.getSessionUser().getUserName(), AuthUtil.getOrganize().getOrganizeCode()); + prodOrgService.updateMesCenterStatusById(id, status, AuthUtil.getSessionUser().getUserName()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { @@ -377,7 +378,7 @@ public class ExtProdOrgController extends MesBaseController { .build(); } - prodOrgService.updateMesCellStatusById(id, status, AuthUtil.getSessionUser().getUserName(), AuthUtil.getOrganize().getOrganizeCode()); + prodOrgService.updateMesCellStatusById(id, status, AuthUtil.getSessionUser().getUserName()); return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IEquipmentExtDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IEquipmentExtDao.java new file mode 100644 index 0000000..951c84b --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IEquipmentExtDao.java @@ -0,0 +1,78 @@ +package cn.estsh.i3plus.ext.mes.apiservice.dao; + +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipment; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; +import cn.estsh.i3plus.pojo.mes.model.MesEquipmentModel; + +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : wangjie + * @CreateDate : 2019-08-27 + * @Modify: + **/ +public interface IEquipmentExtDao { + + /** + * 获取设备分页数据 + * @param mesEquipment + * @param pager + * @return + */ + List queryMesEquipmentByPager(MesEquipment mesEquipment, Pager pager); + + /** + * 获取设备分页数据数量 + * @param mesEquipment + * @return + */ + int queryMesEquipmentByPagerCount(MesEquipment mesEquipment); + + /** + * 获取设备分页数据-组织模型 + * @param mesEquipment + * @param pager + * @return + */ + List queryMesEquipmentByPagerOrg(MesEquipment mesEquipment, Pager pager); + + /** + * 获取设备分页数据数量-组织模型 + * @param mesEquipment + * @return + */ + int queryMesEquipmentByPagerOrgCount(MesEquipment mesEquipment); + + /** + * 根据生产线,工位获取设备集合 + * @param mesEquipment + * @return + */ + List findMesEquipmentList(MesEquipment mesEquipment); + + /** + * 根据条件查询设备所有有效数据-组织模型下拉框及联 + * @param mesEquipment + * @return + */ + List queryMesEquipmentList(MesEquipment mesEquipment); + + /** + * 根据条件查询设备所有有效数据-设备作业任务下拉框 + * @param mesEquipment + * @return + */ + List queryMesEquipmentListByParams(MesEquipment mesEquipment); + + /** + * 查询设备绑定的生产线 + * @param organizeCode + * @param equipmentCode + * @return + */ + List getEquipmentWorkCenterCode(String organizeCode, String equipmentCode); + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/EquipmentExtDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/EquipmentExtDao.java new file mode 100644 index 0000000..f81db8a --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/EquipmentExtDao.java @@ -0,0 +1,432 @@ +package cn.estsh.i3plus.ext.mes.apiservice.daoimpl; + +import cn.estsh.i3plus.ext.mes.apiservice.dao.IEquipmentExtDao; +import cn.estsh.i3plus.mes.apiservice.dao.IEquipmentDao; +import cn.estsh.i3plus.platform.common.util.MesConstWords; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipment; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; +import cn.estsh.i3plus.pojo.mes.model.MesEquipmentModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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.List; + +/** + * @Description : + * @Reference : + * @Author : wangjie + * @CreateDate : 2019-04-12 + * @Modify: + **/ +@Service +public class EquipmentExtDao implements IEquipmentExtDao { + public static final Logger LOGGER = LoggerFactory.getLogger(EquipmentExtDao.class); + + @Autowired + private EntityManager entityManager; + + /** + * 获取设备分页数据 + * @param mesEquipment + * @param pager + * @return + */ + @Override + public List queryMesEquipmentByPager(MesEquipment mesEquipment, Pager pager) { + StringBuffer hql = new StringBuffer(); + hql.append(" select distinct new " + MesEquipmentModel.class.getName() + "(equ.id, equ.equipmentCode, equ.equipmentName, " + + " mwe.workCenterCode, mwc.areaCode, equ.equipmentType, " + + " equ.equipmentModel, equ.equipmentSpec, equ.equipmentMaker, equ.releaseDate, equ.receiveDate, equ.enableDate, equ.connectType, " + + " equ.organizeCode, equ.isValid, equ.isDeleted, equ.createUser, equ.createDatetime, equ.modifyUser, equ.modifyDatetime, equ.checkModel, equ.fixedAssetsNo) "); + hql.append(" from MesEquipment as equ "); + hql.append(" left join MesWcEquipment as mwe on (equ.equipmentCode = mwe.equipmentCode and mwe.organizeCode = :organizeCode and " + + " mwe.isValid = :isValid1 and mwe.isDeleted = :isDeleted) "); + hql.append(" left join MesWorkCenter as mwc on (mwe.workCenterCode = mwc.workCenterCode and mwc.organizeCode = :organizeCode and " + + " mwc.isValid = :isValid1 and mwc.isDeleted = :isDeleted) "); + hql.append(" where equ.organizeCode = :organizeCode "); + hql.append(" and equ.isValid = :isValid "); + hql.append(" and equ.isDeleted = :isDeleted "); + if (!StringUtils.isEmpty(mesEquipment.getEquipmentCode())) { + hql.append(" and equ.equipmentCode like :equipmentCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getEquipmentName())) { + hql.append(" and equ.equipmentName like :equipmentName "); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + hql.append(" and mwe.workCenterCode = :workCenterCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + hql.append(" and mwe.workCellCode = :workCellCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getAreaCode())) { + hql.append(" and mwc.areaCode = :areaCode "); + } + hql.append(" group by equ.id, equ.equipmentCode, equ.equipmentName, " + + " mwe.workCenterCode, mwc.areaCode, equ.equipmentType, equ.equipmentCategory, equ.memo, " + + " equ.equipmentModel, equ.equipmentSpec, equ.equipmentMaker, equ.releaseDate, equ.receiveDate, equ.enableDate, equ.connectType, " + + " equ.organizeCode, equ.isValid, equ.isDeleted, equ.createUser, equ.createDatetime, equ.modifyUser, equ.modifyDatetime, equ.checkModel, equ.fixedAssetsNo "); + hql.append(" order by equ.modifyDatetime desc "); + Query query = entityManager.createQuery(hql.toString(), MesEquipmentModel.class); + query.setParameter(MesConstWords.ORGANIZE_CODE, mesEquipment.getOrganizeCode()); + query.setParameter(MesConstWords.IS_VALID, mesEquipment.getIsValid()); + query.setParameter("isValid1", CommonEnumUtil.IS_VAILD.VAILD.getValue()); + query.setParameter(MesConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + if (!StringUtils.isEmpty(mesEquipment.getEquipmentCode())) { + query.setParameter("equipmentCode", "%" + mesEquipment.getEquipmentCode() + "%"); + } + if (!StringUtils.isEmpty(mesEquipment.getEquipmentName())) { + query.setParameter("equipmentName", "%" + mesEquipment.getEquipmentName() + "%"); + } + + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + query.setParameter("workCenterCode", mesEquipment.getWorkCenterCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + query.setParameter("workCellCode", mesEquipment.getWorkCellCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getAreaCode())) { + query.setParameter("areaCode", mesEquipment.getAreaCode()); + } + query.setMaxResults(pager.getPageSize()); //设置获取的数量 + if (pager.getCurrentPage() == 0) { + pager.setCurrentPage(1); + } + query.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize()); + return query.getResultList(); + } + + /** + * 获取设备分页数据数量 + * @param mesEquipment + * @return + */ + @Override + public int queryMesEquipmentByPagerCount(MesEquipment mesEquipment) { + StringBuffer hql = new StringBuffer(); + hql.append(" select count(distinct equ.id) from MesEquipment as equ "); + hql.append(" left join MesWcEquipment as mwe on (equ.equipmentCode = mwe.equipmentCode and mwe.organizeCode = :organizeCode and " + + " mwe.isValid = :isValid1 and mwe.isDeleted = :isDeleted) "); + hql.append(" left join MesWorkCenter as mwc on (mwe.workCenterCode = mwc.workCenterCode and mwc.organizeCode = :organizeCode and " + + " mwc.isValid = :isValid1 and mwc.isDeleted = :isDeleted) "); + hql.append(" where equ.organizeCode = :organizeCode "); + hql.append(" and equ.isValid = :isValid "); + hql.append(" and equ.isDeleted = :isDeleted "); + if (!StringUtils.isEmpty(mesEquipment.getEquipmentCode())) { + hql.append(" and equ.equipmentCode like :equipmentCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getEquipmentName())) { + hql.append(" and equ.equipmentName like :equipmentName "); + } + + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + hql.append(" and mwe.workCenterCode = :workCenterCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + hql.append(" and mwe.workCellCode = :workCellCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getAreaCode())) { + hql.append(" and mwc.areaCode = :areaCode "); + } + Query query = entityManager.createQuery(hql.toString(), Long.class); + query.setParameter(MesConstWords.ORGANIZE_CODE, mesEquipment.getOrganizeCode()); + query.setParameter(MesConstWords.IS_VALID, mesEquipment.getIsValid()); + query.setParameter("isValid1", CommonEnumUtil.IS_VAILD.VAILD.getValue()); + query.setParameter(MesConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + if (!StringUtils.isEmpty(mesEquipment.getEquipmentCode())) { + query.setParameter("equipmentCode", "%" + mesEquipment.getEquipmentCode() + "%"); + } + if (!StringUtils.isEmpty(mesEquipment.getEquipmentName())) { + query.setParameter("equipmentName", "%" + mesEquipment.getEquipmentName() + "%"); + } + + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + query.setParameter("workCenterCode", mesEquipment.getWorkCenterCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + query.setParameter("workCellCode", mesEquipment.getWorkCellCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getAreaCode())) { + query.setParameter("areaCode", mesEquipment.getAreaCode()); + } + return ((Long) query.getSingleResult()).intValue(); + } + + /** + * 获取设备分页数据-组织模型 + * @param mesEquipment + * @param pager + * @return + */ + @Override + public List queryMesEquipmentByPagerOrg(MesEquipment mesEquipment, Pager pager) { + StringBuffer hql = new StringBuffer(); + hql.append(" select new " + MesEquipmentModel.class.getName() + "(mwe.id as wcId, equ.id, equ.equipmentCode, " + + " equ.equipmentName, mwe.workCenterCode, mwe.workCellCode, mwc.areaCode)"); + hql.append(" from MesEquipment as equ "); + hql.append(" right join MesWcEquipment as mwe on (equ.equipmentCode = mwe.equipmentCode and mwe.organizeCode = :organizeCode and " + + " mwe.isValid = :isValid and mwe.isDeleted = :isDeleted) "); + hql.append(" left join MesWorkCenter as mwc on (mwe.workCenterCode = mwc.workCenterCode and mwc.organizeCode = :organizeCode and " + + " mwc.isValid = :isValid1 and mwc.isDeleted = :isDeleted) "); + hql.append(" where equ.organizeCode = :organizeCode "); + hql.append(" and equ.isValid = :isValid1 "); + hql.append(" and equ.isDeleted = :isDeleted "); + if (!StringUtils.isEmpty(mesEquipment.getEquipmentCode())) { + hql.append(" and mwe.equipmentCode like :equipmentCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getEquipmentName())) { + hql.append(" and equ.equipmentName like :equipmentName "); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + hql.append(" and mwe.workCenterCode = :workCenterCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + hql.append(" and mwe.workCellCode = :workCellCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getAreaCode())) { + hql.append(" and mwc.areaCode = :areaCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getId())) { + hql.append(" and mwe.id = :id "); + } + hql.append(" order by equ.modifyDatetime desc "); + Query query = entityManager.createQuery(hql.toString(), MesEquipmentModel.class); + query.setParameter(MesConstWords.ORGANIZE_CODE, mesEquipment.getOrganizeCode()); + query.setParameter(MesConstWords.IS_VALID, mesEquipment.getIsValid()); + query.setParameter("isValid1", CommonEnumUtil.IS_VAILD.VAILD.getValue()); + query.setParameter(MesConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + if (!StringUtils.isEmpty(mesEquipment.getEquipmentCode())) { + query.setParameter("equipmentCode", "%" + mesEquipment.getEquipmentCode() + "%"); + } + if (!StringUtils.isEmpty(mesEquipment.getEquipmentName())) { + query.setParameter("equipmentName", "%" + mesEquipment.getEquipmentName() + "%"); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + query.setParameter("workCenterCode", mesEquipment.getWorkCenterCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + query.setParameter("workCellCode", mesEquipment.getWorkCellCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getAreaCode())) { + query.setParameter("areaCode", mesEquipment.getAreaCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getId())) { + query.setParameter("id", mesEquipment.getId()); + } + query.setMaxResults(pager.getPageSize()); //设置获取的数量 + query.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize()); + return query.getResultList(); + } + + /** + * 获取设备分页数据数量-组织模型 + * @param mesEquipment + * @return + */ + @Override + public int queryMesEquipmentByPagerOrgCount(MesEquipment mesEquipment) { + StringBuffer hql = new StringBuffer(); + hql.append(" select count(equ.id) "); + hql.append(" from MesEquipment as equ "); + hql.append(" right join MesWcEquipment as mwe on (equ.equipmentCode = mwe.equipmentCode and mwe.organizeCode = :organizeCode and " + + " mwe.isValid = :isValid and mwe.isDeleted = :isDeleted) "); + hql.append(" left join MesWorkCenter as mwc on (mwe.workCenterCode = mwc.workCenterCode and mwc.organizeCode = :organizeCode and " + + " mwc.isValid = :isValid1 and mwc.isDeleted = :isDeleted) "); + hql.append(" where equ.organizeCode = :organizeCode "); + hql.append(" and equ.isValid = :isValid1 "); + hql.append(" and equ.isDeleted = :isDeleted "); + if (!StringUtils.isEmpty(mesEquipment.getEquipmentCode())) { + hql.append(" and mwe.equipmentCode like :equipmentCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getEquipmentName())) { + hql.append(" and equ.equipmentName like :equipmentName "); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + hql.append(" and mwe.workCenterCode = :workCenterCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + hql.append(" and mwe.workCellCode = :workCellCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getAreaCode())) { + hql.append(" and mwc.areaCode = :areaCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getId())) { + hql.append(" and mwe.id = :id "); + } + Query query = entityManager.createQuery(hql.toString(), Long.class); + query.setParameter(MesConstWords.ORGANIZE_CODE, mesEquipment.getOrganizeCode()); + query.setParameter(MesConstWords.IS_VALID, mesEquipment.getIsValid()); + query.setParameter("isValid1", CommonEnumUtil.IS_VAILD.VAILD.getValue()); + query.setParameter(MesConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + if (!StringUtils.isEmpty(mesEquipment.getEquipmentCode())) { + query.setParameter("equipmentCode", "%" + mesEquipment.getEquipmentCode() + "%"); + } + if (!StringUtils.isEmpty(mesEquipment.getEquipmentName())) { + query.setParameter("equipmentName", "%" + mesEquipment.getEquipmentName() + "%"); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + query.setParameter("workCenterCode", mesEquipment.getWorkCenterCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + query.setParameter("workCellCode", mesEquipment.getWorkCellCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getAreaCode())) { + query.setParameter("areaCode", mesEquipment.getAreaCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getId())) { + query.setParameter("id", mesEquipment.getId()); + } + return ((Long) query.getSingleResult()).intValue(); + } + + /** + * 根据生产线,工位获取设备集合 + * @param mesEquipment + * @return + */ + @Override + public List findMesEquipmentList(MesEquipment mesEquipment) { + StringBuffer hql = new StringBuffer(); + hql.append(" select new " + MesEquipmentModel.class.getName() + "(mwe.id as wcId, equ.id, equ.equipmentCode, " + + " equ.equipmentName, mwe.workCenterCode, mwe.workCellCode, mwc.areaCode)"); + hql.append(" from MesEquipment as equ "); + hql.append(" right join MesWcEquipment as mwe on (equ.equipmentCode = mwe.equipmentCode and mwe.organizeCode = :organizeCode and " + + " mwe.isValid = :isValid and mwe.isDeleted = :isDeleted) "); + hql.append(" left join MesWorkCenter as mwc on (mwe.workCenterCode = mwc.workCenterCode and mwc.organizeCode = :organizeCode and " + + " mwc.isValid = :isValid and mwc.isDeleted = :isDeleted) "); + hql.append(" where equ.organizeCode = :organizeCode "); + hql.append(" and equ.isValid = :isValid "); + hql.append(" and equ.isDeleted = :isDeleted "); + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + hql.append(" and mwe.workCellCode = :workCellCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + hql.append(" and mwe.workCenterCode = :workCenterCode "); + } + hql.append(" order by equ.modifyDatetime desc "); + Query query = entityManager.createQuery(hql.toString(), MesEquipmentModel.class); + query.setParameter(MesConstWords.ORGANIZE_CODE, mesEquipment.getOrganizeCode()); + query.setParameter(MesConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue()); + query.setParameter(MesConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + query.setParameter("workCellCode", mesEquipment.getWorkCellCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + query.setParameter("workCenterCode", mesEquipment.getWorkCenterCode()); + } + return query.getResultList(); + } + + /** + * 根据条件查询设备所有有效数据-组织模型下拉框及联 + * @param mesEquipment + * @return + */ + @Override + public List queryMesEquipmentList(MesEquipment mesEquipment) { + StringBuffer hql = new StringBuffer(); + hql.append(" select new " + MesEquipmentModel.class.getName() + "(mwe.id, " + + " concat(equ.equipmentName, '(', mwc1.workCellName, ')') as equipmentNameAndworkCellName, " + + " equ.equipmentCode, equ.equipmentName, mwc.areaCode, mwe.workCenterCode, mwe.workCellCode)" ); + hql.append(" from MesEquipment as equ "); + hql.append(" right join MesWcEquipment as mwe on (equ.equipmentCode = mwe.equipmentCode and mwe.organizeCode = :organizeCode and " + + " mwe.isValid = :isValid and mwe.isDeleted = :isDeleted) "); + hql.append(" left join MesWorkCenter as mwc on (mwe.workCenterCode = mwc.workCenterCode and mwc.organizeCode = :organizeCode and " + + " mwc.isValid = :isValid and mwc.isDeleted = :isDeleted) "); + hql.append(" left join MesWorkCell as mwc1 on (mwe.workCellCode = mwc1.workCellCode and mwc1.organizeCode = :organizeCode and " + + " mwc1.isValid = :isValid and mwc1.isDeleted = :isDeleted) "); + hql.append(" where equ.organizeCode = :organizeCode "); + hql.append(" and equ.isValid = :isValid "); + hql.append(" and equ.isDeleted = :isDeleted "); + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + hql.append(" and mwe.workCellCode = :workCellCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + hql.append(" and mwe.workCenterCode = :workCenterCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getAreaCode())) { + hql.append(" and mwc.areaCode = :areaCode "); + } + hql.append(" order by equ.modifyDatetime desc "); + Query query = entityManager.createQuery(hql.toString(), MesEquipmentModel.class); + query.setParameter(MesConstWords.ORGANIZE_CODE, mesEquipment.getOrganizeCode()); + query.setParameter(MesConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue()); + query.setParameter(MesConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + query.setParameter("workCellCode", mesEquipment.getWorkCellCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + query.setParameter("workCenterCode", mesEquipment.getWorkCenterCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getAreaCode())) { + query.setParameter("areaCode", mesEquipment.getAreaCode()); + } + return query.getResultList(); + } + + /** + * 根据条件查询设备所有有效数据-设备作业任务下拉框 + * @param mesEquipment + * @return + */ + @Override + public List queryMesEquipmentListByParams(MesEquipment mesEquipment) { + StringBuffer hql = new StringBuffer(); + hql.append(" select distinct new " + MesEquipmentModel.class.getName() + "(equ.id, equ.equipmentCode, equ.equipmentName, " + + " mwe.workCenterCode, equ.equipmentCategory, equ.modifyDatetime)" ); + hql.append(" from MesEquipment as equ "); + hql.append(" left join MesWcEquipment as mwe on (equ.equipmentCode = mwe.equipmentCode and mwe.organizeCode = :organizeCode and " + + " mwe.isValid = :isValid and mwe.isDeleted = :isDeleted) "); + hql.append(" left join MesWorkCenter as mwc on (mwe.workCenterCode = mwc.workCenterCode and mwc.organizeCode = :organizeCode and " + + " mwc.isValid = :isValid and mwc.isDeleted = :isDeleted) "); + hql.append(" where equ.organizeCode = :organizeCode "); + hql.append(" and equ.isValid = :isValid "); + hql.append(" and equ.isDeleted = :isDeleted "); + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + hql.append(" and mwe.workCellCode = :workCellCode "); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + hql.append(" and mwe.workCenterCode = :workCenterCode "); + } + hql.append(" order by equ.modifyDatetime desc "); + Query query = entityManager.createQuery(hql.toString(), MesEquipmentModel.class); + query.setParameter(MesConstWords.ORGANIZE_CODE, mesEquipment.getOrganizeCode()); + query.setParameter(MesConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue()); + query.setParameter(MesConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + if (!StringUtils.isEmpty(mesEquipment.getWorkCellCode())) { + query.setParameter("workCellCode", mesEquipment.getWorkCellCode()); + } + if (!StringUtils.isEmpty(mesEquipment.getWorkCenterCode())) { + query.setParameter("workCenterCode", mesEquipment.getWorkCenterCode()); + } + return query.getResultList(); + } + + /** + * 查询设备绑定的生产线 + * @param organizeCode + * @param equipmentCode + * @return + */ + @Override + public List getEquipmentWorkCenterCode(String organizeCode, String equipmentCode) { + StringBuffer hql = new StringBuffer(); + hql.append(" select mwc from MesWorkCenter as mwc "); + hql.append(" left join MesWcEquipment as mwe on (mwc.workCenterCode = mwe.workCenterCode and mwe.organizeCode = :organizeCode and " + + " mwe.isValid = :isValid and mwe.isDeleted = :isDeleted) "); + hql.append(" where mwc.organizeCode = :organizeCode and mwe.equipmentCode = :equipmentCode"); + Query query = entityManager.createQuery(hql.toString(), MesWorkCenter.class); + query.setParameter(MesConstWords.ORGANIZE_CODE, organizeCode); + query.setParameter(MesConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue()); + query.setParameter(MesConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + query.setParameter("equipmentCode", equipmentCode); + return query.getResultList(); + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWcEquipmentServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWcEquipmentServiceImpl.java index be92105..88a565a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWcEquipmentServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWcEquipmentServiceImpl.java @@ -115,7 +115,7 @@ public class MesWcEquipmentServiceImpl extends BaseMesService im } } //校验设备是否已经绑定其他生产线 - if (!mesWcEquipment.getWorkCenterCode().equals(wc.getWorkCenterCode())) { + if (wc.getId() !=mesWcEquipment.getId() && !mesWcEquipment.getWorkCenterCode().equals(wc.getWorkCenterCode())) { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/ProdExtOrgService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/ProdExtOrgService.java new file mode 100644 index 0000000..608f666 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/ProdExtOrgService.java @@ -0,0 +1,675 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.ext.mes.api.busi.IProdExtOrgService; +import cn.estsh.i3plus.ext.mes.apiservice.dao.IEquipmentExtDao; +import cn.estsh.i3plus.mes.api.iservice.base.IEnumService; +import cn.estsh.i3plus.mes.apiservice.dao.IEquipmentDao; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.platform.common.util.MesConstWords; +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.common.PagerHelper; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesArea; +import cn.estsh.i3plus.pojo.mes.bean.MesEquipment; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCell; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellParam; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellParamCfg; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCellPoint; +import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; +import cn.estsh.i3plus.pojo.mes.model.MesEquipmentModel; +import cn.estsh.i3plus.pojo.mes.model.ProdOrgModel; +import cn.estsh.i3plus.pojo.mes.model.SysOrganizeModel; +import cn.estsh.i3plus.pojo.mes.repository.MesAreaRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellParamCfgRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellParamRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellPointRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkCellRepository; +import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository; +import cn.estsh.i3plus.pojo.mes.sqlpack.MesHqlPack; +import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.LocaleUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Description : 与PCN数据交互方法调度类 + * @Reference : + * @Author : yiming.gu + * @CreateDate : 2019-04-23 + * @Modify: + **/ +@Service +public class ProdExtOrgService implements IProdExtOrgService { + public static final Logger LOGGER = LoggerFactory.getLogger(ProdExtOrgService.class); + + @Autowired + private MesAreaRepository areaRepository; + @Autowired + private MesWorkCenterRepository workCenterRepository; + @Autowired + private MesWorkCellRepository workCellRepository; + @Autowired + private IEquipmentExtDao equipmentDao; + @Autowired + private MesWorkCellParamCfgRepository workCellParamCfgRepository; + @Autowired + private MesWorkCellParamRepository workCellParamRepository; + @Autowired + private MesWorkCellPointRepository workCellPointRepository; + @Autowired + private IEnumService enumService; + + @Override + public List queryMesDataTree(String organizeCode) { + List resultList = new ArrayList(); + SysUserInfo userInfo = AuthUtil.getSessionUser().getUserInfo(); + if (null != userInfo) { + SysOrganizeModel organize = new SysOrganizeModel(); + + organize.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue()); + organize.setName(AuthUtil.getOrganize().getName()); + + List areaList = areaRepository.findByProperty(new String[]{MesConstWords.IS_VALID, MesConstWords.IS_DELETED, MesConstWords.ORGANIZE_CODE}, + new Object[]{CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), organizeCode}); + + if (!CollectionUtils.isEmpty(areaList)) { + for (MesArea mesArea : areaList) { + List workCenterList = workCenterRepository.findByProperty(new String[]{MesConstWords.IS_VALID, MesConstWords.IS_DELETED, MesConstWords.ORGANIZE_CODE, "areaCode"}, + new Object[]{CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), organizeCode, mesArea.getAreaCode()}); + if (!CollectionUtils.isEmpty(workCenterList)) { + for (MesWorkCenter mesWorkCenter : workCenterList) { + List workCellList = workCellRepository.findByProperty(new String[]{MesConstWords.IS_VALID, MesConstWords.IS_DELETED, MesConstWords.ORGANIZE_CODE, "areaCode", "workCenterCode"}, + new Object[]{CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), organizeCode, mesWorkCenter.getAreaCode(), mesWorkCenter.getWorkCenterCode()}); + if (!CollectionUtils.isEmpty(workCellList)) { + for (MesWorkCell workCell : workCellList) { + MesEquipment mesEquipmentParam = new MesEquipment(); + mesEquipmentParam.setOrganizeCode(organizeCode); + mesEquipmentParam.setWorkCenterCode(mesWorkCenter.getWorkCenterCode()); + mesEquipmentParam.setWorkCellCode(workCell.getWorkCellCode()); + List equipmentModelList = equipmentDao.findMesEquipmentList(mesEquipmentParam); + List equipmentList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(equipmentModelList)) { + for (MesEquipmentModel equipmentModel : equipmentModelList) { + MesEquipment equipment = new MesEquipment(); + equipment.setName(equipmentModel.getEquipmentName()); + equipment.setParentId(workCell.getId()); + //因为树的id必须唯一,而设备跟工位是一对多,所以这里id设为设备跟工位的关联id + equipment.setId(equipmentModel.getWcId()); + equipment.setEquipmentCode(equipmentModel.getEquipmentCode()); + equipment.setEquipmentName(equipmentModel.getEquipmentName()); + equipment.setWorkCenterCode(equipmentModel.getWorkCenterCode()); + equipment.setWorkCellCode(equipmentModel.getWorkCellCode()); + equipment.setAreaCode(equipmentModel.getAreaCode()); + equipmentList.add(equipment); + } + workCell.setChildTreeList(equipmentList); + } + //2019-12-10 树结构中要求工位显示代码,其他的显示名称 + //workCell.setName(workCell.getWorkCellCode()); + //2020-07-28 树结构中要求工位名称,如果要展示工位代码 直接名称维护成'代码-名称' + workCell.setName(workCell.getWorkCellName()); + workCell.setParentId(mesWorkCenter.getId()); + } + mesWorkCenter.setChildTreeList(workCellList); + } + mesWorkCenter.setName(mesWorkCenter.getWorkCenterName()); + mesWorkCenter.setParentId(mesArea.getId()); + } + mesArea.setChildTreeList(workCenterList); + } + mesArea.setName(mesArea.getAreaName()); + mesArea.setParentId(AuthUtil.getOrganize().getId()); + } + organize.setChildTreeList(areaList); + resultList.add(organize); + } + } + + return resultList; + } + + @Override + public Object insertMesProdOrg(ProdOrgModel prodOrgModel) { + if (MesEnumUtil.PROD_ORG_LEVEL.LEVEL_ONE.getValue() == prodOrgModel.getLevel()) { + MesArea mesArea = new MesArea(); + BeanUtils.copyProperties(prodOrgModel, mesArea); + + //唯一性校验 + MesArea mesAreaDb = areaRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, "areaCode", MesConstWords.IS_DELETED}, + new Object[]{mesArea.getOrganizeCode(), mesArea.getAreaCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}); + + if (null != mesAreaDb) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("区域代码为【%s】的记录已存在", mesArea.getAreaCode()) + .build(); + } + return areaRepository.insert(mesArea); + } + if (MesEnumUtil.PROD_ORG_LEVEL.LEVEL_TWO.getValue() == prodOrgModel.getLevel()) { + MesWorkCenter mesWorkCenter = new MesWorkCenter(); + BeanUtils.copyProperties(prodOrgModel, mesWorkCenter); + + //唯一性校验 + MesWorkCenter workCenter = workCenterRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, "workCenterCode"}, + new Object[]{mesWorkCenter.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), mesWorkCenter.getWorkCenterCode()}); + + if (null != workCenter) { + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("生产线代码为【%s】的记录已存在", workCenter.getWorkCenterCode()) + .build(); + } + return workCenterRepository.insert(mesWorkCenter); + } + if (MesEnumUtil.PROD_ORG_LEVEL.LEVEL_THREE.getValue() == prodOrgModel.getLevel()) { + MesWorkCell workCell = new MesWorkCell(); + BeanUtils.copyProperties(prodOrgModel, workCell); + //checkWorkCell(workCell); + //唯一性校验 + MesWorkCell mesWorkCell = workCellRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, "workCellCode", "workCenterCode"}, + new Object[]{workCell.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workCell.getWorkCellCode(), workCell.getWorkCenterCode()}); + + if (null != mesWorkCell) { + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("生产线代码为【%s】工位代码为【%s】的记录已存在", workCell.getWorkCenterCode(), mesWorkCell.getWorkCellCode()) + .build(); + } + workCell.setGrade(prodOrgModel.getGrade()); + return workCellRepository.insert(workCell); + } + return null; + } + + + @Override + public ListPager queryMesAreaByPager(MesArea mesArea, Pager pager) { + + if (mesArea == null) { + pager = PagerHelper.getPager(pager, areaRepository.listCount()); + return new ListPager(areaRepository.listPager(pager), pager); + } else { + DdlPackBean hqlPack = MesHqlPack.getMesArea(mesArea, AuthUtil.getOrganize().getOrganizeCode()); + pager = PagerHelper.getPager(pager, areaRepository.findByHqlWhereCount(hqlPack)); + hqlPack.setOrderByStr(mesArea.orderBy()); + return new ListPager(areaRepository.findByHqlWherePage(hqlPack, pager), pager); + } + } + + @Override + public List queryMesAreaByProperties(MesArea mesArea) { + + return areaRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID}, + new Object[]{mesArea.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + } + + @Override + public MesArea updateMesArea(MesArea mesArea) { + + //对id做有效性校验 + MesArea mesAreaDb = areaRepository.getById(mesArea.getId()); + if (mesAreaDb == null) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("区域代码为【%s】的记录不存在", mesArea.getAreaCode()) + .build(); + } + + mesAreaDb.setAreaName(mesArea.getAreaName()); + ConvertBean.serviceModelUpdate(mesAreaDb, AuthUtil.getSessionUser().getUserName()); + + return areaRepository.save(mesAreaDb); + } + + @Override + public int updateMesAreaStatusById(Long id, int status, String userName) { + MesArea mesArea = areaRepository.getById(id); + if (null == mesArea || (null != mesArea && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesArea.getIsDeleted())) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("区域不存在") + .build(); + } + //禁用区域时,校验生产线是否全部禁用 + if (CommonEnumUtil.IS_VAILD.INVAILD.getValue() == status) { + List mesWorkCenterList = workCenterRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "areaCode"}, + new Object[]{mesArea.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), mesArea.getAreaCode()}); + if (!CollectionUtils.isEmpty(mesWorkCenterList)) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("区域代码【%s】下存在未禁用的生产线,该区域不能禁用", mesArea.getAreaCode()) + .build(); + } + } + + return areaRepository.updateByProperties(new String[]{"id"}, new Object[]{id}, + new String[]{MesConstWords.IS_VALID, "modifyUser", "modifyDatetime"}, + new Object[]{status, userName, TimeTool.getNowTime(true)}); + } + + @Override + public ListPager queryWorkCenterByPager(MesWorkCenter mesWorkCenter, Pager pager) { + DdlPackBean hqlPack = MesHqlPack.getMesWorkCenter(mesWorkCenter, AuthUtil.getOrganize().getOrganizeCode()); + pager = PagerHelper.getPager(pager, workCenterRepository.findByHqlWhereCount(hqlPack)); + hqlPack.setOrderByStr(mesWorkCenter.orderBy()); + return new ListPager(workCenterRepository.findByHqlWherePage(hqlPack, pager), pager); + } + + @Override + public List queryMesWorkCenterByProperties(MesWorkCenter workCenter) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(workCenter.getOrganizeCode()); + packBean.setOrderByStr(workCenter.orderBy()); + if (!StringUtils.isEmpty(workCenter.getWorkCenterCode())) { + DdlPreparedPack.getStringLikerPack(workCenter.getWorkCenterCode(), "workCenterCode", packBean); + } + if (!StringUtils.isEmpty(workCenter.getWorkCenterName())) { + DdlPreparedPack.getStringLikerPack(workCenter.getWorkCenterName(), "workCenterName", packBean); + } + if (!StringUtils.isEmpty(workCenter.getAreaCode())) { + DdlPreparedPack.getStringEqualPack(workCenter.getAreaCode(), "areaCode", packBean); + } + return workCenterRepository.findByHqlWhere(packBean); + } + + @Override + public List queryMesWorkCenterByOrg(String org) { + return workCenterRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID}, + new Object[]{org, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + } + + @Override + public MesWorkCenter updateMesWorkCenter(MesWorkCenter workCenter) { + + //对id做有效性校验 + MesWorkCenter workCenterDb = workCenterRepository.getById(workCenter.getId()); + if (workCenterDb == null) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("区域代码为【%s】,生产线代码为【%s】的记录不存在", workCenter.getAreaCode(), workCenter.getWorkCenterCode()) + .build(); + } + + workCenterDb.setWorkCenterName(workCenter.getWorkCenterName()); + workCenterDb.setErpWorkCenter(workCenter.getErpWorkCenter()); + + ConvertBean.serviceModelUpdate(workCenterDb, AuthUtil.getSessionUser().getUserName()); + + return workCenterRepository.save(workCenterDb); + } + + @Override + public int updateMesCenterStatusById(Long id, int status, String userName) { + MesWorkCenter mesWorkCenter = workCenterRepository.getById(id); + if (null == mesWorkCenter || (null != mesWorkCenter && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesWorkCenter.getIsDeleted())) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("生产线不存在") + .build(); + } + //启用生产线时,校验区域是否有效 + if (CommonEnumUtil.IS_VAILD.VAILD.getValue() == status) { + MesArea mesArea = areaRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, "areaCode"}, + new Object[]{mesWorkCenter.getOrganizeCode(), mesWorkCenter.getAreaCode()}); + if (null == mesArea || (null != mesArea && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesArea.getIsDeleted())) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("生产线代码【%s】所属区域不存在,该生产线不能启用", mesWorkCenter.getWorkCenterCode()) + .build(); + } + if (CommonEnumUtil.IS_VAILD.INVAILD.getValue() == mesArea.getIsValid()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("生产线代码【%s】所属区域已禁用,该生产线不能启用", mesWorkCenter.getWorkCenterCode()) + .build(); + } + } + //禁用生产线时,校验工位是否全部禁用 + if (CommonEnumUtil.IS_VAILD.INVAILD.getValue() == status) { + List mesWorkCellList = workCellRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "workCenterCode"}, + new Object[]{mesWorkCenter.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), mesWorkCenter.getWorkCenterCode()}); + if (!CollectionUtils.isEmpty(mesWorkCellList)) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("生产线代码【%s】下存在未禁用的工位,该生产线不能禁用", mesWorkCenter.getWorkCenterCode()) + .build(); + } + } + + return workCenterRepository.updateByProperties(new String[]{"id"}, new Object[]{id}, + new String[]{MesConstWords.IS_VALID, "modifyUser", "modifyDatetime"}, + new Object[]{status, userName, TimeTool.getNowTime(true)}); + } + + @Override + public ListPager queryWorkCellByPager(MesWorkCell mesWorkCell, Pager pager) { + //Map workCellTypeEnumMap = enumService.getEnumLangeuageKeyByClazzEnum(MesEnumUtil.MES_WORK_CELL_TYPE.class); + DdlPackBean hqlPack = MesHqlPack.getMesWorkCell(mesWorkCell, AuthUtil.getOrganize().getOrganizeCode()); + pager = PagerHelper.getPager(pager, workCellRepository.findByHqlWhereCount(hqlPack)); + //hqlPack.setOrderByStr(mesWorkCell.orderBy()); + DdlPreparedPack.getOrderByPack(new Object[]{"1"}, new String[]{"seq", "workCellCode"}, hqlPack); + List workCells = workCellRepository.findByHqlWherePage(hqlPack, pager); + + return new ListPager(workCells, pager); + } + + @Override + public List queryMesWorkCellByProperties(MesWorkCell workCell) { + DdlPackBean packBean = DdlPackBean.getDdlPackBean(workCell.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(workCell.getWorkCenterCode(), "workCenterCode", packBean); + DdlPreparedPack.getStringLikerPack(workCell.getWorkCellCode(), "workCellCode", packBean); + DdlPreparedPack.getStringLikerPack(workCell.getWorkCellName(), "workCellName", packBean); + packBean.setOrderByStr(workCell.orderBy()); + List workCells = workCellRepository.findByHqlWhere(packBean); + + return workCells; + } + + @Override + public MesWorkCell updateMesWorkCell(MesWorkCell workCell) { + + //对id做有效性校验 + MesWorkCell workCellDb = workCellRepository.getById(workCell.getId()); + if (workCellDb == null) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("区域代码为【%s】,生产线代码为【%s】,工位代码为【%s】的记录不存在", + workCell.getAreaCode(), workCell.getWorkCenterCode(), workCell.getWorkCellCode()) + .build(); + } + /*if (MesEnumUtil.MES_WORK_CELL_TYPE.REWORK.getValue() == workCell.getWorkCellType()) { + MesWorkCell mesWorkCell = workCellRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, MesConstWords.IS_VALID, "workCenterCode", "workCellType"}, + new Object[]{workCell.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCell.getWorkCenterCode(), workCell.getWorkCellType()}); + if (mesWorkCell != null && !mesWorkCell.getId().equals(workCellDb.getId())) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("工位代码为【%s】,工位类型为【%s】的记录已存在", mesWorkCell.getWorkCellCode(), MesEnumUtil.MES_WORK_CELL_TYPE.valueOfDescription(workCell.getWorkCellType())) + .build(); + } + }*/ + workCellDb.setSeq(workCell.getSeq()); + workCellDb.setWorkCellName(workCell.getWorkCellName()); + workCellDb.setGrade(workCell.getGrade()); + ConvertBean.serviceModelUpdate(workCellDb, AuthUtil.getSessionUser().getUserName()); + + return workCellRepository.save(workCellDb); + } + + @Override + public int updateMesCellStatusById(Long id, int status, String userName) { + MesWorkCell mesWorkCell = workCellRepository.getById(id); + if (null == mesWorkCell || (null != mesWorkCell && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesWorkCell.getIsDeleted())) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("工位不存在") + .build(); + } + //启用工位时,校验生产线是否有效 + if (CommonEnumUtil.IS_VAILD.VAILD.getValue() == status) { + MesWorkCenter mesWorkCenter = workCenterRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, "workCenterCode"}, + new Object[]{mesWorkCell.getOrganizeCode(), mesWorkCell.getWorkCenterCode()}); + if (null == mesWorkCenter || (null != mesWorkCenter && CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesWorkCenter.getIsDeleted())) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("工位代码【%s】所属生产线不存在,该工位不能启用", mesWorkCell.getWorkCellCode()) + .build(); + } + if (CommonEnumUtil.IS_VAILD.INVAILD.getValue() == mesWorkCenter.getIsValid()) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("工位代码【%s】所属生产线已禁用,该工位不能启用", mesWorkCell.getWorkCellCode()) + .build(); + } + } + + return workCellRepository.updateByProperties(new String[]{"id"}, new Object[]{id}, + new String[]{MesConstWords.IS_VALID, "modifyUser", "modifyDatetime"}, + new Object[]{status, userName, TimeTool.getNowTime(true)}); + } + + @Override + public ListPager queryMesWorkCellParamByPager(MesWorkCellParam workCellParam, Pager pager) { + + if (workCellParam == null) { + pager = PagerHelper.getPager(pager, workCellParamRepository.listCount()); + return new ListPager(workCellParamRepository.listPager(pager), pager); + } else { + DdlPackBean hqlPack = MesHqlPack.getMesWorkCellParam(workCellParam, AuthUtil.getOrganize().getOrganizeCode()); + pager = PagerHelper.getPager(pager, workCellParamRepository.findByHqlWhereCount(hqlPack)); + hqlPack.setOrderByStr(workCellParam.orderBy()); + List workCellParams = workCellParamRepository.findByHqlWherePage(hqlPack, pager); + workCellParams = this.transferCodeToName(workCellParams); + return new ListPager(workCellParams, pager); + } + } + + /** + * 冗余字段赋值用于导出 + * + * @param workCellParams + * @return + */ + private List transferCodeToName(List workCellParams) { + for (MesWorkCellParam workCellParam : workCellParams) { + if (!StringUtils.isEmpty(workCellParam.getParamType())) { + workCellParam.setParamTypeName(MesEnumUtil.MES_WORK_CELL_PARAM_TYPE.valueOfDescription(workCellParam.getParamType())); + } + if (!StringUtil.isEmpty(workCellParam.getParamModel())) { + workCellParam.setParamModelName(MesEnumUtil.MES_WORK_CELL_PARAM_MODEL.valueOfDescription(workCellParam.getParamModel())); + } + } + return workCellParams; + } + + @Override + public MesWorkCellParam insertMesWorkCellParam(MesWorkCellParam workCellParam) { + + //唯一性校验 + MesWorkCellParam workCellParamDb = workCellParamRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED, "paramCode"}, + new Object[]{workCellParam.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), workCellParam.getParamCode()}); + + if (null != workCellParamDb) { + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("参数代码为【%s】的记录已存在", workCellParam.getParamCode()) + .build(); + } + + return workCellParamRepository.insert(workCellParam); + } + + @Override + public MesWorkCellParam updateMesWorkCellParam(MesWorkCellParam workCellParam) { + + //对id做有效性校验 + MesWorkCellParam workCellParamDb = workCellParamRepository.getById(workCellParam.getId()); + if (workCellParamDb == null) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("参数代码为【%s】的记录不存在", workCellParam.getParamCode()) + .build(); + } + + workCellParamDb.setParamName(workCellParam.getParamName()); + workCellParamDb.setParamType(workCellParam.getParamType()); + workCellParamDb.setParamModel(workCellParam.getParamModel()); + ConvertBean.serviceModelUpdate(workCellParamDb, AuthUtil.getSessionUser().getUserName()); + + return workCellParamRepository.save(workCellParamDb); + } + + @Override + public int updateMesWorkCellParamStatusById(Long id, int status, String userName) { + + return workCellParamRepository.updateByProperties(new String[]{"id"}, new Object[]{id}, + new String[]{MesConstWords.IS_VALID, "modifyUser", "modifyDatetime"}, + new Object[]{status, userName, TimeTool.getNowTime(true)}); + } + + @Override + public ListPager queryMesWorkCellParamCfgByPager(MesWorkCellParamCfg workCellParamCfg, Pager pager) { + Map workCellParamCfgIsCheckEnumMap = enumService.getEnumLangeuageKeyByClazzEnum(MesEnumUtil.MES_WORK_CELL_PARAM_CFG_IS_CHECK.class); + DdlPackBean hqlPack = MesHqlPack.getMesWorkCellParamCfg(workCellParamCfg, AuthUtil.getOrganize().getOrganizeCode()); + pager = PagerHelper.getPager(pager, workCellParamCfgRepository.findByHqlWhereCount(hqlPack)); + hqlPack.setOrderByStr(workCellParamCfg.orderBy()); + List workCellParamCfgs = workCellParamCfgRepository.findByHqlWherePage(hqlPack, pager); + for (MesWorkCellParamCfg cellParamCfg : workCellParamCfgs) { + if (cellParamCfg.getIsCheck() != null && cellParamCfg.getIsCheck() != 0 && workCellParamCfgIsCheckEnumMap.containsKey(cellParamCfg.getIsCheck().toString())) { + cellParamCfg.setIsCheckName(LocaleUtils.getLocaleRes(workCellParamCfgIsCheckEnumMap.get(cellParamCfg.getIsCheck().toString()))); + } + } + return new ListPager(workCellParamCfgs, pager); + } + + @Override + public MesWorkCellParamCfg insertMesWorkCellParamCfg(MesWorkCellParamCfg workCellParamCfg) { + + //唯一性校验 + MesWorkCellParamCfg workCellParamCfgDb = workCellParamCfgRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, "workCellCode", MesConstWords.IS_DELETED, "workCenterCode", "paramCode"}, + new Object[]{workCellParamCfg.getOrganizeCode() + , workCellParamCfg.getWorkCellCode() + , CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() + , workCellParamCfg.getWorkCenterCode() + , workCellParamCfg.getParamCode()}); + + if (null != workCellParamCfgDb) { + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("工位代码为【%s】,参数代码为【%s】的记录已存在", workCellParamCfg.getWorkCellCode(), workCellParamCfg.getParamCode()) + .build(); + } + + return workCellParamCfgRepository.insert(workCellParamCfg); + } + + @Override + public MesWorkCellParamCfg updateMesWorkCellParamCfg(MesWorkCellParamCfg workCellParamCfg) { + + //对id做有效性校验 + MesWorkCellParamCfg workCellParamCfgDb = workCellParamCfgRepository.getById(workCellParamCfg.getId()); + if (workCellParamCfgDb == null) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("工位代码为【%s】,参数代码为【%s】的记录不存在", workCellParamCfg.getWorkCellCode(), workCellParamCfg.getParamCode()) + .build(); + } + + workCellParamCfgDb.setIsCheck(workCellParamCfg.getIsCheck()); + workCellParamCfgDb.setParamName(workCellParamCfg.getParamName()); + workCellParamCfgDb.setParamValue(workCellParamCfg.getParamValue()); + ConvertBean.serviceModelUpdate(workCellParamCfgDb, AuthUtil.getSessionUser().getUserName()); + + return workCellParamCfgRepository.save(workCellParamCfgDb); + } + + @Override + public int updateMesWorkCellParamCfgStatusById(Long id, int status, String userName) { + + return workCellParamCfgRepository.updateByProperties(new String[]{"id"}, new Object[]{id}, + new String[]{MesConstWords.IS_VALID, "modifyUser", "modifyDatetime"}, + new Object[]{status, userName, TimeTool.getNowTime(true)}); + } + + @Override + public ListPager queryMesWorkCellPointByPager(MesWorkCellPoint workCellPoint, Pager pager) { + + if (workCellPoint == null) { + pager = PagerHelper.getPager(pager, workCellPointRepository.listCount()); + return new ListPager(workCellPointRepository.listPager(pager), pager); + } else { + DdlPackBean hqlPack = MesHqlPack.getMesWorkCellPoint(workCellPoint, AuthUtil.getOrganize().getOrganizeCode()); + pager = PagerHelper.getPager(pager, workCellPointRepository.findByHqlWhereCount(hqlPack)); + hqlPack.setOrderByStr(workCellPoint.orderBy()); + return new ListPager(workCellPointRepository.findByHqlWherePage(hqlPack, pager), pager); + } + } + + @Override + public MesWorkCellPoint insertMesWorkCellPoint(MesWorkCellPoint workCellPoint) { + + //唯一性校验 + MesWorkCellPoint workCellPointDb = workCellPointRepository.getByProperty(new String[]{MesConstWords.ORGANIZE_CODE, "workCenterCode", "workCellCode", MesConstWords.IS_DELETED}, + new Object[]{workCellPoint.getOrganizeCode(), workCellPoint.getWorkCenterCode(), workCellPoint.getWorkCellCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}); + + if (null != workCellPointDb) { + + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("产线代码为【%s】,工位代码为【%s】的记录已存在", workCellPoint.getWorkCenterCode(), workCellPoint.getWorkCellCode()) + .build(); + } + + return workCellPointRepository.insert(workCellPoint); + } + + @Override + public MesWorkCellPoint updateMesWorkCellPoint(MesWorkCellPoint workCellPoint) { + + //对id做有效性校验 + MesWorkCellPoint workCellPointDb = workCellPointRepository.getById(workCellPoint.getId()); + if (workCellPointDb == null) { + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) + .setErrorDetail("产线代码为【%s】,工位代码为【%s】的记录不存在", workCellPoint.getWorkCenterCode(), workCellPoint.getWorkCellCode()) + .build(); + } + + workCellPointDb.setQueueSeq(workCellPoint.getQueueSeq()); + workCellPointDb.setQueueDetailSeq(workCellPoint.getQueueDetailSeq()); + ConvertBean.serviceModelUpdate(workCellPointDb, AuthUtil.getSessionUser().getUserName()); + + return workCellPointRepository.save(workCellPointDb); + } + + @Override + public int updateMesWorkCellPointStatusById(Long id, int status, String userName) { + + return workCellPointRepository.updateByProperties(new String[]{"id"}, new Object[]{id}, + new String[]{MesConstWords.IS_VALID, "modifyUser", "modifyDatetime"}, + new Object[]{status, userName, TimeTool.getNowTime(true)}); + } +}