瀏覽代碼

设备子系统-保修商列表导入代码提交,库存定时任务接口提交

zhoudazhuang 1 年之前
父節點
當前提交
f786d373e8
共有 26 個文件被更改,包括 1492 次插入7 次删除
  1. 17 0
      cx-equipment/cx-equipment-common/pom.xml
  2. 65 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/CommonDao.java
  3. 4 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquOverhaulInventoryMapperDao.java
  4. 17 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquOverhaulInventorySetMapperDao.java
  5. 16 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquWarrantyProviderMapperDao.java
  6. 7 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/PagePartDao.java
  7. 17 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquOverhaulInventorySetService.java
  8. 25 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquWarrantyProviderService.java
  9. 10 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/PagePartService.java
  10. 5 2
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquOverhaulInventoryServiceImpl.java
  11. 33 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquOverhaulInventorySetServiceImpl.java
  12. 158 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquWarrantyProviderServiceImpl.java
  13. 16 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/PagePartServiceImpl.java
  14. 145 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/utils/BusinessExcelUtil.java
  15. 31 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/utils/ExcelUtils.java
  16. 45 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/utils/FileCheckUtil.java
  17. 338 0
      cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/utils/StringUtil.java
  18. 40 0
      cx-equipment/cx-equipment-common/src/main/resources/mybatis/business/CommonDao.xml
  19. 22 0
      cx-equipment/cx-equipment-common/src/main/resources/mybatis/business/EquOverhaulInventoryDao.xml
  20. 21 0
      cx-equipment/cx-equipment-common/src/main/resources/mybatis/business/EquOverhaulInventorySetDao.xml
  21. 2 3
      cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquOverhaulInventoryDo.java
  22. 134 0
      cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquOverhaulInventorySetDo.java
  23. 215 0
      cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquWarrantyProviderDo.java
  24. 2 2
      cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/EquOverhaulInventoryController.java
  25. 50 0
      cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/EquOverhaulInventorySetController.java
  26. 57 0
      cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/EquWarrantyProviderController.java

+ 17 - 0
cx-equipment/cx-equipment-common/pom.xml

@@ -40,5 +40,22 @@
             <version>${mysql.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>5.0.0</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+            <version>5.0.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 65 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/CommonDao.java

@@ -0,0 +1,65 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * CommonDao class
+ *
+ * @author XH   LXD
+ * @date 2021/05/27
+ */
+@Mapper
+@Repository("commonMapper")
+public interface CommonDao {
+
+    @Select("${sqlStr}")
+    List<Map<String, Object>> commonQuery(@Param("sqlStr") String sqlStr);
+
+    /**
+     * 根据id查询文件路径
+     * @param id
+     * @return
+     */
+    Map<String, Object> getFileUrlById(@Param("id") String id);
+
+    /**
+     * 获取字典值
+     * @param name
+     * @param dictType
+     * @return
+     */
+    @Select("select * from sys_dict where NAME = #{name} and DELETED = '0' and DICTTYPE = #{dictType} limit 1")
+    SysDictDo getDictValueByNameAndType(@Param("name") String name,@Param("dictType") String dictType);
+
+    /**
+     * 获取字典数
+     * @param name
+     * @param dictType
+     * @return
+     */
+    Integer getDictByNameAndDictType(@Param("name") String name,@Param("dictType") String dictType);
+
+    /**
+     * 获取字典数
+     * @param value
+     * @param dictType
+     * @return
+     */
+    Integer getDictByValueAndDictType(@Param("value") String value,@Param("dictType") String dictType);
+
+
+    /**
+     * 根据工厂名称查询id
+     * @param factoryName
+     * @return
+     */
+    String getIdByFactoryName(@Param("factoryName") String factoryName);
+
+}

+ 4 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquOverhaulInventoryMapperDao.java

@@ -13,4 +13,8 @@ import com.rongwei.rwcommon.base.BaseDao;
  */
 public interface EquOverhaulInventoryMapperDao extends BaseDao<EquOverhaulInventoryDo> {
 
+    /**
+     * 系统自动根据安全库存信息、过期信息自动更新提醒状态
+     */
+    void updateInventoryReminderStatus();
 }

+ 17 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquOverhaulInventorySetMapperDao.java

@@ -0,0 +1,17 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.EquOverhaulInventorySetDo;
+
+/**
+ * <p>
+ * 设备子系统——备品备件库存设置 Mapper 接口
+ * </p>
+ *
+ * @author fpy
+ * @since 2023-11-27
+ */
+public interface EquOverhaulInventorySetMapperDao extends BaseMapper<EquOverhaulInventorySetDo> {
+
+    void updateInventorySetWarnStatus();
+}

+ 16 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquWarrantyProviderMapperDao.java

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.rongwei.bsentity.domain.EquWarrantyProviderDo;
+
+/**
+ * <p>
+ * 设备子系统——保修商 Mapper 接口
+ * </p>
+ *
+ * @author fpy
+ * @since 2023-12-01
+ */
+public interface EquWarrantyProviderMapperDao extends BaseMapper<EquWarrantyProviderDo> {
+
+}

+ 7 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/PagePartDao.java

@@ -0,0 +1,7 @@
+package com.rongwei.bscommon.sys.dao;
+
+import com.rongwei.rwadmincommon.system.domain.PagePartDo;
+import com.rongwei.rwcommon.base.BaseDao;
+
+public interface PagePartDao extends BaseDao<PagePartDo> {
+}

+ 17 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquOverhaulInventorySetService.java

@@ -0,0 +1,17 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.EquOverhaulInventorySetDo;
+
+/**
+ * <p>
+ * 设备子系统——备品备件库存设置 服务类
+ * </p>
+ *
+ * @author fpy
+ * @since 2023-11-27
+ */
+public interface EquOverhaulInventorySetService extends IService<EquOverhaulInventorySetDo> {
+
+    void updateInventorySetWarnStatus();
+}

+ 25 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquWarrantyProviderService.java

@@ -0,0 +1,25 @@
+package com.rongwei.bscommon.sys.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.EquWarrantyProviderDo;
+import com.rongwei.rwcommon.base.R;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * <p>
+ * 设备子系统——保修商 服务类
+ * </p>
+ *
+ * @author fpy
+ * @since 2023-12-01
+ */
+public interface EquWarrantyProviderService extends IService<EquWarrantyProviderDo> {
+
+    /**
+     * 导入保修商
+     * @param file
+     * @return
+     */
+    R importEquWarrantyProvider(MultipartFile file);
+}

+ 10 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/PagePartService.java

@@ -0,0 +1,10 @@
+package com.rongwei.bscommon.sys.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.rwadmincommon.system.domain.PagePartDo;
+
+/**
+ * @author zdz
+ */
+public interface PagePartService extends IService<PagePartDo> {
+}

+ 5 - 2
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquOverhaulInventoryServiceImpl.java

@@ -1,5 +1,6 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.EquOverhaulInventoryMapperDao;
 import com.rongwei.bscommon.sys.service.EquOverhaulInventoryService;
@@ -9,6 +10,8 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 设备子系统——备品备件库存 服务实现类
@@ -23,10 +26,10 @@ public class EquOverhaulInventoryServiceImpl extends ServiceImpl<EquOverhaulInve
     private static final Logger logger = LoggerFactory.getLogger(EquOverhaulInventoryServiceImpl.class);
 
     @Autowired
-    private EquOverhaulInventoryService equOverhaulInventoryService;
+    private EquOverhaulInventoryMapperDao equOverhaulInventoryMapperDao;
 
     @Override
     public void updateInventoryReminderStatus() {
-
+        equOverhaulInventoryMapperDao.updateInventoryReminderStatus();
     }
 }

