nahida 1 год назад
Родитель
Сommit
acfc5f7d18
15 измененных файлов с 556 добавлено и 30 удалено
  1. 2 0
      zksy-admin/src/main/java/com/zksy/commonFile/service/ManageCommonService.java
  2. 30 0
      zksy-admin/src/main/java/com/zksy/commonFile/service/impl/ManageCommonServiceImpl.java
  3. 5 1
      zksy-admin/src/main/java/com/zksy/utils/SearchUtil.java
  4. 37 26
      zksy-admin/src/main/java/com/zksy/web/controller/basicData/CrmAdministrativeLicenseController.java
  5. 75 0
      zksy-admin/src/main/java/com/zksy/web/controller/system/HandleRequestLicenseController.java
  6. 2 2
      zksy-admin/src/main/resources/application-druid.yml
  7. 3 1
      zksy-common/src/main/java/com/zksy/common/core/controller/BaseController.java
  8. 14 0
      zksy-common/src/main/java/com/zksy/common/core/controller/BaseControllerInterface.java
  9. 11 0
      zksy-system/src/main/java/com/zksy/system/basicData/mapper/SysInventoryReviewMapper.java
  10. 18 0
      zksy-system/src/main/java/com/zksy/system/basicData/service/HandleRequestLicenseService.java
  11. 23 0
      zksy-system/src/main/java/com/zksy/system/basicData/service/ISysInventoryReviewService.java
  12. 133 0
      zksy-system/src/main/java/com/zksy/system/basicData/service/impl/HandleRequestLicenseServiceImpl.java
  13. 134 0
      zksy-system/src/main/java/com/zksy/system/basicData/service/impl/SysInventoryReviewServiceImpl.java
  14. 7 0
      zksy-system/src/main/java/com/zksy/system/constant/InventoryReviewConstant.java
  15. 62 0
      zksy-system/src/main/java/com/zksy/system/domain/SysInventoryReview.java

+ 2 - 0
zksy-admin/src/main/java/com/zksy/commonFile/service/ManageCommonService.java

@@ -44,4 +44,6 @@ public interface ManageCommonService {
      * @return
      */
     AjaxResult deleteFile(String id);
+
+    void deleteFileByInventoryReviewId(String id) throws Exception;
 }

+ 30 - 0
zksy-admin/src/main/java/com/zksy/commonFile/service/impl/ManageCommonServiceImpl.java

@@ -5,6 +5,8 @@ import com.zksy.common.exception.ServiceException;
 import com.zksy.commonFile.service.ManageCommonService;
 import com.zksy.system.basicData.domain.CrmFile;
 import com.zksy.system.basicData.mapper.CrmFileMapper;
