diff --git a/modules/i3plus-ext-mes-api/pom.xml b/modules/i3plus-ext-mes-api/pom.xml
index 7fe786b..4b24fca 100644
--- a/modules/i3plus-ext-mes-api/pom.xml
+++ b/modules/i3plus-ext-mes-api/pom.xml
@@ -8,13 +8,26 @@
impp.framework
impp-framework-boot
+
+
+ i3plus-platform-common
+ i3plus.platform
+
+
i3plus.pojo
i3plus-pojo-mes
+ 1.0.0-yfai
+
+
+
+ i3plus.platform
+ i3plus-platform-common
+ 1.0.0.1-patch
+ pom
-
i3plus.ext.mes
i3plus-ext-mes-pojo
diff --git a/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IBaseMesService.java b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IBaseMesService.java
new file mode 100644
index 0000000..bc9b3be
--- /dev/null
+++ b/modules/i3plus-ext-mes-api/src/main/java/cn/estsh/i3plus/ext/mes/api/base/IBaseMesService.java
@@ -0,0 +1,63 @@
+package cn.estsh.i3plus.ext.mes.api.base;
+
+import cn.estsh.i3plus.pojo.base.bean.BaseBean;
+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 io.swagger.annotations.ApiOperation;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @CreateDate 2021/10/20 10:27
+ * @Author 尹肖
+ */
+public interface IBaseMesService {
+
+ /**
+ * 获取当前服务Class
+ *
+ * @return
+ */
+ Class getMesClass();
+
+ @ApiOperation(value = "查询列表", notes = "组合查询,外带分页功能")
+ ListPager queryPager(T bean, Pager pager);
+
+ @ApiOperation(value = "查询列表", notes = "组合查询,外带分页功能")
+ ListPager queryPagerWhere(Pager pager, DdlPackBean packBean);
+
+ @ApiOperation(value = "查询列表", notes = "查询所有数据")
+ List findAll(DdlPackBean packBean);
+
+ @ApiOperation(value = "查询数据", notes = "根据ID查询信息")
+ T get(Long id);
+
+ @ApiOperation(value = "新增信息", notes = "新增信息")
+ T insert(T bean);
+
+ @ApiOperation(value = "批量新增数据", notes = "批量新增数据")
+ List insertBatch(List bean);
+
+ @ApiOperation(value = "修改信息", notes = "修改信息")
+ T update(T bean);
+
+ @ApiOperation(value = "批量修改信息", notes = "批量修改信息")
+ void updates(Iterable beans);
+
+ @ApiOperation(value = "删除数据", notes = "根据ID软删除信息")
+ void deleteWeaklyById(Long id, String userName);
+
+ @ApiOperation(value = "删除数据", notes = "根据ID批量删除信息")
+ void deleteWeaklyByIds(Long[] ids, String userName);
+
+ @ApiOperation(value = "强删除数据", notes = "根据ID强删除")
+ void deleteById(Long id);
+
+ @ApiOperation(value = "强删除数据", notes = "根据ID批量强删除")
+ void deleteByIds(Long[] ids);
+
+ @ApiOperation(value = "根据id更新启用或禁用", notes = "根据id更新启用或禁用")
+ int updateValid(Long id, int status, String userName);
+}
diff --git a/modules/i3plus-ext-mes-apiservice/pom.xml b/modules/i3plus-ext-mes-apiservice/pom.xml
index e1d59e9..8dc6e4c 100644
--- a/modules/i3plus-ext-mes-apiservice/pom.xml
+++ b/modules/i3plus-ext-mes-apiservice/pom.xml
@@ -73,11 +73,14 @@
i3plus.platform
i3plus-platform-common
+ 1.0.0.1-patch
i3plus.platform
i3plus-platform-plugin
+ 1.0.0.1-patch
+
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/config/AuthUtilExt.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/config/AuthUtilExt.java
new file mode 100644
index 0000000..db3148f
--- /dev/null
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/config/AuthUtilExt.java
@@ -0,0 +1,23 @@
+package cn.estsh.i3plus.ext.mes.apiservice.config;
+
+import cn.estsh.impp.framework.boot.auth.AuthUtil;
+
+/**
+ * @Description:
+ * @CreateDate: 2022/11/25 13:46
+ * @Author: simon.song
+ */
+public class AuthUtilExt {
+
+ public static String getOrganizeCode() {
+ return AuthUtil.getOrganize().getOrganizeCode();
+// return "22060";
+ }
+ public static String getUserCode() {
+ return AuthUtil.getSessionUser().getUserCode();
+ }
+ public static String getUserName() {
+ return AuthUtil.getSessionUser().getUserName();
+ }
+
+}
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
new file mode 100644
index 0000000..8382c41
--- /dev/null
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/BaseMesController.java
@@ -0,0 +1,483 @@
+package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
+
+import cn.estsh.i3plus.ext.mes.api.base.IBaseMesService;
+import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
+import cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel.MesExcelTool;
+import cn.estsh.i3plus.icloud.core.sdk.ICoreMessageCloud;
+import cn.estsh.i3plus.icloud.core.sdk.ICoreSysFileCloud;
+import cn.estsh.i3plus.platform.common.convert.ConvertBean;
+import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
+import cn.estsh.i3plus.platform.common.tool.ExcelTool;
+import cn.estsh.i3plus.platform.common.tool.FileTool;
+import cn.estsh.i3plus.platform.common.tool.StringTool;
+import cn.estsh.i3plus.platform.common.tool.ZipTool;
+import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
+import cn.estsh.i3plus.pojo.base.bean.*;
+import cn.estsh.i3plus.pojo.base.common.Pager;
+import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
+import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
+import cn.estsh.i3plus.pojo.platform.bean.SysFile;
+import cn.estsh.impp.framework.base.controller.BaseController;
+import cn.estsh.impp.framework.boot.auth.AuthUtil;
+import cn.estsh.impp.framework.boot.exception.ImppBusiException;
+import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
+import cn.estsh.impp.framework.boot.fileservice.ImppFileService;
+import cn.estsh.impp.framework.boot.util.RedisCacheTool;
+import cn.estsh.impp.framework.boot.util.ResultBean;
+import cn.estsh.impp.framework.boot.util.ValidatorBean;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.persistence.EntityManager;
+import java.io.File;
+import java.io.FileInputStream;
+import java.lang.reflect.ParameterizedType;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description :
+ * @Reference :
+ * @Author : yx
+ * @CreateDate : 2020-05-20 18:16
+ * @Modify:
+ **/
+public abstract class BaseMesController extends BaseController {
+ /**
+ * 主数据Service对象
+ */
+ @Autowired
+ protected IBaseMesService baseService;
+ /**
+ * entityManager 用于导入导出
+ */
+ @Autowired
+ protected EntityManager entityManager;
+
+ /**
+ * fastDfs客户端
+ */
+ @Autowired
+ private ImppFileService fileService;
+
+ @Autowired
+ private ICoreSysFileCloud coreSysFileCloud;
+
+ @Autowired
+ private ICoreMessageCloud coreMessageCloud;
+
+ /**
+ * 泛型class对象
+ */
+ protected final Class mesClass;
+
+ public BaseMesController() {
+ // 通过反射获取泛型的真实类型
+ ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
+ mesClass = (Class) pt.getActualTypeArguments()[0];
+ }
+
+ //初始化dao
+ public IBaseMesService getBaseService() {
+ return baseService;
+ }
+
+ //插入时验证
+ public void validateInsert(T bean) throws NoSuchFieldException {
+ /* 新增数据校验 */
+ ValidatorBean.beginValid(bean);
+ }
+
+ //插入后执行
+ public void afterInsert(T t) {
+ //子类实现
+ }
+
+ //修改时验证
+ public void validateUpdate(T bean) throws NoSuchFieldException {
+ /* 修改数据检查 */
+ ValidatorBean.beginValid(bean).checkNotZero("id", bean.getId());
+ }
+
+ //修改时验证
+ private void validateUpdateValid(Long id) {
+ if (id == null) throw new ImppBusiException("请选择需要操作的数据");
+ }
+
+ //修改后执行
+ public void afterUpdate(T t) {
+ //子类实现
+ }
+
+ //导入时验证
+ public void validateImport(List beanList) throws NoSuchFieldException {
+ /* 新增数据校验 */
+ ValidatorBean.beginValid(beanList);
+ }
+
+ //导入时验证
+ public void afterImport(List beanList) throws NoSuchFieldException {
+ }
+
+ //查询后执行
+ public void afterGet(T t) {
+ //子类实现
+ }
+
+ //查询后执行
+ public void afterList(List l) {
+ //子类实现
+ }
+
+ //查询所有时的默认条件
+ private DdlPackBean listAllPackBean = null;
+
+ public void setListAllPackBean(DdlPackBean packBean) {
+ this.listAllPackBean = packBean;
+ }
+
+ /**
+ * 查询信息 分页 + 组合
+ *
+ * @param bean
+ * @param pager
+ * @return
+ */
+ @GetMapping(value = "/query")
+ @ApiOperation(value = "查询信息带分页", notes = "组合查询,外带分页功能")
+ public ResultBean queryByPager(T bean, Pager pager) {
+ try {
+ bean.setOrganizeCode(AuthUtilExt.getOrganizeCode());
+ ListPager listPager = getBaseService().queryPager(bean, pager);
+ return ResultBean.success("操作成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
+ .setListPager(listPager);
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ @GetMapping(value = "/list")
+ @ApiOperation(value = "查询所有信息", notes = "查询所有数据")
+ public ResultBean list() {
+ try {
+ if (listAllPackBean == null) {
+ //默认查询所有
+ listAllPackBean = DdlPackBean.getDdlPackBean(AuthUtil.getOrganizeCode());
+ }
+ List list = getBaseService().findAll(listAllPackBean);
+ afterList(list);
+
+ return ResultBean.success("操作成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
+ .setResultList(list);
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ @GetMapping(value = "/get/{id}")
+ @ApiOperation(value = "根据ID查询信息", notes = "根据ID查询信息")
+ public ResultBean getById(@PathVariable("id") Long id) {
+ try {
+ // 参数校验
+ ValidatorBean.checkIsNumber(id, ImppExceptionEnum.PARAMETER_EXCEPTION.getDescription());
+ T t = (T) getBaseService().get(id);
+ afterGet(t);
+ return ResultBean.success("操作成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
+ .setResultObject(t);
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ @PostMapping(value = "/insert")
+ @ApiOperation(value = "新增信息")
+ public ResultBean insert(@RequestBody T bean) {
+ try {
+ validateInsert(bean);
+ //新增初始化
+ bean.setOrganizeCode(AuthUtilExt.getOrganizeCode());
+ ConvertBean.serviceModelInitialize(bean, AuthUtil.getSessionUser().getUserName());
+ T t = (T) getBaseService().insert(bean);
+ afterInsert(t);
+ return ResultBean.success("操作成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
+ .setResultObject(t);
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e).build();
+ } catch (Exception e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ @PostMapping(value = "/update")
+ @ApiOperation(value = "修改信息", notes = "修改信息")
+ public ResultBean update(@RequestBody T bean) {
+ try {
+ bean.setOrganizeCode(AuthUtilExt.getOrganizeCode());
+ validateUpdate(bean);
+ T t = getBaseService().update(bean);
+ afterUpdate(t);
+ return ResultBean.success("修改成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ } catch (Exception e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ @PostMapping(value = "/update-list")
+ @ApiOperation(value = "批量修改信息", notes = "批量修改信息")
+ public ResultBean updateList(List beans) {
+ try {
+ String organizeCode = AuthUtilExt.getOrganizeCode();
+ for (T bean : beans) {
+ bean.setOrganizeCode(organizeCode);
+ validateUpdate(bean);
+ T t = getBaseService().update(bean);
+ afterUpdate(t);
+ }
+ return ResultBean.success("修改成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ } catch (Exception e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ @DeleteMapping(value = "/delete-weakly-id")
+ @ApiOperation(value = "软删除信息")
+ public ResultBean batchDeleteWeaklyByIds(@PathVariable("ids") Long id) {
+ try {
+ // 数据校验
+ ValidatorBean.checkNotNull(id, "请选择需要删除的信息");
+ getBaseService().deleteWeaklyById(id, AuthUtil.getSessionUser().getUserName());
+ return ResultBean.success("删除信息成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ @DeleteMapping(value = "/delete-weakly")
+ @ApiOperation(value = "批量软删除信息")
+ public ResultBean batchDeleteWeaklyByIds(@RequestBody Long[] ids) {
+ try {
+ // 数据校验
+ ValidatorBean.checkNotNull(ids, "请选择需要删除的信息");
+ getBaseService().deleteWeaklyByIds(ids, AuthUtil.getSessionUser().getUserName());
+ return ResultBean.success("批量删除信息成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ @DeleteMapping(value = "/delete-id/{ids}")
+ @ApiOperation(value = "强删除信息")
+ public ResultBean batchDeleteByIds(@PathVariable("ids") Long id) {
+ try {
+ // 数据校验
+ ValidatorBean.checkNotNull(id, "请选择需要删除的信息");
+ getBaseService().deleteById(id);
+ return ResultBean.success("删除信息成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ @DeleteMapping(value = "/delete")
+ @ApiOperation(value = "批量强删除信息")
+ public ResultBean batchDeleteByIds(@RequestBody Long[] ids) {
+ try {
+ // 数据校验
+ ValidatorBean.checkNotNull(ids, "请选择需要删除的信息");
+ getBaseService().deleteByIds(ids);
+ return ResultBean.success("批量删除信息成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ @PostMapping(value = "/update-valid")
+ @ApiOperation(value = "根据id更新启用或禁用", notes = "根据id更新启用或禁用")
+ public ResultBean updateValid(Long id, int status) {
+ try {
+ validateUpdateValid(id);
+ getBaseService().updateValid(id, status, AuthUtilExt.getUserName());
+ return ResultBean.success("修改状态成功")
+ .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ } catch (Exception e) {
+ return ResultBean.fail(e);
+ }
+ }
+
+ /******************************************* 通用导入导出 *************************************/
+
+ @GetMapping(value = "/export")
+ @ApiOperation(value = "导出数据")
+ public ResultBean exportExcel(T bean, String[] colName, int pageSize, boolean needSendMessage) {
+ ListPager listPager;
+ List result = new ArrayList<>();
+ File zipFile = null;
+ File excelDir = null;
+ File excelFile;
+ ExcelTool excelTool;
+ try {
+ bean.setOrganizeCode(AuthUtilExt.getOrganizeCode());
+ Pager pager = new Pager(0);
+ // 判断是否超过excel最大导出数量设定值
+ int maxPageSize = RedisCacheTool.getSysConfigIntVal(PlatformConstWords.EXCEL_EXPORT_MAX_ROW, 20000);
+ if (pageSize == 0 || pageSize >= maxPageSize) {
+ pager.setPageSize(maxPageSize);
+ } else {
+ pager.setPageSize(pageSize);
+ }
+
+ // 数据校验
+ if (colName == null || colName.length == 0) {
+ Map colMap = ExcelTool.getColName(mesClass);
+ colName = new String[colMap.size()];
+ int i = 0;
+ for (String key : colMap.keySet()) {
+ colName[i++] = key;
+ }
+ }
+
+ excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
+ excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime());
+ excelDir.mkdir();
+ do {
+ listPager = baseService.queryPager(bean, pager);
+ pager = listPager.getObjectPager();
+
+ // 将excel导出至临时文件夹
+ excelFile = new File(MessageFormat.format("{0}{1}{2}{3}.xls", excelDir, File.separator, mesClass.getSimpleName(), pager.getCurrentPage()));
+ excelFile.createNewFile();
+ excelTool.exportData(excelFile, listPager.getObjectList(), mesClass, colName);
+
+ pager.setCurrentPage(pager.getCurrentPage() + 1);
+ } while (pager.getCurrentPage() <= pager.getTotalPages());
+
+ // 将所有excel文件打包上传
+ zipFile = ZipTool.zipFile(null, excelDir);
+ SysFile sysFile = fileService.upload(new FileInputStream(zipFile), zipFile.getName(),
+ StringTool.getStringFileSuffix(zipFile.getName(), true), CommonEnumUtil.SOFT_TYPE.MDM.getValue());
+ BaseResultBean baseResultBean = coreSysFileCloud.insertFile(sysFile);
+ if (!baseResultBean.isSuccess()) {
+ throw ImppExceptionBuilder.newInstance()
+ .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode())
+ .setErrorCode(ImppExceptionEnum.CLOUD_CALL_EXCEPTION.getCode())
+ .setErrorDetail(baseResultBean.errorMsg)
+ .build();
+ } else {
+ sysFile = baseResultBean.getResultObject();
+ }
+
+ result.add(sysFile);
+
+ // 是否发送站内信
+ if (needSendMessage) {
+ coreMessageCloud.insertSysMessage(ExcelTool.sendStationLetter(result, getSessionUser().getUser().getId()));
+ }
+
+ return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ } catch (Exception e) {
+ return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
+ } finally {
+ // 清理临时文件文件
+ if (zipFile != null) {
+ FileTool.deleteFile(zipFile.getPath());
+ }
+ if (excelDir != null) {
+ FileTool.deleteFile(excelDir.getPath());
+ }
+ }
+ }
+
+ @PostMapping(value = "/import")
+ @ApiOperation(value = "导入数据")
+ public ResultBean importExcel(@RequestParam("file") MultipartFile file) {
+ try {
+ MesExcelTool excelTool = new MesExcelTool(entityManager, RedisCacheTool.getImppRedis());
+ List beanList = excelTool.importData(file.getOriginalFilename(), file.getInputStream(), mesClass);
+
+ // 校验导入数据
+ validateImport(beanList);
+ String userName = AuthUtil.getSessionUser().getUserName();
+ String organizeCode = AuthUtil.getOrganize().getOrganizeCode();
+ // 导入数据初始化
+ for (T bean : beanList) {
+ ConvertBean.serviceModelInitialize(bean, userName);
+ bean.setOrganizeCode(organizeCode);
+ }
+ baseService.insertBatch(beanList);
+
+ // 导入后
+ afterImport(beanList);
+ return ResultBean.success("导入成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
+ } catch (ImppBusiException e) {
+ return ResultBean.fail(e);
+ } catch (Exception e) {
+ return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
+ }
+ }
+
+ @GetMapping(value = "/down-template")
+ @ApiOperation(value = "下载导入模板")
+ public ResultBean downExcelTemplate() {
+ try {
+ ExcelTool excelTool = new ExcelTool(entityManager, RedisCacheTool.getImppRedis());
+ String importTemplateCode = mesClass.getSimpleName() + "ImportTemplate";
+
+ // 查询服务器中是否存在模板文件
+ SysFile sysFile = null;
+ BaseResultBean baseResultBean = coreSysFileCloud.getSysFileByFileCode(importTemplateCode);
+ if (!baseResultBean.isSuccess()) {
+ throw ImppExceptionBuilder.newInstance()
+ .setSystemID(CommonEnumUtil.SOFT_TYPE.MDM.getCode())
+ .setErrorCode(ImppExceptionEnum.CLOUD_CALL_EXCEPTION.getCode())
+ .setErrorDetail(baseResultBean.errorMsg)
+ .build();
+ } else {
+ sysFile = baseResultBean.getResultObject();
+ }
+ if (sysFile == null) {
+ ImppFile fastDFSFile = new ImppFile(mesClass.getSimpleName() + "ImportTemplate.xls",
+ excelTool.importTemplate(mesClass), ".xls");
+ sysFile = fileService.upload(fastDFSFile, CommonEnumUtil.SOFT_TYPE.MES.getValue());
+ sysFile.setFileCode(importTemplateCode);
+ baseResultBean = coreSysFileCloud.insertFile(sysFile);
+ if (!baseResultBean.isSuccess()) {
+ throw ImppExceptionBuilder.newInstance()
+ .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
+ .setErrorCode(ImppExceptionEnum.CLOUD_CALL_EXCEPTION.getCode())
+ .setErrorDetail(baseResultBean.errorMsg)
+ .build();
+ } else {
+ sysFile = baseResultBean.getResultObject();
+ }
+ }
+ return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysFile);
+ } 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/controller/base/TestBaseController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/TestBaseController.java
index d9f18ff..c3154d5 100644
--- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/TestBaseController.java
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/base/TestBaseController.java
@@ -1,4 +1,8 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
-public class TestBaseController {
+import cn.estsh.i3plus.pojo.mes.bean.MesArea;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class TestBaseController extends BaseMesController{
}
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/TestBusiController.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/TestBusiController.java
index 22ec7d8..7fd6c59 100644
--- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/TestBusiController.java
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/controller/busi/TestBusiController.java
@@ -1,4 +1,10 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.busi;
-public class TestBusiController {
+import cn.estsh.i3plus.mes.apiservice.controller.CommonController;
+import cn.estsh.impp.framework.base.controller.BaseCommonController;
+import cn.estsh.impp.framework.base.controller.MesBaseController;
+
+public class TestBusiController extends MesBaseController {
+
+
}
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/MesExcelTool.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/MesExcelTool.java
new file mode 100644
index 0000000..d62e8e4
--- /dev/null
+++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/excel/MesExcelTool.java
@@ -0,0 +1,78 @@
+package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel;
+
+import cn.estsh.i3plus.mes.apiservice.util.DateUtil;
+import cn.estsh.i3plus.platform.common.tool.ExcelTool;
+import cn.estsh.i3plus.platform.common.tool.TimeTool;
+import cn.estsh.i3plus.pojo.base.util.BaseRedis;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFDataFormat;
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellType;
+
+import javax.persistence.EntityManager;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @Description:
+ * @CreateDate 2022/6/27 17:28
+ * @Author 尹肖
+ */
+public class MesExcelTool extends ExcelTool {
+ public MesExcelTool(EntityManager entityManager, BaseRedis redisRes) {
+ super(entityManager, redisRes);
+ }
+
+ @Override
+ protected Object getCellValue(Cell cell, Class cellClass) {
+ Object value = "";
+ if (cell == null) {
+ return null;
+ } else if (cell.getCellTypeEnum().equals(CellType.NUMERIC) && HSSFDateUtil.isCellDateFormatted(cell)) {
+ value = this.getDateCellValue(cell, cellClass);
+ return value;
+ } else {
+ cell.setCellType(CellType.STRING);
+ if ("null".equals(cell.getStringCellValue())) {
+ value = "";
+ } else if ((cellClass == Integer.class || cellClass == Long.class || cellClass == Double.class || cellClass == Float.class) && StringUtils.isBlank(cell.getStringCellValue())) {
+ value = null;
+ } else if (cellClass == String.class) {
+ value = cell.getStringCellValue();
+ } else if (cellClass == Integer.class) {
+ value = Integer.parseInt(cell.getStringCellValue());
+ } else if (cellClass == Long.class) {
+ value = Long.parseLong(cell.getStringCellValue());
+ } else if (cellClass == Double.class) {
+ value = Double.parseDouble(cell.getStringCellValue());
+ } else if (cellClass == Float.class) {
+ value = Float.parseFloat(cell.getStringCellValue());
+ }
+
+ return value;
+ }
+ }
+
+ Object getDateCellValue(Cell cell, Class cellClass) {
+ Object value = null;
+ if (cell.getCellTypeEnum().equals(CellType.NUMERIC) && HSSFDateUtil.isCellDateFormatted(cell)) {
+ if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm:ss")) {
+ value = TimeTool.pareDateToString("HH:mm:ss", cell.getDateCellValue());
+ } else if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("yyyy-MM-dd")) {
+ value = TimeTool.pareDateToString("yyyy-MM-dd", cell.getDateCellValue());
+ } else if (cell.getCellStyle().getDataFormat() == 58) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ double numericCellValue = cell.getNumericCellValue();
+ Date date = HSSFDateUtil.getJavaDate(numericCellValue);
+ value = sdf.format(date);
+ } else {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DateUtil.BASE_FORMAT);
+ double numericCellValue = cell.getNumericCellValue();
+ value = simpleDateFormat.format(HSSFDateUtil.getJavaDate(numericCellValue));
+ }
+ }
+
+ return value;
+ }
+}
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/resources/application-cus-test.properties b/modules/i3plus-ext-mes-apiservice/src/main/resources/application-cus-test.properties
new file mode 100644
index 0000000..b7930ce
--- /dev/null
+++ b/modules/i3plus-ext-mes-apiservice/src/main/resources/application-cus-test.properties
@@ -0,0 +1,22 @@
+#\u5B89\u9053\u62D3\u6570\u636E\u6E90
+impp.yfas.datasource.isopen=true
+#WMS\u6570\u636E\u6E90
+impp.mes.datasource.isopen=true
+#\u6570\u636E\u6E90\u7684\u522B\u540D
+impp.mes.datasource.alias=mesDataSource
+impp.mes.datasource.driver-class-name=com.mysql.jdbc.Driver
+impp.mes.datasource.jdbc-url=jdbc:mysql://192.168.1.241:3306/impp_i3_mes_yf?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+#impp.mes.datasource.jdbc-url=jdbc:sqlserver://139.224.200.147:20037;DatabaseName=impp_i3_mes;
+impp.mes.datasource.username=root
+#impp.mes.datasource.password=Test123!
+impp.mes.datasource.password=estsh123
+#Admin123!
+
+
+#\u6570\u636E\u6E90\u7684\u522B\u540D
+impp.yfas.datasource.alias=yfasDataSource
+impp.yfas.datasource.driver-class-name=com.mysql.jdbc.Driver
+impp.yfas.datasource.jdbc-url=jdbc:mysql://192.168.1.241:3306/impp_i3_mes_yf?autoReconnect=true&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+#impp.yfas.datasource.jdbc-url=jdbc:sqlserver://139.224.200.147:20037;DatabaseName=impp_i3_mes;
+impp.yfas.datasource.username=root
+impp.yfas.datasource.password=estsh123
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/resources/application-test.properties b/modules/i3plus-ext-mes-apiservice/src/main/resources/application-test.properties
index 8de857a..b32c4c6 100644
--- a/modules/i3plus-ext-mes-apiservice/src/main/resources/application-test.properties
+++ b/modules/i3plus-ext-mes-apiservice/src/main/resources/application-test.properties
@@ -148,16 +148,7 @@ spring.data.mongodb.username=sa
spring.data.mongodb.password=i3plus
spring.data.mongodb.port=27017
################ \u4E3B\u6570\u636E\u6E90 ################
-# mysql
-impp.write.datasource.driver-class-name=com.mysql.jdbc.Driver
-impp.write.datasource.jdbc-url=jdbc:mysql://192.168.1.241:3306/impp_i3_mes_pcn?autoReconnect=true&useSSL=false&characterEncoding=utf-8
-impp.write.datasource.username=root
-impp.write.datasource.password=estsh123
-impp.read.datasource.type=com.zaxxer.hikari.HikariDataSource
-impp.read.datasource.driver-class-name=com.mysql.jdbc.Driver
-impp.read.datasource.jdbc-url=jdbc:mysql://192.168.1.241:3306/impp_i3_mes_pcn?autoReconnect=true&useSSL=false&characterEncoding=utf-8
-impp.read.datasource.username=root
-impp.read.datasource.password=estsh123
+
##############\u5B9A\u65F6\u4EFB\u52A1\u6301\u4E45\u5316##############
impp.schedule.open=false
impp.schedule.datasource.driver-class-name=com.mysql.jdbc.Driver
@@ -214,44 +205,49 @@ slm.app.id=20190513
###################\uFFFD\uFFFD\u013F\uFFFD\uFFFD\uFFFD\u077F\uFFFD\u02B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B7\uFFFD\uFFFD##################################################
project.entity.path=cn.estsh.i3plus.pojo
-#impp.datasource.type=druidDataSource
-#
-##\u6700\u5927\u7EBF\u7A0B\u6570
-#spring.datasource.maximum-pool-size=200
-#
-##\u6700\u5C0F\u8FDE\u63A5\u7EBF\u7A0B\u6570
-#spring.datasource.min-idle=50
-#
-##\u521D\u59CB\u5316\u8FDE\u63A5\u6C60\u5927\u5C0F
-#spring.datasource.initial-size=50
-#
-##\u63A2\u6D3B\u3001\u9A8C\u8BC1\u8FDE\u63A5\u6709\u6548\u6027\u7684\u67E5\u8BE2
-#spring.datasource.validation-query=select 1
-#
-##\u914D\u7F6E\u83B7\u53D6\u8FDE\u63A5\u7B49\u5F85\u8D85\u65F6\u7684\u65F6\u95F4
-#spring.datasource.max-wait=600000
-#
-##\u914D\u7F6E\u4E00\u4E2A\u94FE\u63A5\u5728\u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u751F\u5B58\u65F6\u95F4
-#spring.datasource.minEvictableIdleTimeMillis=600000
-#
-##\u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u8FDE\u63A5\u6C60\u4E2D\u6700\u5927\u7684\u751F\u5B58\u65F6\u95F4\uFF0C\u8D85\u8FC7\u6700\u5927\u751F\u5B58\u65F6\u95F4\u4F1A\u88AB\u79FB\u9664\uFF0C\u5355\u4F4D\u6BEB\u79D2
-#spring.datasource.maxEvictableIdleTimeMillis=1800000
-#
-##\u914D\u7F6E\u95F4\u9694\u591A\u4E45\u83DC\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u6BEB\u79D2\u3002\u592A\u957F\u53EF\u80FD\u5BFC\u81F4\u65E0\u6CD5\u53CA\u65F6\u68C0\u6D4B\u5230\u8FDE\u63A5\u4E2D\u65AD
-#spring.datasource.timeBetweenEvictionRunsMillis=30000
-#
-##\u914D\u7F6E\u4ECE\u8FDE\u63A5\u6C60\u83B7\u53D6\u8FDE\u63A5\u65F6\uFF0C\u5F53\u8FDE\u63A5\u7A7A\u95F2\u65F6\u95F4\u5927\u4E8EtimeBetweenEvictionRunsMillis\u65F6\uFF0C\u662F\u5426\u68C0\u67E5\u94FE\u63A5\u6709\u6548\u6027\uFF0Ctrue\u6BCF\u6B21\u90FD\u68C0\u67E5\uFF0Cfalse\u4E0D\u68C0\u67E5
-#spring.datasource.testWhileIdle=false
-#
-##\u914D\u7F6E\u4ECE\u8FDE\u63A5\u6C60\u83B7\u53D6\u8FDE\u63A5\u65F6\u548C\u5411\u8FDE\u63A5\u6C60\u89C4\u8303\u8FDE\u63A5\u65F6\uFF0C\u662F\u5426\u68C0\u67E5\u94FE\u63A5\u6709\u6548\u6027
-##\u6BCF\u6B21\u83B7\u53D6\u6216\u5F52\u8FD8\u8FDE\u63A5\u90FD\u68C0\u6D4B\u592A\u9891\u7E41\uFF0C\u9664\u975E\u7279\u522B\u91CD\u8981\u6216\u7F51\u7EDC\u7279\u522B\u4E0D\u53EF\u9760\u7B49\u60C5\u51B5\uFF0C\u5EFA\u8BAE\u7528testWhileIdle + timeBetweenEvictionRunsMillis\u4EE3\u66FF
-#spring.datasource.testOnBorrow=false
-#spring.datasource.testOnReturn=false
-#
-##\u914D\u7F6E\u662F\u5426\u5B9A\u671F\u63A2\u6D3B
-#spring.datasource.keepAlive=true
-##\u914D\u7F6E\u63A2\u6D3B\u95F4\u9694
-#spring.datasource.keepAliveBetweenTimeMillis=120000
-#
-##\u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u7684\u6700\u5927\u4F7F\u7528\u6B21\u6570\uFF0C\u907F\u514D\u957F\u65F6\u95F4\u4F7F\u7528\u76F8\u540C\u94FE\u63A5\u9020\u6210\u670D\u52A1\u5668\u7AEF\u8D1F\u8F7D\u4E0D\u5747\u8861
-#spring.datasource.phyMaxUseCount=1000
+
+############################????#######################################
+###spring.shardingsphere.datasource.names=master,slave
+spring.shardingsphere.datasource.names=master,slave
+##??
+spring.shardingsphere.datasource.master.type=com.zaxxer.hikari.HikariDataSource
+spring.shardingsphere.datasource.master.driver-class-name= com.mysql.jdbc.Driver
+spring.shardingsphere.datasource.master.JdbcUrl=jdbc:mysql://192.168.1.241:3306/impp_i3_mes_yf?autoReconnect=true&useSSL=false&characterEncoding=utf-8
+spring.shardingsphere.datasource.master.username=root
+spring.shardingsphere.datasource.master.password=estsh123
+
+spring.shardingsphere.datasource.master.maximum-pool-size=200
+spring.shardingsphere.datasource.master.minimum-idle=200
+spring.shardingsphere.datasource.master.idle-timeout=500000
+spring.shardingsphere.datasource.master.connection-timeout=600000
+spring.shardingsphere.datasource.master.max-lifetime=7000000
+spring.shardingsphere.datasource.master.connection-test-query=select 1
+spring.shardingsphere.datasource.master.keep-alive-time=3500000
+
+
+##??
+spring.shardingsphere.datasource.slave.type=com.zaxxer.hikari.HikariDataSource
+spring.shardingsphere.datasource.slave.driver-class-name= com.mysql.jdbc.Driver
+spring.shardingsphere.datasource.slave.JdbcUrl=jdbc:mysql://192.168.1.241:3306/impp_i3_mes_yf?autoReconnect=true&useSSL=false&characterEncoding=utf-8
+spring.shardingsphere.datasource.slave.username=root
+spring.shardingsphere.datasource.slave.password=estsh123
+
+spring.shardingsphere.datasource.slave.maximum-pool-size=200
+spring.shardingsphere.datasource.slave.minimum-idle=200
+spring.shardingsphere.datasource.slave.idle-timeout=500000
+spring.shardingsphere.datasource.slave.connection-timeout=600000
+spring.shardingsphere.datasource.slave.max-lifetime=7000000
+spring.shardingsphere.datasource.slave.connection-test-query=select 1
+spring.shardingsphere.datasource.slave.keep-alive-time=3500000
+
+
+##??????
+spring.shardingsphere.sharding.master-slave-rules.ds0.master-data-source-name=master
+spring.shardingsphere.sharding.master-slave-rules.ds0.slave-data-source-names=slave
+#??datasource ????????????????
+#??? gg
+#spring.shardingsphere.sharding.default-data-source-name=ds0
+#??????????sql??
+spring.shardingsphere.props.sql.show = false
+
+spring.shardingsphere.props.max.connections.size.per.query = 10
diff --git a/modules/i3plus-ext-mes-apiservice/src/main/resources/application.properties b/modules/i3plus-ext-mes-apiservice/src/main/resources/application.properties
index 832381d..c98ff69 100644
--- a/modules/i3plus-ext-mes-apiservice/src/main/resources/application.properties
+++ b/modules/i3plus-ext-mes-apiservice/src/main/resources/application.properties
@@ -1,7 +1,7 @@
#\u9879\u76EE\u540D\u79F0
-spring.application.name=i3mes
+spring.application.name=mes-zxw
#\u4F7F\u7528\u914D\u7F6E
-spring.profiles.active=docker,cus-docker
+spring.profiles.active=test
######### \u81EA\u5B9A\u4E49\u53C2\u6570 #########
#\u9879\u76EE\u63CF\u8FF0\u4FE1\u606F\uFF08swagger\u4E2D\u663E\u5F0F\uFF09\uFF0C\u4E2D\u6587\u4F7F\u7528uncode\u8F6C
desc.application.name=\u751F\u4EA7\u6267\u884C\u7CFB\u7EDF
diff --git a/modules/i3plus-ext-mes-icloud/pom.xml b/modules/i3plus-ext-mes-icloud/pom.xml
index 1485500..bb6c818 100644
--- a/modules/i3plus-ext-mes-icloud/pom.xml
+++ b/modules/i3plus-ext-mes-icloud/pom.xml
@@ -28,6 +28,7 @@
i3plus.platform
i3plus-platform-common
+
diff --git a/modules/i3plus-ext-mes-pojo/pom.xml b/modules/i3plus-ext-mes-pojo/pom.xml
index 6bf6f1c..76022ef 100644
--- a/modules/i3plus-ext-mes-pojo/pom.xml
+++ b/modules/i3plus-ext-mes-pojo/pom.xml
@@ -15,19 +15,13 @@
i3plus.pojo
- i3plus-pojo-base
-
-
-
- i3plus.pojo
i3plus-pojo-mes
-
+ 1.0.0-yfai
-
- i3plus.pojo
- i3plus-pojo-andon
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index d011649..9c8ac47 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,9 +60,7 @@
i3plus-icloud
${i3plus.icloud.version}
pom
- import
-
i3plus.pojo
i3plus-pojo
@@ -84,7 +82,6 @@
i3plus-mes
${i3plus.mes.version}
pom
- import
@@ -144,6 +141,39 @@
poi-ooxml-schemas
4.1.2
+
+ i3plus.pojo
+ i3plus-pojo-mes
+ 1.0.0-yfai
+
+
+
+ i3plus.pojo
+ i3plus-pojo-andon
+ 1.0.0-yfai
+
+
+ i3plus.platform
+ i3plus-platform-common
+ 1.0.0.1-patch
+
+
+ i3plus.icloud
+ i3plus-icloud-core
+ ${i3plus.icloud.version}
+
+
+
+ i3plus.icloud
+ i3plus-icloud-andon
+ ${i3plus.icloud.version}
+
+
+
+ i3plus.icloud
+ i3plus-icloud-softswitch
+ ${i3plus.icloud.version}
+