+ 33 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquOverhaulInventorySetServiceImpl.java

@@ -0,0 +1,33 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.sys.dao.EquOverhaulInventoryMapperDao;
+import com.rongwei.bscommon.sys.dao.EquOverhaulInventorySetMapperDao;
+import com.rongwei.bscommon.sys.service.EquOverhaulInventorySetService;
+import com.rongwei.bsentity.domain.EquOverhaulInventorySetDo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 设备子系统——备品备件库存设置 服务实现类
+ * </p>
+ *
+ * @author fpy
+ * @since 2023-11-27
+ */
+@Service
+public class EquOverhaulInventorySetServiceImpl extends ServiceImpl<EquOverhaulInventorySetMapperDao, EquOverhaulInventorySetDo> implements EquOverhaulInventorySetService {
+
+    private static final Logger logger = LoggerFactory.getLogger(EquOverhaulInventoryServiceImpl.class);
+
+    @Autowired
+    private EquOverhaulInventorySetMapperDao equOverhaulInventorySetMapperDao;
+
+    @Override
+    public void updateInventorySetWarnStatus() {
+        equOverhaulInventorySetMapperDao.updateInventorySetWarnStatus();
+    }
+}

+ 158 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquWarrantyProviderServiceImpl.java

@@ -0,0 +1,158 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.sys.dao.CommonDao;
+import com.rongwei.bscommon.sys.dao.EquWarrantyProviderMapperDao;
+import com.rongwei.bscommon.sys.service.EquWarrantyProviderService;
+import com.rongwei.bscommon.sys.utils.ExcelUtils;
+import com.rongwei.bscommon.sys.utils.StringUtil;
+import com.rongwei.bsentity.domain.EquWarrantyProviderDo;
+import com.rongwei.rwadmincommon.system.domain.*;
+import com.rongwei.rwadmincommon.system.vo.SysOrganizationVo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 设备子系统——保修商 服务实现类
+ * </p>
+ *
+ * @author fpy
+ * @since 2023-12-01
+ */
+@Service
+public class EquWarrantyProviderServiceImpl extends ServiceImpl<EquWarrantyProviderMapperDao, EquWarrantyProviderDo> implements EquWarrantyProviderService {
+
+    @Autowired
+    private EquWarrantyProviderService equWarrantyProviderService;
+
+    @Autowired
+    private CommonDao commonDao;
+
+    @Override
+    public R importEquWarrantyProvider(MultipartFile file) {
+        try {
+            Sheet sheet = new XSSFWorkbook(file.getInputStream()).getSheetAt(0);
+            StringBuilder stringBuilder = new StringBuilder();
+            int lastRowNum = sheet.getLastRowNum();
+            List<EquWarrantyProviderDo> equWarrantyProviderDos = new ArrayList<>();
+            String factoryId = "";
+            String deptId = "";
+            for (int i = 1; i <= lastRowNum; i++) {
+                EquWarrantyProviderDo equWarrantyProviderDo = new EquWarrantyProviderDo();
+                Row row = sheet.getRow(i);
+                if (ExcelUtils.isRowEmpty(row)){
+                    continue;
+                }
+                String code = row.getCell(0) == null ? "" : row.getCell(0).toString().trim();
+                String name = row.getCell(1) == null ? "" : row.getCell(1).toString().trim();
+                String zuscc = row.getCell(2) == null ? "" : row.getCell(2).toString().trim();
+                String legal = row.getCell(3) == null ? "" : row.getCell(3).toString().trim();
+                String isPrivately = row.getCell(4) == null ? "" : row.getCell(4).toString().trim();
+                String mainContacts = row.getCell(5) == null ? "" : row.getCell(5).toString().trim();
+                String phone = row.getCell(6) == null ? "" : row.getCell(6).toString().trim();
+                String factory = row.getCell(7) == null ? "" : row.getCell(7).toString().trim();
+                String dept = row.getCell(8) == null ? "" : row.getCell(8).toString().trim();
+                if (StringUtils.isNotBlank(code)){
+                    code = StringUtil.formatDecimal(code);
+                }else {
+                    stringBuilder.append("第").append(i+1).append("行");
+                    stringBuilder.append("保修商编号不能为空");
+                }
+                if (StringUtils.isBlank(name)){
+                    stringBuilder.append("第").append(i+1).append("行");
+                    stringBuilder.append("保修商名称不能为空");
+                }
+                if (StringUtils.isNotBlank(zuscc)){
+                    if (StringUtil.isScience(zuscc)){
+                        BigDecimal formatAccount = new BigDecimal(zuscc);
+                        zuscc = formatAccount.setScale(0,BigDecimal.ROUND_HALF_UP).toPlainString();
+                    }
+                }else {
+                    stringBuilder.append("第").append(i+1).append("行");
+                    stringBuilder.append("统一社会信用代码不能为空");
+                }
+                if (StringUtils.isNotBlank(phone)){
+                    if (StringUtil.isScience(phone)){
+                        BigDecimal formatPhone = new BigDecimal(phone);
+                        phone = formatPhone.setScale(0,BigDecimal.ROUND_HALF_UP).toPlainString();
+                    }
+                }
+                SysDictDo sysDictDo = commonDao.getDictValueByNameAndType(isPrivately,"srm_yn");
+                if (sysDictDo!= null){
+                    isPrivately = sysDictDo.getValue();
+                }
+                if (StringUtils.isNotBlank(factory)){
+                    factoryId = commonDao.getIdByFactoryName(factory);
+                    //当前用户所属工厂、【保修商名称】作唯一校验
+                    if (StringUtils.isNotBlank(name)){
+                        QueryWrapper<EquWarrantyProviderDo> entity = new QueryWrapper<EquWarrantyProviderDo>().eq("DELETED", 0).eq("WARRANTYPROVIDER",name).eq("TENANTID",factoryId).last("limit 1");
+                        EquWarrantyProviderDo providerNameDo = equWarrantyProviderService.getOne(entity);
+                        if (providerNameDo!= null){
+                            stringBuilder.append("第").append(i+1).append("行");
+                            stringBuilder.append(String.format("在%s中%s已存在,不可重复导入",factory,name));
+                        }
+                    }
+                    //当前用户所属工厂、【统一社会信用代码】作唯一校验
+                    if (StringUtils.isNotBlank(zuscc)){
+                        QueryWrapper<EquWarrantyProviderDo> entity = new QueryWrapper<EquWarrantyProviderDo>().eq("DELETED", 0).eq("ZUSCC",zuscc).eq("TENANTID",factoryId).last("limit 1");
+                        EquWarrantyProviderDo providerZusccDo = equWarrantyProviderService.getOne(entity);
+                        if (providerZusccDo!= null){
+                            stringBuilder.append("第").append(i+1).append("行");
+                            stringBuilder.append(String.format("在%s中%s保修商已存在,不可重复导入",factory,zuscc));
+                        }
+                    }
+                }else {
+                    stringBuilder.append("第").append(i+1).append("行");
+                    stringBuilder.append("所属工厂不能为空");
+                }
+                if (StringUtils.isNotBlank(dept)){
+                    deptId = commonDao.getIdByFactoryName(dept);
+                }
+                equWarrantyProviderDo.setId(SecurityUtil.getUUID());
+                equWarrantyProviderDo.setWarrantyprovidercode(code);
+                equWarrantyProviderDo.setWarrantyprovider(name);
+                equWarrantyProviderDo.setZuscc(zuscc);
+                equWarrantyProviderDo.setLegalperson(legal);
+                equWarrantyProviderDo.setIsprivatelyoperated(isPrivately);
+                equWarrantyProviderDo.setPrimarycontact(mainContacts);
+                equWarrantyProviderDo.setContactphone(phone);
+                equWarrantyProviderDo.setTenantid(factoryId);
+                equWarrantyProviderDo.setBelongfactory(factory);
+                equWarrantyProviderDo.setManagedepartmentid(deptId);
+                equWarrantyProviderDo.setManagedepartment(dept);
+                equWarrantyProviderDo.setEnablestate("10");
+                equWarrantyProviderDos.add(equWarrantyProviderDo);
+                if(StringUtil.isNotBlank(stringBuilder)){
+                    stringBuilder.append("<br>");
+                }
+            }
+            String errMsg = stringBuilder.toString();
+            if (StringUtils.isNotBlank(errMsg)){
+                return R.error(errMsg);
+            }else {
+                if (equWarrantyProviderDos.size()>0){
+                    equWarrantyProviderService.saveOrUpdateBatch(equWarrantyProviderDos);
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return R.ok();
+    }
+}

+ 16 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/PagePartServiceImpl.java

@@ -0,0 +1,16 @@
+package com.rongwei.bscommon.sys.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import com.rongwei.bscommon.sys.dao.PagePartDao;
+import com.rongwei.bscommon.sys.service.PagePartService;
+import com.rongwei.rwadmincommon.system.domain.PagePartDo;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhou
+ */
+@Service("pagePartService")
+public class PagePartServiceImpl extends ServiceImpl<PagePartDao, PagePartDo> implements PagePartService {
+}

+ 145 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/utils/BusinessExcelUtil.java

@@ -0,0 +1,145 @@
+package com.rongwei.bscommon.sys.utils;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.rongwei.bscommon.sys.dao.CommonDao;
+import com.rongwei.bscommon.sys.service.PagePartService;
+import com.rongwei.rwadmincommon.system.domain.PagePartDo;
+import lombok.SneakyThrows;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.*;
+
+/**
+ * @author zhou
+ */
+@Component
+public class BusinessExcelUtil {
+
+    private static Logger logger = LoggerFactory.getLogger(BusinessExcelUtil.class);
+
+    @Autowired
+    private PagePartService pagePartService;
+    @Autowired
+    private CommonDao commonDao;
+
+    /**
+     * 获取文件表头名集合
+     * 用于校验上传文件与模板文件是否一致
+     * @author chenjiahao
+     * */
+    @SneakyThrows
+    public List<String> getColums(MultipartFile file) {
+        List<String> cs = new ArrayList<>();
+        XSSFWorkbook wb = new XSSFWorkbook(file.getInputStream());
+        int Sheets = wb.getNumberOfSheets();
+        for (int i = 0; i < Sheets; i++) {
+            XSSFSheet sheet = wb.getSheetAt(i);
+            //获取工作簿表头
+            XSSFRow head = sheet.getRow(0);
+            if (head != null) {
+                int o = 0;
+                Iterator<Cell> it = head.iterator();
+                while (it.hasNext()) {
+                    Cell cell = it.next();
+                    o++;
+                    if (cell == null) continue;
+                    String c = String.valueOf(cell);
+                    cs.add(c);
+                }
+            }
+        }
+        return cs;
+    }
+
+    /**
+     * 根据pageId获取模板文件
+     * 用于校验上传文件与模板文件是否一致
+     * @author chenjiahao
+     * */
+    @SneakyThrows
+    public XSSFWorkbook getTemplate(Map<String, Object> map) {
+        XSSFWorkbook wb = null;
+        String pageId = (String) map.get("pageid");
+        PagePartDo pagePart = pagePartService.getById(pageId);
+        String roption = pagePart.getRoption();
+        JSONObject jsonObject = JSONObject.parseObject(roption);
+        JSONObject globalJson = JSONObject.parseObject(jsonObject.get("global").toString());
+        JSONObject fileJson = JSONObject.parseObject(globalJson.get("base").toString());
+        logger.info("fileJson:{}",fileJson);
+        String fileId = JSONObject.parseObject(JSONObject.parseObject(fileJson.get("excelTemplate").toString()).get("data").toString()).get("id").toString();
+        Map<String, Object> fileInfo = commonDao.getFileUrlById(fileId);
+        if(ObjectUtil.isNotNull(fileInfo)){
+            File file = new File(fileInfo.get("FULLPATH").toString());
+            FileInputStream fileInputStream = new FileInputStream(file);
+            MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(),"application/sql", fileInputStream);
+            wb = new XSSFWorkbook(multipartFile.getInputStream());
+        }
+        return wb;
+    }
+
+    /**
+     * 校验上传文件与模板文件是否一致
+     * @author chenjiahao
+     * */
+    public String checkFile(List<String> colums, XSSFWorkbook wb) {
+        StringBuilder errMsg = new StringBuilder();
+        try {
+            Sheet sheet = wb.getSheetAt(0);
+            Row row = sheet.getRow(0);
+            if (row != null) {
+                int lastCellNum = row.getLastCellNum();//列数
+                for (int idx = 0; idx < lastCellNum; idx++) {
+                    String value = row.getCell(idx).getStringCellValue();//列名
+                    if (!colums.contains(value)) {
+                        errMsg.append("上传文件与模板不一致!");
+                    }
+                }
+            } else {
+                errMsg.append("上传的文件错误,请核对后再试");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return ObjectUtil.isNull(errMsg)?"":errMsg.toString();
+    }
+
+    /**
+     * 根据pageId获取当前列表的所有字段
+     * 用于映射实体
+     * @author chenjiahao
+     * */
+    public Map<String,Object> getKeyName(Map<String, Object> map){
+        Map<String,Object> keyMap = new HashMap<>();
+        String pageId = map.get("pageid").toString();
+        PagePartDo pagePart = pagePartService.getById(pageId);
+        String roption = pagePart.getRoption();
+        JSONObject jsonObject = JSONObject.parseObject(roption);
+        String columns1 = jsonObject.getString("columns");
+        JSONObject jsonObject2 = JSONObject.parseObject(columns1);
+        String base1 = jsonObject2.getString("base");
+        JSONArray columns2 = JSONArray.parseArray(base1);
+        for (int i = 0; i < columns2.size(); i++) {
+            JSONObject jsonObject1 = columns2.getJSONObject(i);
+            JSONObject base = jsonObject1.getJSONObject("base");
+            String field = base.getString("field");
+            String label = base.getString("label");
+            keyMap.put(label, field);
+        }
+        return keyMap;
+    }
+}

+ 31 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/utils/ExcelUtils.java

@@ -0,0 +1,31 @@
+package com.rongwei.bscommon.sys.utils;
+
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.Row;
+
+/**
+ * @author zhou
+ */
+public class ExcelUtils {
+
+    /**
+     * 校验excel行是否为空
+     * @param row
+     * @return
+     */
+    public static boolean isRowEmpty(Row row) {
+        if (row == null){
+            return true;
+        }else {
+            for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) {
+                Cell cell = row.getCell(c);
+                if (cell != null && cell.getCellType() != CellType.BLANK){
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+}

+ 45 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/utils/FileCheckUtil.java

@@ -0,0 +1,45 @@
+package com.rongwei.bscommon.sys.utils;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author admin
+ */
+@Component
+public class FileCheckUtil {
+
+    @Autowired
+    private BusinessExcelUtil excelUtil;
+
+    public String fileCheckDetail(MultipartFile file,String pageId) {
+        String errorMsg = "";
+        String fileName = file.getOriginalFilename();
+        if (!fileName.matches("^.+\\.(?i)(xlsx)$")) {
+            errorMsg = "当前只支持xlsx文件格式,请下载模板后重新上传!";
+        }
+        Map<String,Object> map = new HashMap<>(16);
+        map.put("pageid",pageId);
+        // 获取模板文件
+        XSSFWorkbook wb = excelUtil.getTemplate(map);
+        if(ObjectUtil.isNull(wb)){
+            errorMsg = "请先上传模板文件!";
+        }
+        // 解析上传的文件
+        List<String> colums = excelUtil.getColums(file);
+        String errMsg = excelUtil.checkFile(colums,wb);
+        if(StringUtils.isNotBlank(errMsg)){
+            errorMsg = errMsg;
+        }
+        return errorMsg;
+    }
+
+}

+ 338 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/utils/StringUtil.java

@@ -0,0 +1,338 @@
+package com.rongwei.bscommon.sys.utils;
+
+import org.apache.commons.lang3.BooleanUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Arrays;
+import java.util.UUID;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author bootdo
+ */
+public class StringUtil extends org.apache.commons.lang3.StringUtils {
+
+    public static final char UNDERLINE = '_';
+    // 科学计数法的正则表达式
+    private static String scientificNotationPattern = "^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$";
+
+    /**
+     * 驼峰格式字符串转换为下划线格式字符串
+     *
+     * @param param
+     * @return
+     */
+    public static String camelToUnderline(String param) {
+        if (param == null || "".equals(param.trim())) {
+            return "";
+        }
+        int len = param.length();
+        StringBuilder sb = new StringBuilder(len);
+        for (int i = 0; i < len; i++) {
+            char c = param.charAt(i);
+            if (Character.isUpperCase(c)) {
+                sb.append(UNDERLINE);
+                sb.append(Character.toLowerCase(c));
+            } else {
+                sb.append(c);
+            }
+        }
+        return sb.toString();
+    }
+
+
+    /**
+     * 下划线格式字符串转换为驼峰格式字符串
+     *
+     * @param param
+     * @return
+     */
+    public static String underlineToCamel(String param) {
+        if (param == null || "".equals(param.trim())) {
+            return "";
+        }
+        int len = param.length();
+        StringBuilder sb = new StringBuilder(len);
+        for (int i = 0; i < len; i++) {
+            char c = param.charAt(i);
+            if (c == UNDERLINE) {
+                if (++i < len) {
+                    sb.append(Character.toUpperCase(param.charAt(i)));
+                }
+            } else {
+                sb.append(c);
+            }
+        }
+        return sb.toString();
+    }
+
+    /**
+     * 下划线格式字符串转换为驼峰格式字符串2
+     *
+     * @param param
+     * @return
+     */
+    public static String underlineToCamel2(String param) {
+        if (param == null || "".equals(param.trim())) {
+            return "";
+        }
+        StringBuilder sb = new StringBuilder(param);
+        Matcher mc = Pattern.compile("_").matcher(param);
+        int i = 0;
+        while (mc.find()) {
+            int position = mc.end() - (i++);
+            sb.replace(position - 1, position + 1, sb.substring(position, position + 1).toUpperCase());
+        }
+        return sb.toString();
+    }
+
+    /**
+     * 得到二位数的序号
+     *
+     * @param num
+     * @return
+     */
+    public static String getNextCode(Integer num) {
+        if (num == null || num == 0) {
+            return "001";
+        } else if (num > 0 && num < 9) {
+            return "00" + (num + 1) + "";
+        } else if (num == 9) {
+            return "010";
+        } else if (num >= 10 && num < 98) {
+            return "0" + (num + 1) + "";
+        } else if (num == 99) {
+            return "100";
+        } else {
+            return (num + 1) + "";
+        }
+    }
+
+
+    /**
+     * 将传入的对象转换为字符串,当传入的对象为null时返回默认值
+     * bw.ren  2019年6月3日09:46:33
+     *
+     * @param o
+     * @param dv
+     * @return
+     */
+    public static String safeToString(Object o, String dv) {
+        String r = dv;
+        if (o != null) {
+            r = String.valueOf(o);
+        }
+        return r;
+    }
+
+    /**
+     * 获得用户远程地址
+     */
+    public static String getRemoteAddr(HttpServletRequest request) {
+        String remoteAddr = request.getHeader("X-Real-IP");
+        if (isNotBlank(remoteAddr)) {
+            remoteAddr = request.getHeader("X-Forwarded-For");
+        } else if (isNotBlank(remoteAddr)) {
+            remoteAddr = request.getHeader("Proxy-Client-IP");
+        } else if (isNotBlank(remoteAddr)) {
+            remoteAddr = request.getHeader("WL-Proxy-Client-IP");
+        }
+        return remoteAddr != null ? remoteAddr : request.getRemoteAddr();
+    }
+
+    /**
+     * 如果对象为空,则使用defaultVal值
+     * see: ObjectUtils.toString(obj, defaultVal)
+     *
+     * @param obj
+     * @param defaultVal
+     * @return
+     */
+    public static String toString(final Object obj, final String defaultVal) {
+        return obj == null ? defaultVal : obj.toString();
+    }
+
+    /**
+     * 转换为Boolean类型
+     * 'true', 'on', 'y', 't', 'yes' or '1' (case insensitive) will return true. Otherwise, false is returned.
+     */
+    public static Boolean toBoolean(final Object val) {
+        if (val == null) {
+            return false;
+        }
+        return BooleanUtils.toBoolean(val.toString()) || "1".equals(val.toString());
+    }
+
+    public static boolean isNumericzidai(String str) {
+        Pattern pattern = Pattern.compile("-?[0-9]+\\.?[0-9]*");
+        Matcher isNum = pattern.matcher(str);
+        if (!isNum.matches()) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 正则:手机号(简单), 1字头+10位数字即可.
+     *
+     * @param in
+     * @return
+     */
+    public static boolean validateMobilePhone(String in) {
+        Pattern pattern = Pattern.compile("^[1]\\d{10}$");
+        return pattern.matcher(in).matches();
+    }
+
+    /**
+     * 正则:邮箱
+     *
+     * @param in
+     * @return
+     */
+    public static boolean validateEmail(String in) {
+        Pattern pattern = Pattern.compile("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}");
+        return pattern.matcher(in).matches();
+    }
+
+
+
+    /**
+     * 是否是数字
+     * @param value
+     */
+    public static boolean isNum(String value){
+        Pattern p=null;//正则表达式
+        Matcher m=null;//操作符表达式
+        boolean b=false;
+        p=p.compile("^([+-]?)\\d*\\.?\\d+$");
+        m=p.matcher(value);
+        b=m.matches();
+        return b;
+    }
+
+    /**
+     * 根据正则截取字符串
+     * @return
+     */
+    public static String InterceptString(String projectName) {
+        Pattern pattern = Pattern.compile(".*?(?=\\()");
+        Matcher matcher = pattern.matcher(projectName);
+        while(matcher.find()){
+            return matcher.group();
+        }
+        return null;
+    }
+
+    
+    
+    /**
+     * 判断是否是身份证号
+     * @param cardNo
+     * @return
+     */
+    public static boolean isCard(String cardNo){
+        String regularExpression = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|" +
+                "(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";
+        boolean matches = cardNo.matches(regularExpression);
+        //判断第18位校验值
+        if (matches) {
+            if (cardNo.length() == 18) {
+                try {
+                    char[] charArray = cardNo.toCharArray();
+                    //前十七位加权因子
+                    int[] idCardWi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
+                    //这是除以11后,可能产生的11位余数对应的验证码
+                    String[] idCardY = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
+                    int sum = 0;
+                    for (int i = 0; i < idCardWi.length; i++) {
+                        int current = Integer.parseInt(String.valueOf(charArray[i]));
+                        int count = current * idCardWi[i];
+                        sum += count;
+                    }
+                    char idCardLast = charArray[17];
+                    int idCardMod = sum % 11;
+                    if (idCardY[idCardMod].toUpperCase().equals(String.valueOf(idCardLast).toUpperCase())) {
+                        return true;
+                    } else {
+                        System.out.println("身份证最后一位:" + String.valueOf(idCardLast).toUpperCase() +
+                                "错误,正确的应该是:" + idCardY[idCardMod].toUpperCase());
+                        return false;
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                    System.out.println("异常:" + cardNo);
+                    return false;
+                }
+            }
+        }
+        return matches;
+    }
+
+        public static void main(String[] args) {
+            boolean a = isScience("123456");
+            System.out.print(a);
+        }
+
+        /**
+         * 根据正则截取字符串
+         * @return
+         */
+        public static int getArrayElementPosition(String[] actualWeldInfo,String actualWeld) {
+            Arrays.sort(actualWeldInfo);
+            int position = Arrays.binarySearch(actualWeldInfo, actualWeld);
+            return position;
+        }
+
+        /**
+         * 格式化字符串中的小数点
+         */
+        public static String formatDecimal(String str) {
+            str =  str.replaceAll("[.](.*)","");
+            return str;
+        }
+
+        /**
+         * 四舍五入小数
+         */
+        public static String formatDecimalFiveIn(String str) {
+            str =  String.valueOf(Math.round(Float.parseFloat(str)));
+            return str;
+        }
+
+//        public static void main(String args[]){
+////            String[] intArray = new String[]{"a","b","c","d","e","f","g","h","i","j",};
+////            String actualWeld = "vt1684_pt793_50_500,vt1684_ut793_30_300,vt1684_rt793_60_600,vt1684_mt793_60_600";
+////            String[] actualWeldInfo = actualWeld.split(",");
+////            Arrays.sort(actualWeldInfo);
+////            int positon = Arrays.binarySearch(actualWeldInfo, "vt1684_pt793_50_500");
+////            System.out.println("position is:"+positon);
+//            String actualWeld = formatDecimal(String.valueOf(1000.98));
+//            System.out.print(actualWeld);
+//        }
+
+        public static int querySpecificCharacter(String flawInspectCode) {
+            int count = 0;
+            int strLength = flawInspectCode.length();
+            String searchChar = "R";
+            flawInspectCode = flawInspectCode.replace(searchChar, "");
+            int newLength = flawInspectCode.length();
+            count = strLength - newLength;
+            return count;
+        }
+
+        public static String getUUID(){
+            String uuid = UUID.randomUUID().toString().replaceAll("-","");
+            return uuid;
+        }
+
+    /**
+     * 判断是否包含字母
+     * @param ret
+     * @return
+     */
+    public static boolean isScience(String ret) {
+            return ret.matches(scientificNotationPattern);
+        }
+
+}

+ 40 - 0
cx-equipment/cx-equipment-common/src/main/resources/mybatis/business/CommonDao.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.rongwei.bscommon.sys.dao.CommonDao">
+
+    <select id="getFileUrlById" resultType="java.util.Map">
+        select *
+        from sys_file_item
+        where ID = #{id}
+          and DELETED = '0'
+          limit 1
+    </select>
+
+    <select id="getDictByNameAndDictType" resultType="java.lang.Integer">
+        SELECT count( * )
+        FROM sys_dict
+        WHERE
+        NAME = #{name}
+        AND DICTTYPE = #{dictType}
+        AND DELETED = '0'
+    </select>
+
+    <select id="getDictByValueAndDictType" resultType="java.lang.Integer">
+        SELECT count( * )
+        FROM sys_dict
+        WHERE
+        VALUE = #{value}
+        AND DICTTYPE = #{dictType}
+        AND DELETED = '0'
+    </select>
+
+    <select id="getIdByFactoryName" resultType="java.lang.String">
+        SELECT ID
+        FROM sys_organization
+        WHERE
+        FULLNAME = #{factoryName}
+        AND DELETED = '0'
+    </select>
+
+</mapper>

+ 22 - 0
cx-equipment/cx-equipment-common/src/main/resources/mybatis/business/EquOverhaulInventoryDao.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.rongwei.bscommon.sys.dao.EquOverhaulInventoryMapperDao">
+
+    <update id="updateInventoryReminderStatus">
+        UPDATE equ_overhaul_inventory
+        SET REMINDERSTATUS = CASE
+            WHEN EXPIREDATE IS NULL AND INVENTORYNUMBER >= IFNULL( SAFETYSTOCKUPPER, 0 ) * 1.5 THEN 10
+            WHEN EXPIREDATE IS NULL AND INVENTORYNUMBER >= IFNULL( SAFETYSTOCKUPPER, 0 ) THEN 20
+            WHEN EXPIREDATE IS NULL AND INVENTORYNUMBER >= IFNULL( SAFETYSTOCKLOWER, 0 ) THEN 30
+            WHEN EXPIREDATE IS NULL AND INVENTORYNUMBER >= IFNULL( SAFETYSTOCKLOWER, 0 ) * 0.5 THEN 40
+            WHEN EXPIREDATE IS NULL AND IFNULL( SAFETYSTOCKLOWER, 0 ) * 0.5 > INVENTORYNUMBER THEN 50
+            WHEN EXPIREDATE IS NOT NULL AND DATEDIFF(EXPIREDATE,now()) >= 90 AND REMINDERSTATUS IN ('10', '20') THEN 20
+            WHEN EXPIREDATE IS NOT NULL AND (DATEDIFF(EXPIREDATE,now()) between 30 and 90) AND REMINDERSTATUS IN ('10', '20', '30') THEN 30
+            WHEN EXPIREDATE IS NOT NULL AND (DATEDIFF(EXPIREDATE,now()) between 0 and 30) AND REMINDERSTATUS IN ('10', '20', '30', '40') THEN 60
+            WHEN EXPIREDATE IS NOT NULL AND 0 >= DATEDIFF(EXPIREDATE,now()) AND REMINDERSTATUS IN ('10', '20', '30', '40', '50') THEN 70
+            ELSE REMINDERSTATUS
+        END;
+    </update>
+
+</mapper>

+ 21 - 0
cx-equipment/cx-equipment-common/src/main/resources/mybatis/business/EquOverhaulInventorySetDao.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.rongwei.bscommon.sys.dao.EquOverhaulInventorySetMapperDao">
+
+    <update id="updateInventorySetWarnStatus">
+        UPDATE equ_overhaul_inventory_set
+        SET WARNSTATUS = CASE
+            WHEN EXPIREDATE IS NULL AND INVENTORYNUMBER >= IFNULL( SAFETYSTOCKUPPER, 0 ) * 1.5 THEN 10
+            WHEN EXPIREDATE IS NULL AND INVENTORYNUMBER >= IFNULL( SAFETYSTOCKUPPER, 0 ) THEN 20
+            WHEN EXPIREDATE IS NULL AND INVENTORYNUMBER >= IFNULL( SAFETYSTOCKLOWER, 0 ) THEN 30
+            WHEN EXPIREDATE IS NULL AND INVENTORYNUMBER >= IFNULL( SAFETYSTOCKLOWER, 0 ) * 0.5 THEN 40
+            WHEN EXPIREDATE IS NULL AND IFNULL( SAFETYSTOCKLOWER, 0 ) * 0.5 > INVENTORYNUMBER THEN 50
+            WHEN EXPIREDATE IS NOT NULL AND DATEDIFF(EXPIREDATE,now()) >= 90 AND REMINDERSTATUS IN ('10', '20') THEN 20
+            WHEN EXPIREDATE IS NOT NULL AND (DATEDIFF(EXPIREDATE,now()) between 30 and 90) AND REMINDERSTATUS IN ('10', '20', '30') THEN 30
+            WHEN EXPIREDATE IS NOT NULL AND (DATEDIFF(EXPIREDATE,now()) between 0 and 30) AND REMINDERSTATUS IN ('10', '20', '30', '40') THEN 60
+            WHEN EXPIREDATE IS NOT NULL AND 0 >= DATEDIFF(EXPIREDATE,now()) AND REMINDERSTATUS IN ('10', '20', '30', '40', '50') THEN 70
+            ELSE WARNSTATUS
+        END;
+    </update>
+
+</mapper>

+ 2 - 3
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquOverhaulInventoryDo.java

@@ -2,11 +2,10 @@ package com.rongwei.bsentity.domain;
 
 import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.Version;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
+import java.util.Date;
 
 import com.rongwei.rwcommon.base.BaseDo;
 import lombok.Data;
@@ -111,7 +110,7 @@ public class EquOverhaulInventoryDo extends BaseDo implements Serializable {
      * 过期日期
      */
     @TableField("EXPIREDATE")
-    private LocalDateTime expiredate;
+    private Date expiredate;
 
     /**
      * 安全库存上限

+ 134 - 0
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquOverhaulInventorySetDo.java

@@ -0,0 +1,134 @@
+package com.rongwei.bsentity.domain;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 设备子系统——备品备件库存设置
+ * </p>
+ *
+ * @author fpy
+ * @since 2023-11-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("equ_overhaul_inventory_set")
+public class EquOverhaulInventorySetDo extends BaseDo implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId("ID")
+    private String id;
+
+    /**
+     * 租户ID
+     */
+    @TableField("TENANTID")
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    @TableField("ROPTION")
+    private String roption;
+
+    /**
+     * 使用设备分类ID
+     */
+    @TableField("USINGDEVICECLASSID")
+    private String usingdeviceclassid;
+
+    /**
+     * 使用设备分类
+     */
+    @TableField("USINGDEVICECLASS")
+    private String usingdeviceclass;
+
+    /**
+     * 所属工厂
+     */
+    @TableField("BELONGFACTORY")
+    private String belongfactory;
+
+    /**
+     * 所需配件
+     */
+    @TableField("REQUIREDACCESSORIES")
+    private String requiredaccessories;
+
+    /**
+     * 配件编号
+     */
+    @TableField("ACCESSORYCODE")
+    private String accessorycode;
+
+    /**
+     * 规格型号
+     */
+    @TableField("SPECIFICATIONS")
+    private String specifications;
+
+    /**
+     * 安全库存数量
+     */
+    @TableField("SAFETYSTOCK")
+    private BigDecimal safetystock;
+
+    /**
+     * 当前安全库存数量
+     */
+    @TableField("CURRENTSAFETYSTOCK")
+    private BigDecimal currentsafetystock;
+
+    /**
+     * 预警状态
+     */
+    @TableField("WARNSTATUS")
+    private String warnstatus;
+
+    /**
+     * 提前提醒日期
+     */
+    @TableField("EARLYREMINDERDATE")
+    private Date earlyreminderdate;
+
+    /**
+     * 对应提醒人ID
+     */
+    @TableField("REMINDERID")
+    private String reminderid;
+
+    /**
+     * 对应提醒人
+     */
+    @TableField("REMINDER")
+    private String reminder;
+
+    /**
+     * 安全库存上限
+     */
+    @TableField("SAFETYSTOCKUPPER")
+    private BigDecimal safetystockupper;
+
+    /**
+     * 安全库存下限
+     */
+    @TableField("SAFETYSTOCKLOWER")
+    private BigDecimal safetystocklower;
+
+
+}

+ 215 - 0
cx-equipment/cx-equipment-entity/src/main/java/com/rongwei/bsentity/domain/EquWarrantyProviderDo.java

@@ -0,0 +1,215 @@
+package com.rongwei.bsentity.domain;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 设备子系统——保修商
+ * </p>
+ *
+ * @author fpy
+ * @since 2023-12-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("equ_warranty_provider")
+public class EquWarrantyProviderDo extends BaseDo implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId("ID")
+    private String id;
+
+    /**
+     * 租户ID
+     */
+    @TableField("TENANTID")
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    @TableField("ROPTION")
+    private String roption;
+
+    /**
+     * 保修商编号
+     */
+    @TableField("WARRANTYPROVIDERCODE")
+    private String warrantyprovidercode;
+
+    /**
+     * 保修商名称
+     */
+    @TableField("WARRANTYPROVIDER")
+    private String warrantyprovider;
+
+    /**
+     * 联系人
+     */
+    @TableField("CONTACTS")
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    @TableField("TELEPHONE")
+    private String telephone;
+
+    /**
+     * 有效日期
+     */
+    @TableField("EFFECTIVEDATE")
+    private Date effectivedate;
+
+    /**
+     * 状态
+     */
+    @TableField("STATE")
+    private String state;
+
+    /**
+     * 所属工厂
+     */
+    @TableField("BELONGFACTORY")
+    private String belongfactory;
+
+    /**
+     * 统一社会信用代码
+     */
+    @TableField("ZUSCC")
+    private String zuscc;
+
+    /**
+     * 简称
+     */
+    @TableField("SHORTERFORM")
+    private String shorterform;
+
+    /**
+     * 曾用名
+     */
+    @TableField("FORMERNAME")
+    private String formername;
+
+    /**
+     * 管理部门ID
+     */
+    @TableField("MANAGEDEPARTMENTID")
+    private String managedepartmentid;
+
+    /**
+     * 管理部门
+     */
+    @TableField("MANAGEDEPARTMENT")
+    private String managedepartment;
+
+    /**
+     * 分类
+     */
+    @TableField("CLASSIFY")
+    private String classify;
+
+    /**
+     * 法人
+     */
+    @TableField("LEGALPERSON")
+    private String legalperson;
+
+    /**
+     * 法人身份证
+     */
+    @TableField("LEGALPERSONIDCARD")
+    private String legalpersonidcard;
+
+    /**
+     * 注册地址
+
+
+     */
+    @TableField("REGISTEREDADDRESS")
+    private String registeredaddress;
+
+    /**
+     * 主要联系人
+     */
+    @TableField("PRIMARYCONTACT")
+    private String primarycontact;
+
+    /**
+     * 联系电话
+     */
+    @TableField("CONTACTPHONE")
+    private String contactphone;
+
+    /**
+     * 经营地址
+     */
+    @TableField("BUSINESSADDRESS")
+    private String businessaddress;
+
+    /**
+     * 是否民营
+     */
+    @TableField("ISPRIVATELYOPERATED")
+    private String isprivatelyoperated;
+
+    /**
+     * 注册资本(万元)
+     */
+    @TableField("REGISTEREDCAPITAL")
+    private BigDecimal registeredcapital;
+
+    /**
+     * 成立时间
+     */
+    @TableField("ESTABLISHMENTTIME")
+    private Date establishmenttime;
+
+    /**
+     * 实缴资本(万元)
+     */
+    @TableField("PAIDUPCAPITAL")
+    private BigDecimal paidupcapital;
+
+    /**
+     * 经营范围
+     */
+    @TableField("BUSINESSSCOPE")
+    private String businessscope;
+
+    /**
+     * 合作服务说明
+     */
+    @TableField("COOPERATESERVEEXPLAIN")
+    private String cooperateserveexplain;
+
+    /**
+     * 停用说明
+     */
+    @TableField("DEACTIVATEEXPLAIN")
+    private String deactivateexplain;
+
+    /**
+     * 启用状态
+     */
+    @TableField("ENABLESTATE")
+    private String enablestate;
+
+
+
+}

+ 2 - 2
cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/EquOverhaulInventoryController.java

@@ -18,7 +18,7 @@ import java.util.Map;
  * 设备子系统——备品备件库存 前端控制器
  * </p>
  *
- * @author fpy
+ * @author zdz
  * @since 2023-11-22
  */
 @Controller
@@ -41,7 +41,7 @@ public class EquOverhaulInventoryController {
             logger.info("系统自动根据安全库存信息、过期信息自动更新提醒状态...");
             equOverhaulInventoryService.updateInventoryReminderStatus();
         } catch (Exception e) {
-            ExceptionUtils.printExceptionDetail(e,"定时更新投诉建议的状态以及新增一条系统反馈记录异常:");
+            ExceptionUtils.printExceptionDetail(e,"系统每个小时更新一次提醒状态:");
         }
         return R.ok();
     }

+ 50 - 0
cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/EquOverhaulInventorySetController.java

@@ -0,0 +1,50 @@
+package com.rongwei.bsserver.sys.controller;
+
+
+import com.rongwei.bscommon.sys.service.EquOverhaulInventorySetService;
+import com.rongwei.bscommon.sys.utils.ExceptionUtils;
+import com.rongwei.rwcommon.base.R;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+import java.util.Map;
+
+/**
+ * <p>
+ * 设备子系统——备品备件库存设置 前端控制器
+ * </p>
+ *
+ * @author zdz
+ * @since 2023-11-27
+ */
+@Controller
+@RequestMapping("/equOverhaulInventorySet")
+public class EquOverhaulInventorySetController {
+
+    private static final Logger logger = LoggerFactory.getLogger(EquOverhaulInventoryController.class);
+
+    @Autowired
+    private EquOverhaulInventorySetService EquOverhaulInventorySetService;
+
+    /**
+     * 系统每个小时更新一次预警状态
+     * @param map
+     * @return
+     */
+    @RequestMapping("/updateInventorySetReminderStatus")
+    public R updateInventorySetReminderStatus(@RequestBody Map<String,Object> map){
+        try {
+            logger.info("系统自动根据安全库存信息、过期信息自动更新预警状态...");
+            EquOverhaulInventorySetService.updateInventorySetWarnStatus();
+        } catch (Exception e) {
+            ExceptionUtils.printExceptionDetail(e,"系统每个小时更新一次预警状态:");
+        }
+        return R.ok();
+    }
+}
+

+ 57 - 0
cx-equipment/cx-equipment-server/src/main/java/com/rongwei/bsserver/sys/controller/EquWarrantyProviderController.java

@@ -0,0 +1,57 @@
+package com.rongwei.bsserver.sys.controller;
+
+
+import com.rongwei.bscommon.sys.service.EquWarrantyProviderService;
+import com.rongwei.bscommon.sys.utils.CommonUtils;
+import com.rongwei.bscommon.sys.utils.FileCheckUtil;
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * <p>
+ * 设备子系统——保修商 前端控制器
+ * </p>
+ *
+ * @author zdz
+ * @since 2023-12-01
+ */
+@Controller
+@RequestMapping("/equWarrantyProvider")
+public class EquWarrantyProviderController {
+
+    @Autowired
+    private EquWarrantyProviderService equWarrantyProviderService;
+
+    @Autowired
+    FileCheckUtil checkUtil;
+
+
+    /**
+     * 检验规则维护导入
+     * @return
+     */
+    @RequestMapping("/importEquWarrantyProvider")
+    @ResponseBody
+    public R importEquWarrantyProvider(@RequestParam MultipartFile file, HttpServletRequest request) throws Exception {
+        if (file == null){
+            return R.error("文件解析失败");
+        }
+//        String errorMsg = checkUtil.fileCheckDetail(file,"2a4972593c094256871805368885e2b2");
+//        if (StringUtils.isNotBlank(errorMsg)){
+//            return R.error(errorMsg);
+//        }
+        return equWarrantyProviderService.importEquWarrantyProvider(file);
+    }
+
+}
+