diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java index 1681455..a161f1f 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import cn.estsh.i3plus.pojo.model.wms.WmsProductModel; import java.util.List; @@ -18,7 +19,7 @@ public interface IMesWorkOrderService extends IBaseMesService { void deleteUnSortOrder(String userName, String organizeCode, List partNoList); - List sumMesWorkOrderQtyToSap(String organizeCode); + List sumMesWorkOrderQtyToSap(String organizeCode); List queryMesWorkOrderProcessToSap(String organizeCode); diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java index 2f60d89..9b9860a 100644 --- a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IMesWorkOrderToSapService.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.ext.mes.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderToSap; +import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import java.util.List; @@ -13,7 +14,7 @@ import java.util.List; * @Modify: **/ public interface IMesWorkOrderToSapService extends IBaseMesService { - MesWorkOrderToSap insert(MesWorkOrder mesWorkOrder); + MesWorkOrderToSap insert(MesWorkOrderModel mesWorkOrder); - void doMesWorkOrder(String organizeCode,List mesWorkOrderList); + void doMesWorkOrder(String organizeCode,List mesWorkOrderList); } diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/file/IMesFileService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/file/IMesFileService.java new file mode 100644 index 0000000..b89978c --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/file/IMesFileService.java @@ -0,0 +1,33 @@ +package cn.estsh.i3plus.ext.mes.api.base.file; + +import cn.estsh.i3plus.pojo.platform.bean.SysFile; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; + +/** + * @Description : 文件上传下载 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/17 14:19 + * @Modify: + **/ +public interface IMesFileService { + + /** + * 上传文件 + * @param file 文件 + * @return 文件信息 + */ + @ApiOperation(value = "上传文件", notes = "上传文件") + SysFile uploadFile(MultipartFile file); + + /** + * 获取文件 + * @param resp + * @param fileUrl 文件url + * @return 文件流 + */ + void getFileByUrl(HttpServletResponse resp, String fileUrl); +} diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/file/IMesModuleExcelService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/file/IMesModuleExcelService.java new file mode 100644 index 0000000..43df9cb --- /dev/null +++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/file/IMesModuleExcelService.java @@ -0,0 +1,69 @@ +package cn.estsh.i3plus.ext.mes.api.base.file; + +import cn.estsh.i3plus.ext.mes.api.base.IBaseMesService; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.mes.bean.MesFile; +import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel; +import cn.estsh.i3plus.pojo.mes.model.MesModuleExcelModel; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; + +/** + * @Description : 模块EXCEL管理表 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/17 15:02 + * @Modify: + **/ +public interface IMesModuleExcelService extends IBaseMesService { + + /** + * 按条件分页查询模块EXCEL模板信息 + * + * @param mesModuleExcel 查询条件 + * @param pager 分页条件 + * @return SOP分页数据 + */ + @ApiOperation(value = "按条件分页查询模块EXCEL模板信息", notes = "按条件分页查询模块EXCEL模板信息") + ListPager queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager); + + /** + * 新增模块EXCEL模板信息 + * + * @param file 文件 + * @param mesModuleExcel 模块EXCEL模板信息 + */ + @ApiOperation(value = "新增模块EXCEL模板信息", notes = "新增模块EXCEL模板信息") + void insertModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel); + + /** + * 更新模块EXCEL模板信息 + * + * @param file 文件 + * @param mesModuleExcel 模块EXCEL模板信息 + */ + @ApiOperation(value = "更新模块EXCEL模板信息", notes = "更新模块EXCEL模板信息") + void updateModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel); + + /** + * 下载模块EXCEL模板 + * + * @param resp + * @param fileUrl 文件URL + */ + @ApiOperation(value = "下载模块EXCEL模板", notes = "下载模块EXCEL模板") + void doDownLoadModuleExcel(HttpServletResponse resp, String fileUrl); + + /** + * 获取文件 + * + * @param organizeCode 组织代码 + * @param templateCode 模版代码 + * @return + */ + @ApiOperation(value = "获取文件", notes = "获取文件") + MesFile getTemplateFile(String organizeCode, String templateCode); +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java index cdaf255..978458d 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/MesWorkOrderController.java @@ -125,7 +125,7 @@ public class MesWorkOrderController extends BaseMesController { public ResultBean sendToSap(String organizeCode) { try { //查询汇总工单数量 - List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode); + List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode); if (!CollectionUtils.isEmpty(mesWorkOrderList)){ mesWorkOrderToSapService.doMesWorkOrder(organizeCode,mesWorkOrderList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/file/MesModuleExcelController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/file/MesModuleExcelController.java new file mode 100644 index 0000000..4755d6c --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/file/MesModuleExcelController.java @@ -0,0 +1,118 @@ +package cn.estsh.i3plus.ext.mes.apiservice.controller.base.file; + +import cn.estsh.i3plus.ext.mes.api.base.file.IMesModuleExcelService; +import cn.estsh.i3plus.ext.mes.apiservice.controller.base.BaseMesController; +import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; + +/** + * @Description : 模块EXCEL管理表 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/17 14:54 + * @Modify: + **/ +@RestController +@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesModuleExcel") +@Api(tags = "模块EXCEL模板管理") +public class MesModuleExcelController extends BaseMesController { + + @Autowired + private IMesModuleExcelService moduleExcelService; + + @GetMapping(value = "/queryExt") + @ApiOperation(value = "按条件分页查询模块EXCEL模板信息") + public ResultBean queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager) { + try { + mesModuleExcel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setListPager(moduleExcelService.queryModuleExcelByPager(mesModuleExcel, pager)); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @PostMapping(value = "/insertExt") + @ApiOperation(value = "新增模块EXCEL模板信息") + public ResultBean insertModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel) { + try { + if (file == null) { + MesException.throwMesBusiException("上传的文件为null,后台未能接收到"); + } + + ValidatorBean.beginValid(mesModuleExcel) + .notNull(MesExtConstWords.MODULE_CODE, mesModuleExcel.getModuleCode()) + .notNull(MesExtConstWords.MODULE_NAME, mesModuleExcel.getModuleName()); + + mesModuleExcel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); + mesModuleExcel.setCreateUser(AuthUtil.getSessionUser().getUserName()); + moduleExcelService.insertModuleExcel(file, mesModuleExcel); + + return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @PostMapping(value = "/updateExt") + @ApiOperation(value = "更新模块EXCEL模板信息") + public ResultBean updateModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel) { + try { + ValidatorBean.beginValid(mesModuleExcel) + .notNull(MesExtConstWords.ID, mesModuleExcel.getId()) + .notNull(MesExtConstWords.MODULE_CODE, mesModuleExcel.getModuleCode()) + .notNull(MesExtConstWords.MODULE_NAME, mesModuleExcel.getModuleName()); + + mesModuleExcel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode()); + mesModuleExcel.setModifyUser(AuthUtil.getSessionUser().getUserName()); + moduleExcelService.updateModuleExcel(file, mesModuleExcel); + return ResultBean.success("修改成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @PostMapping(value = "/down-load") + @ApiOperation(value = "下载模块EXCEL模板") + public ResultBean doDownLoadModuleExcelManage(HttpServletResponse resp, String fileUrl) { + try { + if (StringUtils.isEmpty(fileUrl)) { + MesException.throwMesBusiException("请选择需要操作的资源。"); + } + + moduleExcelService.doDownLoadModuleExcel(resp, fileUrl); + return ResultBean.success("下载成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesModuleExcelDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesModuleExcelDao.java new file mode 100644 index 0000000..de2d68a --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesModuleExcelDao.java @@ -0,0 +1,37 @@ +package cn.estsh.i3plus.ext.mes.apiservice.dao; + +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel; +import cn.estsh.i3plus.pojo.mes.model.MesModuleExcelModel; +import io.swagger.annotations.ApiOperation; + +import java.util.List; + +/** + * @Description : 模块EXCEL管理 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/17 14:28 + * @Modify: + **/ +public interface IMesModuleExcelDao { + + /** + * 查询模块EXCEL管理数量 + * + * @param mesModuleExcel 模块EXCEL管理信息 + * @return 数量 + */ + @ApiOperation(value = "查询模块EXCEL管理数量", notes = "查询模块EXCEL管理数量") + int queryModuleExcelCount(MesModuleExcel mesModuleExcel); + + /** + * 查询模块EXCEL管理信息集合 + * + * @param mesModuleExcel 查询条件 + * @param pager 分页条件 + * @return 模块EXCEL管理信息集合 + */ + @ApiOperation(value = "查询模块EXCEL管理信息集合", notes = "查询模块EXCEL管理信息集合") + List queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager); +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java index d87cb5d..d80ef90 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/dao/IMesWorkOrderDao.java @@ -1,6 +1,6 @@ package cn.estsh.i3plus.ext.mes.apiservice.dao; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import java.util.List; @@ -13,5 +13,5 @@ import java.util.List; **/ public interface IMesWorkOrderDao { - List sumMesWorkOrderQtyToSap(String organizeCode,List statusList); + List sumMesWorkOrderQtyToSap(String organizeCode, List statusList); } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesModuleExcelDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesModuleExcelDaoImpl.java new file mode 100644 index 0000000..bfc1c0b --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesModuleExcelDaoImpl.java @@ -0,0 +1,91 @@ +package cn.estsh.i3plus.ext.mes.apiservice.daoimpl; + +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesModuleExcelDao; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel; +import cn.estsh.i3plus.pojo.mes.model.MesModuleExcelModel; +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 : 模块EXCEL管理 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/17 14:30 + * @Modify: + **/ +@Service +public class MesModuleExcelDaoImpl implements IMesModuleExcelDao { + + @Autowired + private EntityManager entityManager; + + @Override + public int queryModuleExcelCount(MesModuleExcel mesModuleExcel) { + StringBuffer hql = new StringBuffer(); + hql.append(" select count(distinct mem.id) "); + + packHqlForQueryModuleExcelManage(hql, mesModuleExcel); + + Query query = entityManager.createQuery(hql.toString(), Long.class); + + packParameterForQueryModuleExcelManage(query, mesModuleExcel); + + return ((Long) query.getSingleResult()).intValue(); + } + + @Override + public List queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager) { + StringBuffer hql = new StringBuffer(); + hql.append(" select new " + MesModuleExcelModel.class.getName() + "(mem.id, mem.moduleCode, mem.moduleName, mem.fileId, f.fileUrl, f.fileOriginName, " + + " mem.organizeCode, mem.createUser, mem.createDatetime, mem.modifyUser, mem.modifyDatetime ) "); + + packHqlForQueryModuleExcelManage(hql, mesModuleExcel); + + hql.append(" order by mem.modifyDatetime desc "); + Query query = entityManager.createQuery(hql.toString(), MesModuleExcelModel.class); + + packParameterForQueryModuleExcelManage(query, mesModuleExcel); + + query.setMaxResults(pager.getPageSize()); + if (pager.getCurrentPage() == 0) { + pager.setCurrentPage(1); + } + query.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize()); + return query.getResultList(); + } + + private void packHqlForQueryModuleExcelManage(StringBuffer hql, MesModuleExcel mesModuleExcel) { + hql.append(" from MesModuleExcel as mem "); + hql.append(" left join MesFile as f on (mem.fileId = f.id and f.organizeCode = :organizeCode and f.isValid = :isValid1 and f.isDeleted = :isDeleted) "); + hql.append(" where mem.organizeCode = :organizeCode "); + hql.append(" and mem.isValid = :isValid "); + hql.append(" and mem.isDeleted = :isDeleted "); + if (!StringUtils.isEmpty(mesModuleExcel.getModuleCode())) { + hql.append(" and mem.moduleCode like :moduleCode "); + } + if (!StringUtils.isEmpty(mesModuleExcel.getModuleName())) { + hql.append(" and mem.moduleName like :moduleName "); + } + } + + private void packParameterForQueryModuleExcelManage(Query query, MesModuleExcel mesModuleExcel) { + query.setParameter(MesExtConstWords.ORGANIZE_CODE, mesModuleExcel.getOrganizeCode()); + query.setParameter(MesExtConstWords.IS_VALID, mesModuleExcel.getIsValid()); + query.setParameter(MesExtConstWords.IS_VALID1, CommonEnumUtil.IS_VAILD.VAILD.getValue()); + query.setParameter(MesExtConstWords.IS_DELETED, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + if (!StringUtils.isEmpty(mesModuleExcel.getModuleCode())) { + query.setParameter(MesExtConstWords.MODULE_CODE, "%" + mesModuleExcel.getModuleCode() + "%"); + } + if (!StringUtils.isEmpty(mesModuleExcel.getModuleName())) { + query.setParameter(MesExtConstWords.MODULE_NAME, "%" + mesModuleExcel.getModuleName() + "%"); + } + } +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java index 4b7bd80..2db115a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/daoimpl/MesWorkOrderDaoImpl.java @@ -2,7 +2,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.daoimpl; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -26,15 +26,15 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao { private EntityManager entityManager; @Override - public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList) { - StringBuffer hql = new StringBuffer("select new MesWorkOrder(partNo,planStartTime,productVersion,sum(case when workOrderStatus = 40 then 0 else qty end) as sumQty) " + + public List sumMesWorkOrderQtyToSap(String organizeCode, List statusList) { + StringBuffer hql = new StringBuffer("select new " + MesWorkOrderModel.class.getName() + "(partNo,planStartTime,productVersion,sum(case when workOrderStatus = 40 then 0 else qty end) as sumQty) " + " from MesWorkOrder where isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode " + "and workOrderStatus not in(:statusList) group by partNo,planStartTime,productVersion"); - Query query = entityManager.createQuery(hql.toString(), MesWorkOrder.class); - query.setParameter("organizeCode",organizeCode); - query.setParameter("isValid",CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); - query.setParameter("isDeleted",CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); - query.setParameter("statusList",statusList); + Query query = entityManager.createQuery(hql.toString(), MesWorkOrderModel.class); + query.setParameter("organizeCode", organizeCode); + query.setParameter("isValid", CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + query.setParameter("isDeleted", CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + query.setParameter("statusList", statusList); return query.getResultList(); } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java index 85a0bf4..3386444 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/schedulejob/MesWorkOrderToSapJob.java @@ -3,7 +3,7 @@ package cn.estsh.i3plus.ext.mes.apiservice.schedulejob; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService; import cn.estsh.i3plus.mes.apiservice.schedulejob.BaseMesScheduleJob; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; +import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import cn.estsh.impp.framework.boot.init.ApplicationProperties; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; @@ -61,15 +61,15 @@ public class MesWorkOrderToSapJob extends BaseMesScheduleJob { LOGGER.info("汇总工单给SAP开始 -----start"); for (String organizeCode : organizeCodeList) { - List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode); - if (!CollectionUtils.isEmpty(mesWorkOrderList)){ - mesWorkOrderToSapService.doMesWorkOrder(organizeCode,mesWorkOrderList); + List mesWorkOrderList = mesWorkOrderService.sumMesWorkOrderQtyToSap(organizeCode); + if (!CollectionUtils.isEmpty(mesWorkOrderList)) { + mesWorkOrderToSapService.doMesWorkOrder(organizeCode, mesWorkOrderList); } } LOGGER.info("汇总工单给SAP开始结束 ----- end"); } catch (Exception e) { - LOGGER.error("汇总工单给SAP任务结束e:{}",e.toString()); + LOGGER.error("汇总工单给SAP任务结束e:{}", e.toString()); } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index e1526c5..785eb65 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -15,6 +15,7 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import cn.estsh.i3plus.pojo.mes.repository.*; import cn.estsh.i3plus.pojo.mes.util.DateUtilExt; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; @@ -938,7 +939,7 @@ public class MesWorkOrderService extends BaseMesService implements } @Override - public List sumMesWorkOrderQtyToSap(String organizeCode) { + public List sumMesWorkOrderQtyToSap(String organizeCode) { List statusList = new ArrayList<>(); statusList.add(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); // statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java index 7a4751f..d71be93 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderToSapServiceImpl.java @@ -5,8 +5,8 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; -import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderToSap; +import cn.estsh.i3plus.pojo.mes.model.MesWorkOrderModel; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -19,7 +19,7 @@ import java.util.Objects; public class MesWorkOrderToSapServiceImpl extends BaseMesService implements IMesWorkOrderToSapService { @Override - public MesWorkOrderToSap insert(MesWorkOrder mesWorkOrder) { + public MesWorkOrderToSap insert(MesWorkOrderModel mesWorkOrder) { MesWorkOrderToSap mesWorkOrderToSap = new MesWorkOrderToSap(mesWorkOrder.getOrganizeCode(), mesWorkOrder.getOrganizeCode(), mesWorkOrder.getPartNo(), mesWorkOrder.getProductVersion(), mesWorkOrder.getQty(), mesWorkOrder.getPlanStartTime()); @@ -28,10 +28,10 @@ public class MesWorkOrderToSapServiceImpl extends BaseMesService mesWorkOrderList) { + public void doMesWorkOrder(String organizeCode,List mesWorkOrderList) { Pager pager = new Pager(1,1); DdlPackBean ddlPackBean = null; - for (MesWorkOrder mesWorkOrder : mesWorkOrderList) { + for (MesWorkOrderModel mesWorkOrder : mesWorkOrderList) { mesWorkOrder.setOrganizeCode(organizeCode); mesWorkOrder.setModifyUser("job"); //计划开始时间+物料查询发送Sap的数据 diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesFileServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesFileServiceImpl.java new file mode 100644 index 0000000..87d5642 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesFileServiceImpl.java @@ -0,0 +1,136 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.file; + +import cn.estsh.i3plus.ext.mes.api.base.file.IMesFileService; +import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.SysFile; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.fileservice.ImppFileService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; + +/** + * @Description : 文件上传下载 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/17 14:21 + * @Modify: + **/ +@Slf4j +@Service +public class MesFileServiceImpl implements IMesFileService { + + @Autowired + private ImppFileService imppFileService; + + @Override + public SysFile uploadFile(MultipartFile file) { + SysFile sysFile; + try { + log.info("文件大小{}", file.getBytes().length); + sysFile = save2FastDfs(file); + log.info("after save2FastDfs {}", sysFile); + } catch (IOException e) { + log.error("FastDFS上传文件出错:{}", e.getMessage() + "\r" + e.getStackTrace()); + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode()) + .setErrorDetail("上传文件至文件服务器出错了。信息为:%s", e.getMessage()) + .build(); + } + if (null == sysFile) { + log.error("FastDFS上传文件出错"); + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode()) + .setErrorDetail("FastDFS上传文件出错") + .build(); + } + if (StringUtils.isEmpty(sysFile.getFileTypeId())) { + log.error("FastDFS上传文件出错:{}", "未在字典中定义该文件类型,无法上传成功,请先添加file_type字典"); + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) + .setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode()) + .setErrorDetail("未在字典中定义该文件类型,无法上传成功,请先添加file_type字典") + .build(); + } + return sysFile; + } + + /** + * 上传文件至FastDfs,目前私有,因为没有别的地方进行调用。 + * + * @param multipartFile 文件 + * @return 带有URL地址的对象 + * @throws IOException + */ + private SysFile save2FastDfs(MultipartFile multipartFile) throws IOException { + SysFile sysFile = imppFileService.upload(multipartFile, CommonEnumUtil.SOFT_TYPE.MES.getValue()); + return sysFile; + } + + @Override + public void getFileByUrl(HttpServletResponse resp, String fileUrl) { + InputStream inputStream = getInputStream(fileUrl); + writeFile(resp, inputStream); + } + + private static InputStream getInputStream(String urlPath) { + InputStream inputStream = null; + HttpURLConnection httpURLConnection; + try { + URL url = new URL(urlPath); + httpURLConnection = (HttpURLConnection) url.openConnection(); + httpURLConnection.setConnectTimeout(3000); + httpURLConnection.setDoInput(true); + httpURLConnection.setRequestMethod("GET"); + int responseCode = httpURLConnection.getResponseCode(); + System.out.println("responseCode is:" + responseCode); + if (responseCode == HttpURLConnection.HTTP_OK) { + inputStream = httpURLConnection.getInputStream(); + } else { + inputStream = httpURLConnection.getErrorStream(); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return inputStream; + } + + private static void writeFile(HttpServletResponse resp, InputStream inputStream) { + OutputStream out = null; + try { + out = resp.getOutputStream(); + int len; + byte[] b = new byte[1024]; + while ((len = inputStream.read(b)) != -1) { + out.write(b, 0, len); + } + out.flush(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (out != null) { + out.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + +} diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesModuleExcelServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesModuleExcelServiceImpl.java new file mode 100644 index 0000000..ef6dd46 --- /dev/null +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/file/MesModuleExcelServiceImpl.java @@ -0,0 +1,135 @@ +package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.file; + +import cn.estsh.i3plus.ext.mes.api.base.file.IMesFileService; +import cn.estsh.i3plus.ext.mes.api.base.file.IMesModuleExcelService; +import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesModuleExcelDao; +import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base.BaseMesService; +import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; +import cn.estsh.i3plus.ext.mes.pojo.sqlpack.MesExtHqlPack; +import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +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.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.mes.bean.MesFile; +import cn.estsh.i3plus.pojo.mes.bean.MesModuleExcel; +import cn.estsh.i3plus.pojo.mes.model.MesModuleExcelModel; +import cn.estsh.i3plus.pojo.mes.repository.MesFileRepository; +import cn.estsh.i3plus.pojo.platform.bean.SysFile; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * @Description : 模块EXCEL管理表 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/6/17 14:52 + * @Modify: + **/ +@Slf4j +@Service +public class MesModuleExcelServiceImpl extends BaseMesService implements IMesModuleExcelService { + + @Autowired + private IMesModuleExcelDao mesModuleExcelDao; + + @Autowired + private IMesFileService mesFileService; + + @Autowired + private MesFileRepository mesFileRDao; + + @Override + public ListPager queryModuleExcelByPager(MesModuleExcel mesModuleExcel, Pager pager) { + pager = PagerHelper.getPager(pager, mesModuleExcelDao.queryModuleExcelCount(mesModuleExcel)); + List moduleExcelManageModelList = mesModuleExcelDao.queryModuleExcelByPager(mesModuleExcel, pager); + return new ListPager(moduleExcelManageModelList, pager); + } + + @Override + public void insertModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel) { + DdlPackBean packBean = MesExtHqlPack.getAllBaseData(mesModuleExcel.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesModuleExcel.getModuleCode(), MesExtConstWords.MODULE_CODE, packBean); + MesModuleExcel moduleExcelManageDb = baseRDao.getByProperty(packBean); + if (null != moduleExcelManageDb) { + MesException.throwMesBusiException("模块代码【%s】记录已存在", mesModuleExcel.getModuleCode()); + } + + SysFile sysFile = mesFileService.uploadFile(file); + if (sysFile.getFileTypeId() == null) { + log.error("FastDFS上传文件出错:{}", "未在字典中定义该文件类型,无法上传成功,请先添加file_type字典"); + MesException.throwMesBusiException("未在字典中定义该文件类型,无法上传成功,请先添加file_type字典"); + } + + MesFile f = getMesFile(file, mesModuleExcel); + mesModuleExcel.setFileId(mesFileRDao.insert(f).getId()); + ConvertBean.serviceModelInitialize(mesModuleExcel, mesModuleExcel.getCreateUser()); + baseRDao.insert(mesModuleExcel); + } + + @Override + public void updateModuleExcel(MultipartFile file, MesModuleExcel mesModuleExcel) { + MesModuleExcel moduleExcelManageDb = baseRDao.getById(mesModuleExcel.getId()); + if (moduleExcelManageDb == null) { + MesException.throwMesBusiException("ID【%s】记录不存在", mesModuleExcel.getId()); + } + + if (file == null && StringUtils.isEmpty(mesModuleExcel.getFileId())) { + MesException.throwMesBusiException("上传的文件为null,后台未能接收到"); + } + + //改变文件时清除fileUrl + if (StringUtils.isEmpty(mesModuleExcel.getFileUrl())) { + MesFile mesFile = getMesFile(file, mesModuleExcel); + moduleExcelManageDb.setFileId(mesFileRDao.insert(mesFile).getId()); + } + moduleExcelManageDb.setModuleName(mesModuleExcel.getModuleName()); + ConvertBean.serviceModelUpdate(moduleExcelManageDb, mesModuleExcel.getModifyUser()); + baseRDao.update(moduleExcelManageDb); + } + + @Override + public void doDownLoadModuleExcel(HttpServletResponse resp, String fileUrl) { + mesFileService.getFileByUrl(resp, fileUrl); + } + + @Override + public MesFile getTemplateFile(String organizeCode, String templateCode) { + MesModuleExcel moduleExcelManageDb = baseRDao.getByProperty( + new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.MODULE_CODE}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), templateCode}); + if (null == moduleExcelManageDb || StringUtils.isEmpty(moduleExcelManageDb.getFileId())) { + MesException.throwMesBusiException("模板代码为【%s】数据信息不存在", templateCode); + } + MesFile fileDb = mesFileRDao.getById(moduleExcelManageDb.getFileId()); + if (null == fileDb || StringUtils.isEmpty(fileDb.getFileUrl())) { + MesException.throwMesBusiException("模板代码为【%s】对应文件信息不存在", templateCode); + } + return fileDb; + } + + private MesFile getMesFile(MultipartFile file, MesModuleExcel mesModuleExcel) { + SysFile sysFile = mesFileService.uploadFile(file); + MesFile mesFile = new MesFile(); + mesFile.setOrganizeCode(mesModuleExcel.getOrganizeCode()); + mesFile.setFileName(sysFile.getDfsFileName()); + mesFile.setFileUrl(sysFile.getFilePath()); + mesFile.setFileSize(String.valueOf(sysFile.getFileSize())); + mesFile.setFileType(String.valueOf(sysFile.getFileTypeName())); + mesFile.setFileOriginName(sysFile.getFileOriginalName()); + mesFile.setGroupName(sysFile.getDfsGroupName()); + mesFile.setSyncTag(0); + ConvertBean.serviceModelInitialize(mesFile, mesModuleExcel.getModifyUser()); + return mesFile; + } + +}