+import com.zksy.system.basicData.mapper.SysInventoryReviewMapper;
+import com.zksy.system.domain.SysInventoryReview;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,6 +44,9 @@ public class ManageCommonServiceImpl implements ManageCommonService {
     @Autowired
     private CrmFileMapper mapper;
 
+    @Autowired
+    private SysInventoryReviewMapper sysInventoryReviewMapper;
+
     @Override
     public AjaxResult uploadFile(MultipartFile multipartFile, Long fid, String moduleName) {
         try {
@@ -207,4 +212,29 @@ public class ManageCommonServiceImpl implements ManageCommonService {
             return AjaxResult.error("指定的文件不存在");
         }
     }
+
+    @Override
+    public void deleteFileByInventoryReviewId(String id) throws Exception {
+        SysInventoryReview review = sysInventoryReviewMapper.selectById(id);
+        String filePath =
+                localFileServerUploadDir+review
+                        .getOperationContent()
+                        .substring(
+                                review
+                                        .getOperationContent()
+                                        .lastIndexOf("/")+1
+                        );
+        File file = new File(filePath);
+        if (file.exists()) {
+            boolean isDeleted = file.delete();
+            if (isDeleted) {
+                review.setOperationContent(null);
+                sysInventoryReviewMapper.updateById(review);
+            } else {
+                throw new ServiceException("无法删除该文件");
+            }
+        } else {
+            throw new Exception("没找到文件");
+        }
+    }
 }

+ 5 - 1
zksy-admin/src/main/java/com/zksy/utils/SearchUtil.java

@@ -22,7 +22,11 @@ public class SearchUtil {
                     switch (conditionVo.getType()){
                         case "eq": queryWrapper.eq(conditionVo.getColumn(),conditionVo.getValue());break;
                         case "ne": queryWrapper.ne(conditionVo.getColumn(),conditionVo.getValue());break;
-                        case "between": queryWrapper.between(conditionVo.getColumn(), conditionVo.getValue() == null ? empty : conditionVo.getValue().split(",")[0],conditionVo.getValue().split(",")[1]);break;
+                        case "between": queryWrapper.between(
+                                conditionVo.getColumn(),
+                                conditionVo.getValue() == null ? empty : conditionVo.getValue().split(",")[0],
+                                conditionVo.getValue().split(",")[1]
+                        );break;
                         case "like": queryWrapper.like(conditionVo.getColumn(),conditionVo.getValue());break;
                         case "leftLike": queryWrapper.likeLeft(conditionVo.getColumn(),conditionVo.getValue());break;
                         case "rightLike": queryWrapper.likeRight(conditionVo.getColumn(),conditionVo.getValue());break;

+ 37 - 26
zksy-admin/src/main/java/com/zksy/web/controller/basicData/CrmAdministrativeLicenseController.java

@@ -1,42 +1,27 @@
 package com.zksy.web.controller.basicData;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zksy.common.annotation.Log;
 import com.zksy.common.core.controller.BaseController;
+import com.zksy.common.core.controller.BaseControllerInterface;
 import com.zksy.common.core.domain.AjaxResult;
 import com.zksy.common.enums.BusinessType;
 import com.zksy.common.utils.file.ExcelUtils;
 import com.zksy.system.basicData.domain.CrmAdministrativeLicense;
 import com.zksy.system.basicData.service.CrmAdministrativeLicenseService;
+import com.zksy.system.basicData.service.HandleRequestLicenseService;
 import com.zksy.utils.DowntemplateUtil;
 import com.zksy.utils.SearchUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.poi.ss.usermodel.DateUtil;
-import org.aspectj.util.FileUtil;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.InputStreamResource;
-import org.springframework.core.io.Resource;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
 import java.io.IOException;
-import java.io.InputStream;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
 import java.util.List;
-import java.util.Locale;
 
 /**
  * @author Administrator
@@ -48,9 +33,11 @@ import java.util.Locale;
 @Api(value = "行政许可", tags = "行政许可")
 @RestController
 @RequestMapping("/crmAdministrativeLicense")
-public class CrmAdministrativeLicenseController extends BaseController {
+public class CrmAdministrativeLicenseController extends BaseController implements BaseControllerInterface {
     @Autowired
     private CrmAdministrativeLicenseService service;
+    @Autowired
+    private HandleRequestLicenseService handleRequestLicenseService;
 
     @GetMapping("/findByPage")
     @ApiOperation(value = "行政许可分页查询")
@@ -64,10 +51,7 @@ public class CrmAdministrativeLicenseController extends BaseController {
         return AjaxResult.success(service.list(SearchUtil.parseWhereSql(conditionJson)));
     }
 
-    @ApiOperation("行政许可数据导入")
-    @Log(title = "行政许可", businessType = BusinessType.IMPORT)
-    //@PreAuthorize("@ss.hasPermi('system:user:import')")
-    @PostMapping("/importData")
+    @Override
     public AjaxResult importData(MultipartFile file)
     {
         try {
@@ -87,6 +71,14 @@ public class CrmAdministrativeLicenseController extends BaseController {
             return AjaxResult.error("导入数据失败");
         }
     }
+    @ApiOperation("行政许可数据导入")
+    @Log(title = "行政许可", businessType = BusinessType.IMPORT)
+    //@PreAuthorize("@ss.hasPermi('system:user:import')")
+    @PostMapping("/importData")
+    public AjaxResult importDataRequest(MultipartFile file) throws Exception {
+        handleRequestLicenseService.requestImportData("crmAdministrativeLicenseController","行政许可",file,getUsername());
+        return AjaxResult.success("成功发送导入请求,待负责人审核");
+    }
 
     @ApiOperation("行政许可数据导出")
     @Log(title = "行政许可", businessType = BusinessType.EXPORT)
@@ -95,17 +87,36 @@ public class CrmAdministrativeLicenseController extends BaseController {
         List<CrmAdministrativeLicense> wrapperList = service.list(SearchUtil.parseWhereSql(conditionJson));
         ExcelUtils.export(response,"行政许可",wrapperList,CrmAdministrativeLicense.class);
     }
+    @Override
+    public AjaxResult delete(@RequestBody List<String> ids)
+    {
+        return toAjax(service.removeByIds(ids));
+    }
+
+    @Override
+    public AjaxResult getListByIds(List<String> ids) {
+        LambdaQueryWrapper<CrmAdministrativeLicense> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(CrmAdministrativeLicense::getId,ids);
+        List<CrmAdministrativeLicense> list = service.list(wrapper);
+        return AjaxResult.success(list);
+    }
 
     @Log(title = "行政许可", businessType = BusinessType.DELETE)
     @PostMapping("/delete")
     @ApiOperation(value = "删除行政许可", notes = "删除行政许可")
-    public AjaxResult delete(@RequestBody List<String> ids)
+    public AjaxResult deleteRequest(@RequestBody List<String> ids)
     {
-        return toAjax(service.removeByIds(ids));
+        handleRequestLicenseService.requestDelete("crmAdministrativeLicenseController","行政许可",ids,getUsername());
+        return AjaxResult.success("成功发送删除请求,待负责人审核");
     }
-
     @DeleteMapping("/deleteAll")
     @ApiOperation(value = "清除数据", notes = "清除数据")
+    public AjaxResult deleteAllRequest(){
+        handleRequestLicenseService.requestDeleteAll("crmAdministrativeLicenseController","行政许可",getUsername());
+        return AjaxResult.success("成功发送删除全表请求,待负责人审核");
+    }
+
+    @Override
     public AjaxResult deleteAll(){
         return service.deleteAll();
     }

+ 75 - 0
zksy-admin/src/main/java/com/zksy/web/controller/system/HandleRequestLicenseController.java

@@ -0,0 +1,75 @@
+package com.zksy.web.controller.system;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zksy.common.core.domain.AjaxResult;
+import com.zksy.system.basicData.service.HandleRequestLicenseService;
+import com.zksy.system.basicData.service.ISysInventoryReviewService;
+import com.zksy.system.domain.SysInventoryReview;
+import com.zksy.utils.SearchUtil;
+import io.swagger.annotations.Api;
+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 java.util.List;
+
+@RestController
+@RequestMapping("/handleRequestLicense")
+@Api(tags = "入库批准", description = "入库批准")
+public class HandleRequestLicenseController {
+
+    @Autowired
+    private ISysInventoryReviewService sysInventoryReviewService;
+    @GetMapping("/getAll")
+    @ApiOperation(value = "获取所有", notes = "获取所有")
+    public AjaxResult getAll(){
+        return AjaxResult.success(sysInventoryReviewService.list());
+    }
+    @GetMapping("/getListByPage")
+    @ApiOperation(value = "分页查询", notes = "分页查询")
+    public AjaxResult getListByPage(Long pageNum,Long pageSize,String conditionJson) throws Exception {
+        return AjaxResult.success(sysInventoryReviewService.page(new Page<>(pageNum, pageSize), SearchUtil.parseWhereSql(conditionJson)));
+    }
+    @GetMapping("/approve")
+    @ApiOperation(value = "批准", notes = "批准")
+    public AjaxResult approve(String id){
+        boolean res = sysInventoryReviewService.approve(id);
+        if(!res){
+            return AjaxResult.error("操作失败");
+        }
+        return AjaxResult.success("已批准执行");
+    }
+    @PostMapping("/approve")
+    @ApiOperation(value = "批准", notes = "批准")
+    public AjaxResult approveAndFile(String id, @RequestBody MultipartFile file){
+        return sysInventoryReviewService.approve(id,file);
+    }
+
+    @GetMapping("/reject")
+    @ApiOperation(value = "驳回", notes = "驳回")
+    public AjaxResult reject(String id,String reason){
+        boolean res = sysInventoryReviewService.reject(id,reason);
+        if(!res){
+            return AjaxResult.error("操作失败");
+        }
+        return AjaxResult.success("已驳回请求");
+    }
+
+    @GetMapping("/haveRead")
+    @ApiOperation(value = "已阅", notes = "已阅")
+    public AjaxResult haveRead(String id){
+        boolean res = sysInventoryReviewService.haveRead(id);
+        if(!res){
+            return AjaxResult.error("操作失败");
+        }
+        return AjaxResult.success("已阅");
+    }
+
+    @GetMapping("/checkContent")
+    @ApiOperation(value = "查看详情", notes = "查看详情")
+    public AjaxResult checkContent(String id){
+        List<Object> list = sysInventoryReviewService.getContentByReviewId(id);
+        return AjaxResult.success(list);
+    }
+}

+ 2 - 2
zksy-admin/src/main/resources/application-druid.yml

@@ -83,7 +83,7 @@ spring:
   # redis 配置
   redis:
     # 地址
-    host: 127.0.0.1
+    host: 192.168.110.30
     # 端口,默认为6379
     port: 6379
     # 数据库索引
@@ -104,7 +104,7 @@ spring:
         max-wait: -1ms
   redisson:
     # 单机
-    address: 127.0.0.1:6379
+    address: 192.168.110.30:6379
     database: 10
     #password:
 

+ 3 - 1
zksy-common/src/main/java/com/zksy/common/core/controller/BaseController.java

@@ -21,13 +21,14 @@ import org.springframework.web.bind.WebDataBinder;
 import org.springframework.web.bind.annotation.InitBinder;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * web层通用数据处理
  * 
  * @author ruoyi
  */
-public class BaseController
+public abstract class BaseController
 {
     protected final Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -176,4 +177,5 @@ public class BaseController
     {
         return getLoginUser().getUsername();
     }
+
 }

+ 14 - 0
zksy-common/src/main/java/com/zksy/common/core/controller/BaseControllerInterface.java

@@ -0,0 +1,14 @@
+package com.zksy.common.core.controller;
+
+import com.zksy.common.core.domain.AjaxResult;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+public interface BaseControllerInterface {
+    AjaxResult importData(MultipartFile file);
+    AjaxResult delete(@RequestBody List<String> ids);
+    AjaxResult getListByIds(@RequestBody List<String> ids);
+    AjaxResult deleteAll();
+}

+ 11 - 0
zksy-system/src/main/java/com/zksy/system/basicData/mapper/SysInventoryReviewMapper.java

@@ -0,0 +1,11 @@
+package com.zksy.system.basicData.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zksy.system.domain.SysInventoryReview;
+
+/**
+ * 入库审核Mapper接口
+ */
+public interface SysInventoryReviewMapper extends BaseMapper<SysInventoryReview> {
+    // 可以在这里添加自定义的查询方法
+}

+ 18 - 0
zksy-system/src/main/java/com/zksy/system/basicData/service/HandleRequestLicenseService.java

@@ -0,0 +1,18 @@
+package com.zksy.system.basicData.service;
+
+import com.zksy.common.core.domain.AjaxResult;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+public interface HandleRequestLicenseService {
+    void requestDelete(String beanName, String tableName, List<String> ids, String username);
+    AjaxResult deleteExec(String beanName, List<String> ids);
+
+    void requestDeleteAll(String beanName, String tableName, String username);
+    AjaxResult deleteAllExec(String beanName);
+
+    void requestImportData(String beanName, String tableName, MultipartFile file, String username) throws Exception;
+    AjaxResult importDataExec(String beanName,MultipartFile file);
+}

+ 23 - 0
zksy-system/src/main/java/com/zksy/system/basicData/service/ISysInventoryReviewService.java

@@ -0,0 +1,23 @@
+package com.zksy.system.basicData.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zksy.common.core.domain.AjaxResult;
+import com.zksy.system.domain.SysInventoryReview;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * 入库审核Service接口
+ */
+public interface ISysInventoryReviewService extends IService<SysInventoryReview> {
+    boolean approve(String id);
+
+    AjaxResult approve(String id, MultipartFile file);
+
+    boolean reject(String id,String reason);
+
+    boolean haveRead(String id);
+
+    List<Object> getContentByReviewId(String id);
+}

+ 133 - 0
zksy-system/src/main/java/com/zksy/system/basicData/service/impl/HandleRequestLicenseServiceImpl.java

@@ -0,0 +1,133 @@
+package com.zksy.system.basicData.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zksy.common.core.controller.BaseControllerInterface;
+import com.zksy.common.core.domain.AjaxResult;
+import com.zksy.system.constant.InventoryReviewConstant;
+import com.zksy.system.domain.SysInventoryReview;
+import com.zksy.system.basicData.mapper.SysInventoryReviewMapper;
+import com.zksy.system.basicData.service.HandleRequestLicenseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.lang.reflect.InvocationTargetException;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Service
+@Transactional
+public class HandleRequestLicenseServiceImpl implements HandleRequestLicenseService {
+    @Autowired
+    private ApplicationContext applicationContext;
+    @Autowired
+    private SysInventoryReviewMapper sysInventoryReviewMapper;
+
+    @Override
+    public void requestDelete(String beanName, String tableName, List<String> ids, String username) {
+        LambdaQueryWrapper<SysInventoryReview> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysInventoryReview::getAuditStatus, 0);
+        wrapper.eq(SysInventoryReview::getTableName, tableName);
+        wrapper.like(SysInventoryReview::getBusinessType, InventoryReviewConstant.DELETE_ONE_ROW);
+        if (!sysInventoryReviewMapper.selectList(wrapper).isEmpty()) {
+            throw new RuntimeException("存在未审批的删除申请,请先通过审批");
+        }
+        SysInventoryReview sysInventoryReview = new SysInventoryReview();
+        sysInventoryReview.setAuditStatus(0);
+        sysInventoryReview.setBusinessType(InventoryReviewConstant.DELETE_ONE_ROW);
+        sysInventoryReview.setOperationContent(String.join(",", ids));
+        sysInventoryReview.setTableName(tableName);
+        sysInventoryReview.setUserName(username);
+        sysInventoryReview.setCreateBy(username);
+        sysInventoryReview.setBeanName(beanName);
+        sysInventoryReview.setCreateTime(LocalDateTime.now());
+        sysInventoryReview.setUpdateTime(LocalDateTime.now());
+        sysInventoryReviewMapper.insert(sysInventoryReview);
+    }
+
+    @Override
+    public AjaxResult deleteExec(String beanName, List<String> ids) {
+        BaseControllerInterface bean = (BaseControllerInterface) applicationContext.getBean(beanName);
+        AjaxResult result = bean.delete(ids);
+        if ((int) result.get("code") != 200) {
+            throw new RuntimeException("删除失败");
+        }
+        return AjaxResult.success("删除成功");
+    }
+
+    @Override
+    public void requestDeleteAll(String beanName, String tableName, String username) {
+        LambdaQueryWrapper<SysInventoryReview> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysInventoryReview::getAuditStatus, 0);
+        wrapper.eq(SysInventoryReview::getTableName, tableName);
+        wrapper.like(SysInventoryReview::getBusinessType, InventoryReviewConstant.DELETE_ONE_ROW);
+        if (!sysInventoryReviewMapper.selectList(wrapper).isEmpty()) {
+            throw new RuntimeException("存在未审批的删除申请,请先通过审批");
+        }
+        SysInventoryReview sysInventoryReview = new SysInventoryReview();
+        sysInventoryReview.setAuditStatus(0);
+        sysInventoryReview.setBusinessType(InventoryReviewConstant.DELETE_WHOLE_TABLE);
+        sysInventoryReview.setTableName(tableName);
+        sysInventoryReview.setUserName(username);
+        sysInventoryReview.setCreateBy(username);
+        sysInventoryReview.setBeanName(beanName);
+        sysInventoryReview.setCreateTime(LocalDateTime.now());
+        sysInventoryReview.setUpdateTime(LocalDateTime.now());
+        sysInventoryReviewMapper.insert(sysInventoryReview);
+    }
+
+    @Override
+    public AjaxResult deleteAllExec(String beanName) {
+        BaseControllerInterface bean = (BaseControllerInterface) applicationContext.getBean(beanName);
+        AjaxResult result = bean.deleteAll();
+        if ((int) result.get("code") != 200) {
+            throw new RuntimeException("删除失败");
+        }
+        return AjaxResult.success("删除成功");
+    }
+
+    @Override
+    public void requestImportData(String beanName, String tableName, MultipartFile file, String username) throws Exception {
+        LambdaQueryWrapper<SysInventoryReview> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysInventoryReview::getAuditStatus, 0);
+        wrapper.eq(SysInventoryReview::getTableName, tableName);
+        wrapper.like(SysInventoryReview::getBusinessType, InventoryReviewConstant.IMPORT_DATA);
+        if (!sysInventoryReviewMapper.selectList(wrapper).isEmpty()) {
+            throw new RuntimeException("存在未审批的导入申请,请先通过审批");
+        }
+        SysInventoryReview sysInventoryReview = new SysInventoryReview();
+        Object invoke = applicationContext
+                .getBean("manageCommonServiceImpl")
+                .getClass()
+                .getMethod("uploadFilePath", MultipartFile.class)
+                .invoke(applicationContext.getBean("manageCommonServiceImpl"), file);
+        if(invoke instanceof String){
+            sysInventoryReview.setOperationContent((String) invoke);
+        }else {
+            throw new RuntimeException("上传出现了问题");
+        }
+        sysInventoryReview.setAuditStatus(0);
+        sysInventoryReview.setBusinessType("导入");
+        sysInventoryReview.setTableName(tableName);
+        sysInventoryReview.setUserName(username);
+        sysInventoryReview.setCreateBy(username);
+        sysInventoryReview.setBeanName(beanName);
+        sysInventoryReview.setCreateTime(LocalDateTime.now());
+        sysInventoryReview.setUpdateTime(LocalDateTime.now());
+        sysInventoryReviewMapper.insert(sysInventoryReview);
+
+    }
+
+    @Override
+    public AjaxResult importDataExec(String beanName,MultipartFile file) {
+        BaseControllerInterface bean = (BaseControllerInterface) applicationContext.getBean(beanName);
+        AjaxResult ajaxResult = bean.importData(file);
+        if((int) ajaxResult.get("code") != 200){
+            throw new RuntimeException(String.valueOf(ajaxResult.get("msg")));
+        }
+        return ajaxResult;
+    }
+}

+ 134 - 0
zksy-system/src/main/java/com/zksy/system/basicData/service/impl/SysInventoryReviewServiceImpl.java

@@ -0,0 +1,134 @@
+package com.zksy.system.basicData.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zksy.common.core.controller.BaseControllerInterface;
+import com.zksy.common.core.domain.AjaxResult;
+import com.zksy.common.utils.SecurityUtils;
+import com.zksy.system.basicData.service.HandleRequestLicenseService;
+import com.zksy.system.constant.InventoryReviewConstant;
+import com.zksy.system.domain.SysInventoryReview;
+import com.zksy.system.basicData.mapper.SysInventoryReviewMapper;
+import com.zksy.system.basicData.service.ISysInventoryReviewService;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 入库审核Service实现类
+ */
+@Service
+@Transactional
+public class SysInventoryReviewServiceImpl extends ServiceImpl<SysInventoryReviewMapper, SysInventoryReview> implements ISysInventoryReviewService {
+    @Autowired
+    private HandleRequestLicenseService handleRequestLicenseService;
+    @Autowired
+    private SysInventoryReviewMapper sysInventoryReviewMapper;
+    @Autowired
+    private ApplicationContext applicationContext;
+    @Override
+    public boolean approve(String id) {
+        LambdaUpdateWrapper<SysInventoryReview> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(SysInventoryReview::getId, id);
+        wrapper.set(SysInventoryReview::getAuditStatus, 1);
+        SysInventoryReview review = sysInventoryReviewMapper.selectById(id);
+        if(InventoryReviewConstant.DELETE_ONE_ROW.equals(review.getBusinessType())){
+            List<String> ids = Arrays.asList(review.getOperationContent().split(","));
+            handleRequestLicenseService.deleteExec(review.getBeanName(),ids);
+            wrapper.set(SysInventoryReview::getUpdateTime, LocalDateTime.now());
+            wrapper.set(SysInventoryReview::getUpdateBy, SecurityUtils.getLoginUser().getUsername());
+            return this.update(wrapper);
+        }else if(InventoryReviewConstant.DELETE_WHOLE_TABLE.equals(review.getBusinessType())){
+            handleRequestLicenseService.deleteAllExec(review.getBeanName());
+            wrapper.set(SysInventoryReview::getUpdateTime, LocalDateTime.now());
+            wrapper.set(SysInventoryReview::getUpdateBy, SecurityUtils.getLoginUser().getUsername());
+            return this.update(wrapper);
+        }else {
+            throw new RuntimeException("批准时出现业务类型找不到异常");
+        }
+    }
+
+    @Override
+    public AjaxResult approve(String id, MultipartFile file) {
+        AjaxResult result;
+        LambdaQueryWrapper<SysInventoryReview> wp = new LambdaQueryWrapper<>();
+        wp.eq(SysInventoryReview::getAuditStatus, 0);
+        wp.eq(SysInventoryReview::getBusinessType, InventoryReviewConstant.DELETE_WHOLE_TABLE);
+        if (!sysInventoryReviewMapper.selectList(wp).isEmpty()) {
+            throw new RuntimeException("存在未审批的清除全表申请,请先通过审批");
+        }
+        try {
+            LambdaUpdateWrapper<SysInventoryReview> wrapper = new LambdaUpdateWrapper<>();
+            wrapper.eq(SysInventoryReview::getId, id);
+            wrapper.set(SysInventoryReview::getAuditStatus, 1);
+            SysInventoryReview review = sysInventoryReviewMapper.selectById(id);
+            if(InventoryReviewConstant.IMPORT_DATA.equals(review.getBusinessType())){
+               result = handleRequestLicenseService.importDataExec(review.getBeanName(),file);
+               wrapper.set(SysInventoryReview::getUpdateTime, LocalDateTime.now());
+               wrapper.set(SysInventoryReview::getUpdateBy, SecurityUtils.getLoginUser().getUsername());
+               this.update(wrapper);
+               applicationContext
+                        .getBean("manageCommonServiceImpl")
+                        .getClass()
+                        .getMethod("deleteFileByInventoryReviewId", String.class)
+                        .invoke(applicationContext.getBean("manageCommonServiceImpl"),id);
+            }else {
+                throw new RuntimeException("批准时出现业务类型找不到异常");
+            }
+            return result;
+        } catch (Exception e) {
+            throw new RuntimeException(e.getMessage());
+        }
+    }
+
+    @Override
+    public boolean reject(String id,String reason) {
+        LambdaUpdateWrapper<SysInventoryReview> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(SysInventoryReview::getId, id);
+        wrapper.set(SysInventoryReview::getAuditStatus, 2);
+        wrapper.set(SysInventoryReview::getUpdateTime, LocalDateTime.now());
+        wrapper.set(SysInventoryReview::getRejectReason,reason);
+        wrapper.set(SysInventoryReview::getUpdateBy, SecurityUtils.getLoginUser().getUsername());
+        return this.update(wrapper);
+    }
+
+    @Override
+    public boolean haveRead(String id) {
+        LambdaUpdateWrapper<SysInventoryReview> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(SysInventoryReview::getId, id);
+        wrapper.set(SysInventoryReview::getIsRead, 1);
+        return this.update(wrapper);
+    }
+
+    @Override
+    public List<Object> getContentByReviewId(String id) {
+        SysInventoryReview inventoryReview = this.getById(id);
+        BaseControllerInterface bean =(BaseControllerInterface) applicationContext.getBean(inventoryReview.getBeanName());
+        if(ObjectUtils.isEmpty(inventoryReview) || ObjectUtils.isEmpty(bean)){
+            throw new RuntimeException("数据异常");
+        }
+        AjaxResult result = null;
+        if(InventoryReviewConstant.DELETE_ONE_ROW.equals(inventoryReview.getBusinessType())){
+            result = bean.getListByIds(Arrays.asList(inventoryReview.getOperationContent().split(",")));
+        }
+        if((int)result.get("code") != 200){
+            throw new RuntimeException("数据异常");
+        }
+        return (List<Object>) result.get("data");
+    }
+}

+ 7 - 0
zksy-system/src/main/java/com/zksy/system/constant/InventoryReviewConstant.java

@@ -0,0 +1,7 @@
+package com.zksy.system.constant;
+
+public class InventoryReviewConstant {
+    public static final String DELETE_WHOLE_TABLE = "删除全表";
+    public static final String DELETE_ONE_ROW = "删除";
+    public static final String IMPORT_DATA = "导入";
+}

+ 62 - 0
zksy-system/src/main/java/com/zksy/system/domain/SysInventoryReview.java

@@ -0,0 +1,62 @@
+package com.zksy.system.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("sys_inventory_review")
+@ApiModel("入库审核")
+public class SysInventoryReview implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("business_type")
+    private String businessType;
+
+    @TableField("audit_status")
+    private Integer auditStatus;
+
+    @TableField("user_name")
+    private String userName;
+
+    @TableField(value = "operation_content",insertStrategy = FieldStrategy.IGNORED)
+    private String operationContent;
+
+    @TableField("table_name")
+    private String tableName;
+
+    @TableField("bean_name")
+    private String beanName;
+
+    @TableField("is_read")
+    private String isRead;
+
+    @TableField("reject_reason")
+    private String rejectReason;
+
+    @TableField("create_by")
+    private String createBy;
+
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @TableField("update_by")
+    private String updateBy;
+
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+}