From 3fb8061a9fb85629885ae8383db247946ede7eaf Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期四, 20 二月 2025 09:51:39 +0800
Subject: [PATCH] 添加抽样和不合格流程
---
inspect-server/src/main/java/com/ruoyi/inspect/mapper/CommonOaMapper.java | 20
inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckQuarterDto.java | 22
inspect-server/src/main/java/com/ruoyi/inspect/controller/FinishProductSpotCheckController.java | 198 ++++++
inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckQuarterItemService.java | 15
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java | 679 ++++++++++++++++++++
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java | 2
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckQuarterItemServiceImpl.java | 19
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckYearItemServiceImpl.java | 19
inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java | 24
inspect-server/src/main/java/com/ruoyi/inspect/service/FinishProductSpotCheckService.java | 126 +++
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/CommonOaServiceImpl.java | 22
inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckYearDto.java | 22
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java | 8
inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerFileService.java | 19
inspect-server/src/main/resources/mapper/SpotCheckQuarterMapper.xml | 25
inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckYearItemService.java | 15
inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckQuarterMapper.java | 39 +
inspect-server/src/main/resources/mapper/SpotCheckYearMapper.xml | 19
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java | 139 ++++
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerFileServiceImpl.java | 111 +++
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java | 8
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerFileMapper.java | 20
inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearItemMapper.java | 17
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java | 280 ++++++++
inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java | 39 +
inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearMapper.java | 30
inspect-server/src/main/java/com/ruoyi/inspect/service/CommonOaService.java | 13
27 files changed, 1,941 insertions(+), 9 deletions(-)
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/FinishProductSpotCheckController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/FinishProductSpotCheckController.java
new file mode 100644
index 0000000..d671ee8
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/FinishProductSpotCheckController.java
@@ -0,0 +1,198 @@
+package com.ruoyi.inspect.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.inspect.dto.IfsStockQueryDTO;
+import com.ruoyi.inspect.dto.SpotCheckQuarterDto;
+import com.ruoyi.inspect.dto.SpotCheckYearDto;
+import com.ruoyi.inspect.service.FinishProductSpotCheckService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Map;
+
+/**
+ * @Author zhuo
+ * @Date 2024/9/29
+ */
+@RequestMapping("/finishProductSpotCheck")
+@RestController
+@AllArgsConstructor
+@Api(tags = "鎴愬搧鎶芥牱")
+public class FinishProductSpotCheckController {
+
+ private FinishProductSpotCheckService finishProductSpotCheckService;
+
+ /**
+ * 鏌ヨifs搴撳瓨鏁伴噺
+ *
+ * @param ifsStockQueryDTO
+ * @return
+ */
+ @ApiOperation(value = "鏌ヨifs鎴愬搧搴撳瓨")
+ @PostMapping("/getIfsStock")
+ public Result getIfsStock(@RequestBody IfsStockQueryDTO ifsStockQueryDTO) {
+ return finishProductSpotCheckService.getIfsStockReport(ifsStockQueryDTO);
+ }
+
+ /******************************************************** 瀛e害鎶芥牱 ********************************************************/
+
+ /**
+ * 鏂板瀛e害鎶芥
+ *
+ * @param spotCheckQuarterDto
+ * @return
+ */
+ @ApiOperation(value = "鏂板瀛e害鎶芥")
+ @PostMapping("/addQuarter")
+ public Result addQuarter(@RequestBody SpotCheckQuarterDto spotCheckQuarterDto) {
+ return Result.success(finishProductSpotCheckService.addQuarter(spotCheckQuarterDto));
+ }
+
+ /**
+ * 鏌ヨ瀛e害鎶芥牱璇︽儏
+ *
+ * @param quarterId
+ * @return
+ */
+ @ApiOperation(value = "鏌ヨ瀛e害鎶芥牱璇︽儏")
+ @GetMapping("/getQuarter")
+ public Result getQuarter(Integer quarterId) {
+ return Result.success(finishProductSpotCheckService.getQuarter(quarterId));
+ }
+
+ /**
+ * 瀛e害鎶芥牱鍒楄〃
+ * @return
+ * @throws Exception
+ */
+ @ApiOperation(value = "瀛e害鎶芥牱鍒楄〃")
+ @GetMapping("/getQuarterPage")
+ public Result getQuarterPage(Page page, SpotCheckQuarterDto spotCheckQuarter) throws Exception {
+ return Result.success(finishProductSpotCheckService.getQuarterPage(page, spotCheckQuarter));
+ }
+
+ /**
+ * 鏂板瀛e害鎶芥
+ *
+ * @param quarterId
+ * @return
+ */
+ @ApiOperation(value = "鍒犻櫎瀛e害妫�楠�")
+ @DeleteMapping("/deleteQuarter")
+ public Result deleteQuarter(Integer quarterId) {
+ return Result.success(finishProductSpotCheckService.deleteQuarter(quarterId));
+ }
+
+ /**
+ * 鎴愬搧涓嬪崟鐣岄潰鏌ヨ瀛e害淇℃伅
+ *
+ * @return
+ */
+ @ApiOperation(value = "鎴愬搧涓嬪崟鐣岄潰鏌ヨ瀛e害淇℃伅")
+ @GetMapping("/getQuarterOnOrder")
+ public Result getQuarterOnOrder() {
+ return Result.success(finishProductSpotCheckService.getQuarterOnOrder());
+ }
+
+ /**
+ * 鎴愬搧涓嬪崟鐣岄潰鏌ヨ瀛e害淇℃伅
+ *
+ * @return
+ */
+ @ApiOperation(value = "淇敼瀛e害妫�楠�")
+ @PostMapping("/updateQuarterOnOrder")
+ public Result updateQuarterOnOrder(@RequestBody SpotCheckQuarterDto spotCheckQuarterDto) {
+ return Result.success(finishProductSpotCheckService.updateQuarterOnOrder(spotCheckQuarterDto));
+ }
+
+ /**
+ * 鎴愬搧涓嬪崟鐣岄潰鏌ヨ瀛e害淇℃伅
+ *
+ * @return
+ */
+ @ApiOperation(value = "鎻愪氦鏈�缁堝搴︽姤鍛�")
+ @GetMapping("/finalReportQuarter")
+ public void finalReportQuarter(Integer quarterId, HttpServletResponse response) {
+ finishProductSpotCheckService.finalReportQuarter(quarterId, response);
+ }
+
+
+
+
+
+ /******************************************************** 骞村害鎶芥牱 ********************************************************/
+
+ /**
+ * 鏂板骞村害鎶芥牱
+ *
+ * @param spotCheckYearDto
+ * @return
+ */
+ @ApiOperation(value = "鏂板骞村害鎶芥牱")
+ @PostMapping("/addSpotCheckYear")
+ public Result addSpotCheckYear(@RequestBody SpotCheckYearDto spotCheckYearDto) {
+ return Result.success(finishProductSpotCheckService.addSpotCheckYear(spotCheckYearDto));
+ }
+
+ /**
+ * 鏌ヨ瀛e害鎶芥牱璇︽儏
+ *
+ * @param yearId
+ * @return
+ */
+ @ApiOperation(value = "鏌ヨ骞村害鎶芥牱璇︽儏")
+ @GetMapping("/getSpotCheckYear")
+ public Result getSpotCheckYear(Integer yearId) {
+ return Result.success(finishProductSpotCheckService.getSpotCheckYear(yearId));
+ }
+
+ /**
+ * 瀛e害鎶芥牱鍒楄〃
+ * @return
+ * @throws Exception
+ */
+ @ApiOperation(value = "骞村害鎶芥牱鍒楄〃鍒楄〃")
+ @GetMapping("/getSpotCheckYearPage")
+ public Result getSpotCheckYearPage(Page page, SpotCheckYearDto spotCheckYear) throws Exception {
+ return Result.success(finishProductSpotCheckService.getSpotCheckYearPage(page, spotCheckYear));
+ }
+
+ /**
+ * 鍒犻櫎骞村害鎶芥牱
+ *
+ * @param yearId
+ * @return
+ */
+ @ApiOperation(value = "鍒犻櫎骞村害鎶芥牱")
+ @DeleteMapping("/deleteSpotCheckYear")
+ public Result deleteSpotCheckYear(Integer yearId) {
+ return Result.success(finishProductSpotCheckService.deleteSpotCheckYear(yearId));
+ }
+
+ /**
+ * 鎴愬搧涓嬪崟鐣岄潰鏌ヨ瀛e害淇℃伅
+ *
+ * @return
+ */
+ @ApiOperation(value = "淇敼骞村害妫�楠�")
+ @PostMapping("/updateSpotCheckYear")
+ public Result updateSpotCheckYear(@RequestBody SpotCheckYearDto spotCheckYearDto) {
+ return Result.success(finishProductSpotCheckService.updateSpotCheckYear(spotCheckYearDto));
+ }
+
+ /**
+ * 鎴愬搧涓嬪崟鐣岄潰鏌ヨ瀛e害淇℃伅
+ *
+ * @return
+ */
+ @ApiOperation(value = "鐢熸垚鏈�缁堝勾搴︽姤鍛�")
+ @GetMapping("/finalReportSpotCheckYear")
+ public Result finalReportSpotCheckYear(Integer yearId, HttpServletResponse response) {
+ return Result.success(finishProductSpotCheckService.finalReportSpotCheckYear(yearId, response));
+ }
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
index b3a36ef..c2d04ee 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
@@ -1,4 +1,4 @@
-package com.ruoyi.basic.controller;
+package com.ruoyi.inspect.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
new file mode 100644
index 0000000..035e565
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
@@ -0,0 +1,139 @@
+package com.ruoyi.inspect.controller;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.oa.OAProcess;
+import com.ruoyi.inspect.dto.PushOADto;
+import com.ruoyi.inspect.dto.UnqualifiedHandlerDto;
+import com.ruoyi.inspect.pojo.InsUnqualifiedHandlerFile;
+import com.ruoyi.inspect.service.InsUnqualifiedHandlerFileService;
+import com.ruoyi.inspect.service.InsUnqualifiedHandlerService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@Api("涓嶅悎鏍煎鐞嗙鐞�")
+@RequestMapping("/unqualifiedHandler")
+@AllArgsConstructor
+@Slf4j
+public class InsUnqualifiedHandlerController {
+
+ private final InsUnqualifiedHandlerService unqualifiedHandlerService;
+ private final InsUnqualifiedHandlerFileService unqualifiedHandlerFileService;
+ private static final String REQUESTID = "requestId";
+ private static final String CHECKRESULT = "CHECKRESULT";
+
+
+
+
+ @ApiOperation(value = "鎻愪氦OA")
+ @PostMapping("/pushOA")
+ public Result pushOA(@RequestBody PushOADto pushOADto){
+ return unqualifiedHandlerService.pushOA(pushOADto);
+ }
+
+
+ @ApiOperation(value = "鏌ヨ")
+ @GetMapping("/page")
+ public Result pageByUnqualified(Page page, UnqualifiedHandlerDto unqualifiedHandlerDto){
+ return Result.success(unqualifiedHandlerService.pageList(page, unqualifiedHandlerDto));
+ }
+
+
+
+ @ApiOperation(value = "闄勪欢涓婁紶")
+ @PostMapping("/uploadFileByUnqualified")
+ public Result<?> uploadFileByUnqualified(Long handlerId, MultipartFile file) {
+ return Result.success(unqualifiedHandlerFileService.uploadFile(handlerId, file));
+ }
+
+
+ @ApiOperation(value = "涓嶅悎鏍煎鐞哋A鍥炶皟")
+ @RequestMapping(value = "/callback", produces = "text/plain")
+ public String unqualifiedHandlerOACallback(String data){
+ String msg = OAProcess.oaReturnMsg(0, "success");
+ JSONObject json = JSONObject.parseObject(data);
+ System.out.println("========>" + json);
+ try {
+ Long oaWorkId = json.getLong(REQUESTID);
+ String checkResult = json.getString(CHECKRESULT);
+ Object o = json.get("workflowRequestLogs");
+ JSONArray objects = JSONArray.parseArray(JSONObject.toJSONString(o));
+ unqualifiedHandlerService.unqualifiedHandlerOACallback(oaWorkId, checkResult,objects);
+ } catch (Exception e) {
+ System.out.println(e.getMessage());
+ msg = OAProcess.oaReturnMsg(1, "oa鍥炶皟澶辫触: " + e.getMessage());
+ }
+ System.out.println("oa鍥炶皟杩斿洖缁撴灉========>" + msg);
+ return msg;
+ }
+
+ /**
+ * 涓嬭浇oa闄勪欢
+ * @param handlerFileId
+ * @param response
+ */
+ @GetMapping("/downloadOAFile/{handlerFileId}")
+ public void downloadOAFile(@PathVariable("handlerFileId") Long handlerFileId, HttpServletResponse response){
+ unqualifiedHandlerFileService.downloadOAFile(handlerFileId,response);
+ }
+
+
+ @ApiOperation(value = "鏂板涓嶅悎鏍煎鐞�")
+ @PostMapping("/addUnqualifiedHandler")
+ public Result addUnqualifiedHandler(@RequestBody UnqualifiedHandlerDto unqualifiedHandlerDto){
+ return Result.success(unqualifiedHandlerService.addUnqualifiedHandler(unqualifiedHandlerDto));
+ }
+
+
+ @ApiOperation(value = "缂栬緫涓嶅悎鏍煎鐞�")
+ @PostMapping("/updateUnqualifiedHandler")
+ public Result updateUnqualifiedHandler(@RequestBody UnqualifiedHandlerDto unqualifiedHandlerDto){
+ return Result.success(unqualifiedHandlerService.updateUnqualifiedHandler(unqualifiedHandlerDto));
+ }
+
+
+ @ApiOperation(value = "鏌ョ湅oa娴佺▼")
+ @GetMapping("/getOaFlow")
+ public Result getOaFlow(Integer id){
+ return Result.success(unqualifiedHandlerService.getOaFlow(id));
+ }
+
+
+
+ @ApiOperation(value = "鏌ョ湅涓嶅悎鏍煎鐞嗙晫闈�")
+ @GetMapping("/getUnqualifiedHandler")
+ public Result getUnqualifiedHandler(Integer id){
+ return Result.success(unqualifiedHandlerService.getUnqualifiedHandler(id));
+ }
+
+
+ @ApiOperation(value = "鍒犻櫎涓嶅悎鏍煎鐞�")
+ @DeleteMapping("/deleteUnqualifiedHandler")
+ public Result deleteUnqualifiedHandler(Integer id) {
+ return Result.success(unqualifiedHandlerService.deleteUnqualifiedHandler(id));
+ }
+
+
+ @ApiOperation(value = "涓嬭浇闄勪欢")
+ @GetMapping("/downFile")
+ public Result<?> oaDownFile(Integer id) {
+ InsUnqualifiedHandlerFile insUnqualifiedHandlerFile = unqualifiedHandlerFileService.getById(id);
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("type", insUnqualifiedHandlerFile.getType());
+ map.put("fileUrl", insUnqualifiedHandlerFile.getFileUrl());
+ return Result.success(map);
+ }
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java
new file mode 100644
index 0000000..3fabfcd
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/PushOADto.java
@@ -0,0 +1,24 @@
+package com.ruoyi.inspect.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鎻愪氦oa鏁版嵁浼犺緭瀵硅薄
+ */
+@Data
+public class PushOADto {
+
+ /**
+ * 涓嶅悎鏍煎鐞嗕富閿甶d
+ */
+ @ApiModelProperty(value = "涓嶅悎鏍煎鐞嗕富閿甶d")
+ private Long handlerId;
+
+ /**
+ * 闄勪欢url
+ */
+ @ApiModelProperty(value = "闄勪欢url")
+ private String fileUrl;
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckQuarterDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckQuarterDto.java
new file mode 100644
index 0000000..9e9f82a
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckQuarterDto.java
@@ -0,0 +1,22 @@
+package com.ruoyi.inspect.dto;
+
+import com.ruoyi.inspect.pojo.SpotCheckQuarter;
+import com.ruoyi.inspect.pojo.SpotCheckQuarterItem;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author zhuo
+ * @Date 2024/10/10
+ */
+@Data
+public class SpotCheckQuarterDto extends SpotCheckQuarter {
+
+ @ApiModelProperty("瀛e害鎶芥璇︽儏")
+ private List<SpotCheckQuarterItem> quarterItems;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ private String createUserName;
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckYearDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckYearDto.java
new file mode 100644
index 0000000..339f059
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/SpotCheckYearDto.java
@@ -0,0 +1,22 @@
+package com.ruoyi.inspect.dto;
+
+import com.ruoyi.inspect.pojo.SpotCheckYear;
+import com.ruoyi.inspect.pojo.SpotCheckYearItem;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author zhuo
+ * @Date 2024/10/10
+ */
+@Data
+public class SpotCheckYearDto extends SpotCheckYear {
+
+ @ApiModelProperty("骞村害鎶芥牱璇︽儏")
+ private List<SpotCheckYearItem> yearItems;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ private String createUserName;
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/CommonOaMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/CommonOaMapper.java
new file mode 100644
index 0000000..41725f2
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/CommonOaMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspect.pojo.CommonOa;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author 27233
+* @description 閽堝琛ㄣ�恈ommon_oa(oa瀹℃牳娴佺▼淇℃伅璁板綍琛�)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-08-01 15:54:11
+* @Entity com.yuanchu.mom.pojo.CommonOa
+*/
+@Mapper
+public interface CommonOaMapper extends BaseMapper<CommonOa> {
+
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerFileMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerFileMapper.java
new file mode 100644
index 0000000..49c401b
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnqualifiedHandlerFileMapper.java
@@ -0,0 +1,20 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspect.pojo.InsUnqualifiedHandlerFile;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author 27233
+* @description 閽堝琛ㄣ�恑ns_unqualified_handler_file(涓嶅悎鏍煎鐞嗛檮浠惰褰曡〃)銆戠殑鏁版嵁搴撴搷浣淢apper
+* @createDate 2024-07-31 13:38:38
+* @Entity com.yuanchu.mom.pojo.InsUnqualifiedHandlerFile
+*/
+@Mapper
+public interface InsUnqualifiedHandlerFileMapper extends BaseMapper<InsUnqualifiedHandlerFile> {
+
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckQuarterMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckQuarterMapper.java
new file mode 100644
index 0000000..2bd8b27
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckQuarterMapper.java
@@ -0,0 +1,39 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.inspect.dto.SpotCheckQuarterDto;
+import com.ruoyi.inspect.pojo.SpotCheckQuarter;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 瀛e害鎶芥牱璁″垝
+ *
+ * @author zhuo
+ * @since 2024-10-09
+ */
+@Mapper
+public interface SpotCheckQuarterMapper extends BaseMapper<SpotCheckQuarter> {
+
+ /**
+ * 瀛e害鎶芥牱鍒嗛〉鏌ヨ
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<SpotCheckQuarterDto> getQuarterPage(Page page, @Param("ew") QueryWrapper<SpotCheckQuarterDto> ew);
+
+ /**
+ * 鎴愬搧涓嬪崟鐣岄潰鏌ヨ瀛e害淇℃伅
+ * @return
+ */
+ List<Map<String, Object>> getQuarterOnOrder();
+
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearItemMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearItemMapper.java
new file mode 100644
index 0000000..241deef
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearItemMapper.java
@@ -0,0 +1,17 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.inspect.pojo.SpotCheckYearItem;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 骞村害鎶芥牱璁″垝璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-10-10
+ */
+@Mapper
+public interface SpotCheckYearItemMapper extends BaseMapper<SpotCheckYearItem> {
+
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearMapper.java
new file mode 100644
index 0000000..c72196d
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/SpotCheckYearMapper.java
@@ -0,0 +1,30 @@
+package com.ruoyi.inspect.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.inspect.dto.SpotCheckYearDto;
+import com.ruoyi.inspect.pojo.SpotCheckYear;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 骞村害鎶芥牱璁″垝
+ *
+ * @author zhuo
+ * @since 2024-10-10
+ */
+@Mapper
+public interface SpotCheckYearMapper extends BaseMapper<SpotCheckYear> {
+
+ /**
+ * 鏌ヨ骞村害鎶芥牱鍒楄〃
+ * @param page
+ * @param ew
+ * @return
+ */
+ IPage<SpotCheckYearDto> getSpotCheckYearPage(Page page, @Param("ew") QueryWrapper<SpotCheckYearDto> ew);
+
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/CommonOaService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/CommonOaService.java
new file mode 100644
index 0000000..63f6a51
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/CommonOaService.java
@@ -0,0 +1,13 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.inspect.pojo.CommonOa;
+
+/**
+* @author 27233
+* @description 閽堝琛ㄣ�恈ommon_oa(oa瀹℃牳娴佺▼淇℃伅璁板綍琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2024-08-01 15:54:11
+*/
+public interface CommonOaService extends IService<CommonOa> {
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/FinishProductSpotCheckService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/FinishProductSpotCheckService.java
new file mode 100644
index 0000000..437b084
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/FinishProductSpotCheckService.java
@@ -0,0 +1,126 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.inspect.dto.IfsStockQueryDTO;
+import com.ruoyi.inspect.dto.SpotCheckQuarterDto;
+import com.ruoyi.inspect.dto.SpotCheckYearDto;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 鎴愬搧鎶芥牱
+ *
+ * @Author zhuo
+ * @Date 2024/9/29
+ */
+public interface FinishProductSpotCheckService {
+
+ /**
+ * 鏌ヨifs鎴愬搧搴撳瓨
+ *
+ * @return
+ */
+ Result getIfsStockReport(IfsStockQueryDTO ifsStockQueryDTO);
+
+
+ /******************************************************* 瀛e害鎶芥牱 *******************************************************/
+
+ /**
+ * 鏂板瀛e害鎶芥
+ * @param spotCheckQuarterDto
+ * @return
+ */
+ boolean addQuarter(SpotCheckQuarterDto spotCheckQuarterDto);
+
+ /**
+ * 鏌ヨ瀛e害鎶芥牱璇︽儏
+ * @param quarterId
+ * @return
+ */
+ SpotCheckQuarterDto getQuarter(Integer quarterId);
+
+ /**
+ * 瀛e害鎶芥牱鍒嗛〉鏌ヨ
+ * @param page
+ * @param spotCheckQuarter
+ * @return
+ */
+ IPage<SpotCheckQuarterDto> getQuarterPage(Page page, SpotCheckQuarterDto spotCheckQuarter);
+
+ /**
+ * 鍒犻櫎瀛e害鎶芥牱
+ * @param quarterId
+ * @return
+ */
+ boolean deleteQuarter(Integer quarterId);
+
+ /**
+ * 鎴愬搧涓嬪崟鐣岄潰鏌ヨ瀛e害淇℃伅
+ * @return
+ */
+ List<Map<String, Object>> getQuarterOnOrder();
+
+ /**
+ * 淇敼瀛e害妫�楠�
+ * @param spotCheckQuarterDto
+ * @return
+ */
+ boolean updateQuarterOnOrder(SpotCheckQuarterDto spotCheckQuarterDto);
+
+ /**
+ * 鐢熸垚鏈�缁堟姤鍛�
+ * @param quarterId
+ * @return
+ */
+ boolean finalReportQuarter(Integer quarterId, HttpServletResponse response);
+
+
+ /******************************************************* 骞村害鎶芥牱 *******************************************************/
+
+ /**
+ * 鏂板骞村害鎶芥牱
+ * @param spotCheckYearDto
+ * @return
+ */
+ boolean addSpotCheckYear(SpotCheckYearDto spotCheckYearDto);
+
+ /**
+ * 鏌ヨ骞村害鎶芥牱璇︽儏
+ * @param yearId
+ * @return
+ */
+ SpotCheckYearDto getSpotCheckYear(Integer yearId);
+
+ /**
+ * 骞村害鎶芥牱鍒楄〃
+ * @param page
+ * @param spotCheckYear
+ * @return
+ */
+ IPage<SpotCheckYearDto> getSpotCheckYearPage(Page page, SpotCheckYearDto spotCheckYear);
+
+ /**
+ * 鍒犻櫎骞村害鎶芥牱
+ * @param yearId
+ * @return
+ */
+ boolean deleteSpotCheckYear(Integer yearId);
+
+ /**
+ * 淇敼骞村害妫�楠�
+ * @param spotCheckYearDto
+ * @return
+ */
+ boolean updateSpotCheckYear(SpotCheckYearDto spotCheckYearDto);
+
+ /**
+ * 鐢熸垚鏈�缁堝勾搴︽姤鍛�
+ * @param yearId
+ * @return
+ */
+ boolean finalReportSpotCheckYear(Integer yearId, HttpServletResponse response);
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerFileService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerFileService.java
new file mode 100644
index 0000000..3f3825b
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerFileService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.inspect.pojo.InsUnqualifiedHandlerFile;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+* @author 27233
+* @description 閽堝琛ㄣ�恑ns_unqualified_handler_file(涓嶅悎鏍煎鐞嗛檮浠惰褰曡〃)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2024-07-31 13:38:38
+*/
+public interface InsUnqualifiedHandlerFileService extends IService<InsUnqualifiedHandlerFile> {
+
+ InsUnqualifiedHandlerFile uploadFile(Long handlerId, MultipartFile file);
+
+ void downloadOAFile(Long handlerFileId, HttpServletResponse response);
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java
new file mode 100644
index 0000000..038a284
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnqualifiedHandlerService.java
@@ -0,0 +1,39 @@
+package com.ruoyi.inspect.service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.inspect.dto.PushOADto;
+import com.ruoyi.inspect.dto.UnqualifiedHandlerDto;
+import com.ruoyi.inspect.pojo.CommonOa;
+import com.ruoyi.inspect.pojo.InsUnqualifiedHandler;
+import com.ruoyi.inspect.vo.UnqualifiedHandlerVO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* @author 27233
+* @description 閽堝琛ㄣ�恑ns_unqualified_handler(涓嶅悎鏍煎鐞嗚〃)銆戠殑鏁版嵁搴撴搷浣淪ervice
+* @createDate 2024-07-31 13:38:14
+*/
+public interface InsUnqualifiedHandlerService extends IService<InsUnqualifiedHandler> {
+
+ IPage<UnqualifiedHandlerVO> pageList(Page page, UnqualifiedHandlerDto unqualifiedHandlerDto);
+
+ Result pushOA(PushOADto pushOADto);
+
+ void unqualifiedHandlerOACallback(Long oaWorkId, String checkResult, JSONArray objects);
+
+ List<CommonOa> getOaFlow(Integer id);
+
+ boolean addUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto);
+
+ boolean updateUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto);
+
+ UnqualifiedHandlerDto getUnqualifiedHandler(Integer id);
+
+ boolean deleteUnqualifiedHandler(Integer id);
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckQuarterItemService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckQuarterItemService.java
new file mode 100644
index 0000000..9490f3d
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckQuarterItemService.java
@@ -0,0 +1,15 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.inspect.pojo.SpotCheckQuarterItem;
+
+/**
+ * 瀛e害鎶芥牱璁″垝璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-10-09
+ */
+public interface SpotCheckQuarterItemService extends IService<SpotCheckQuarterItem> {
+
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckYearItemService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckYearItemService.java
new file mode 100644
index 0000000..c9086d0
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/SpotCheckYearItemService.java
@@ -0,0 +1,15 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.inspect.pojo.SpotCheckYearItem;
+
+/**
+ * 骞村害鎶芥牱璁″垝璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-10-10
+ */
+public interface SpotCheckYearItemService extends IService<SpotCheckYearItem> {
+
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/CommonOaServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/CommonOaServiceImpl.java
new file mode 100644
index 0000000..0ef57c2
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/CommonOaServiceImpl.java
@@ -0,0 +1,22 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.inspect.mapper.CommonOaMapper;
+import com.ruoyi.inspect.pojo.CommonOa;
+import com.ruoyi.inspect.service.CommonOaService;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 27233
+* @description 閽堝琛ㄣ�恈ommon_oa(oa瀹℃牳娴佺▼淇℃伅璁板綍琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2024-08-01 15:54:11
+*/
+@Service
+public class CommonOaServiceImpl extends ServiceImpl<CommonOaMapper, CommonOa>
+ implements CommonOaService {
+
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java
new file mode 100644
index 0000000..8d7d884
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/FinishProductSpotCheckServiceImpl.java
@@ -0,0 +1,679 @@
+package com.ruoyi.inspect.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.config.ConfigureBuilder;
+import com.deepoove.poi.data.Pictures;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.utils.DateImageUtil;
+import com.ruoyi.common.utils.IfsApiUtils;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.dto.IfsStockQueryDTO;
+import com.ruoyi.inspect.dto.SpotCheckQuarterDto;
+import com.ruoyi.inspect.dto.SpotCheckYearDto;
+import com.ruoyi.inspect.mapper.SpotCheckQuarterMapper;
+import com.ruoyi.inspect.mapper.SpotCheckYearMapper;
+import com.ruoyi.inspect.pojo.SpotCheckQuarter;
+import com.ruoyi.inspect.pojo.SpotCheckQuarterItem;
+import com.ruoyi.inspect.pojo.SpotCheckYear;
+import com.ruoyi.inspect.pojo.SpotCheckYearItem;
+import com.ruoyi.inspect.service.FinishProductSpotCheckService;
+import com.ruoyi.inspect.service.SpotCheckQuarterItemService;
+import com.ruoyi.inspect.service.SpotCheckYearItemService;
+import com.ruoyi.system.mapper.UserMapper;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 鎴愬搧鎶芥牱
+ *
+ * @Author zhuo
+ * @Date 2024/9/29
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class FinishProductSpotCheckServiceImpl implements FinishProductSpotCheckService {
+
+ @Resource
+ private IfsApiUtils ifsApiUtils;
+ @Resource
+ private SpotCheckQuarterMapper spotCheckQuarterMapper;
+ @Resource
+ private SpotCheckQuarterItemService spotCheckQuarterItemService;
+ @Resource
+ private SpotCheckYearMapper spotCheckYearMapper;
+ @Resource
+ private SpotCheckYearItemService spotCheckYearItemService;
+ @Value("${wordUrl}")
+ private String wordUrl;
+ @Value("${file.path}")
+ private String imgUrl;
+ @Resource
+ private UserMapper userMapper;
+
+
+ public Result getIfsStockReport(IfsStockQueryDTO ifsStockQueryDTO) {
+ JSONObject jresult = new JSONObject();
+ jresult.put("total", 0);
+ jresult.put("count", 0);
+ jresult.put("data", new JSONArray());
+ JSONObject jsonObject = new JSONObject();
+ generateIfsStockQueryParams(jsonObject, ifsStockQueryDTO, ifsStockQueryDTO.getPage(), ifsStockQueryDTO.getLimit());
+ Result result = ifsApiUtils.getIfsStock(jsonObject.toJSONString());
+ if (result.getCode() == 200) {
+ JSONObject data = (JSONObject) JSON.toJSON(result.getData());
+ JSONArray array = new JSONArray();
+ for (int i = 0; i < data.getJSONArray("LIST_INFO").size(); i++) {
+ JSONObject listInfo = data.getJSONArray("LIST_INFO").getJSONObject(i);
+ array.add(listInfo);
+ }
+ //鑾峰彇鎬绘暟閲�
+ int count = data.getIntValue("TOTAL_RECORD");
+ //鑾峰彇椤垫暟
+ int total = (int) Math.ceil((double) count / (double) ifsStockQueryDTO.getLimit());
+ jresult.put("total", total);
+ jresult.put("count", count);
+ jresult.put("data", array);
+ }
+ return Result.success(jresult);
+ }
+
+ public void generateIfsStockQueryParams(JSONObject result, IfsStockQueryDTO ifsStockQueryDTO, Long pageNo, Long pageSize) {
+ result.put("PAGE", pageNo);
+ result.put("LIMIT", pageSize);
+ result.put("WAREHOUSE", "鎴愬搧浠撳簱");
+ result.put("QUANTITY_FLAG", ">0");
+ //琛ㄩ噷闈㈢殑OTC琛屽彿
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getCotcOrderNo())) {
+ result.put("C_OTC_ORDER_NO", ifsStockQueryDTO.getCotcOrderNo());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getCotcLineNo())) {
+ result.put("C_OTC_LINE_NO", ifsStockQueryDTO.getCotcLineNo());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getPartNo())) {
+ result.put("PART_NO", ifsStockQueryDTO.getPartNo());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getPartDescription())) {
+ result.put("PART_DESC", "%" + ifsStockQueryDTO.getPartDescription() + "%");
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getLocNo())) {
+ result.put("LOCATION_NO", ifsStockQueryDTO.getLocNo());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getLocDesc())) {
+ result.put("LOCATION_DESC", ifsStockQueryDTO.getLocDesc());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getLotBatchNo())) {
+ result.put("LOT_BATCH_NO", ifsStockQueryDTO.getLotBatchNo());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getWdrNo())) {
+ result.put("WDR_NO", ifsStockQueryDTO.getWdrNo());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getWarehouse())) {
+ result.put("WAREHOUSE", ifsStockQueryDTO.getWarehouse());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getLocationGroup())) {
+ result.put("LOCATION_GROUP", ifsStockQueryDTO.getLocationGroup());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getLocationGroupDesc())) {
+ result.put("LOCATION_GROUP_DESC", ifsStockQueryDTO.getLocationGroupDesc());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getReelNumber())) {
+ result.put("ATTR1", ifsStockQueryDTO.getReelNumber());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getStartMeter())) {
+ result.put("ATTR2", ifsStockQueryDTO.getStartMeter());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getEndMeter())) {
+ result.put("ATTR3", ifsStockQueryDTO.getEndMeter());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getOuterColor())) {
+ result.put("ATTR4", ifsStockQueryDTO.getOuterColor());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getInsulationColor())) {
+ result.put("ATTR5", ifsStockQueryDTO.getInsulationColor());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getOtcOrderNo())) {
+ result.put("ATTR6", ifsStockQueryDTO.getOtcOrderNo());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getMpsNo())) {
+ result.put("ATTR7", ifsStockQueryDTO.getMpsNo());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getLetteringInfo())) {
+ result.put("ATTR8", ifsStockQueryDTO.getLetteringInfo());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getSStockQuantity())) {
+ result.put("ATTR9", ifsStockQueryDTO.getSStockQuantity());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getSAvailableStockQuantity())) {
+ result.put("ATTR10", ifsStockQueryDTO.getSAvailableStockQuantity());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getSunit())) {
+ result.put("ATTR11", ifsStockQueryDTO.getSunit());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getStockSource())) {
+ result.put("ATTR12", ifsStockQueryDTO.getStockSource());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getInspInstorageTime())) {
+ result.put("ATTR13", ifsStockQueryDTO.getInspInstorageTime());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getTestRemark())) {
+ result.put("ATTR14", ifsStockQueryDTO.getTestRemark());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getGrossWeight())) {
+ result.put("ATTR15", ifsStockQueryDTO.getGrossWeight());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getNetWeight())) {
+ result.put("ATTR16", ifsStockQueryDTO.getNetWeight());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getPackingManner())) {
+ result.put("ATTR17", ifsStockQueryDTO.getPackingManner());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getCylinderNumber())) {
+ result.put("ATTR18", ifsStockQueryDTO.getCylinderNumber());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getRemark())) {
+ result.put("ATTR19", ifsStockQueryDTO.getRemark());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getLengthRequirement())) {
+ result.put("ATTR20", ifsStockQueryDTO.getLengthRequirement());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getCustomerName())) {
+ result.put("ATTR21", ifsStockQueryDTO.getCustomerName());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getSystemNo())) {
+ result.put("ATTR22", ifsStockQueryDTO.getSystemNo());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getInSource())) {
+ result.put("ATTR23", ifsStockQueryDTO.getInSource());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getSplitQuality())) {
+ result.put("ATTR24", ifsStockQueryDTO.getSplitQuality());
+ }
+ if (StrUtil.isNotBlank(ifsStockQueryDTO.getReserveQuantity())) {
+ result.put("QTY_RESERVED", ifsStockQueryDTO.getReserveQuantity());
+ }
+ }
+
+ /************************************************* 瀛e害鎶芥牱 ***********************************************************/
+
+ /**
+ * 鏂板瀛e害鎶芥
+ * @param spotCheckQuarterDto
+ * @return
+ */
+ @Override
+ public boolean addQuarter(SpotCheckQuarterDto spotCheckQuarterDto) {
+ // 鏍规嵁缂栧彿鏌ヨ涔嬪墠鐨�
+ SpotCheckQuarter spotCheckQuarter = spotCheckQuarterMapper.selectOne(Wrappers.<SpotCheckQuarter>lambdaQuery()
+ .eq(SpotCheckQuarter::getQuarterNo, spotCheckQuarterDto.getQuarterNo())
+ .orderByDesc(SpotCheckQuarter::getCreateTime)
+ .last("limit 1"));
+ if (spotCheckQuarter == null) {
+ spotCheckQuarterMapper.insert(spotCheckQuarterDto);
+ // 娣诲姞璇︽儏
+ for (SpotCheckQuarterItem quarterItem : spotCheckQuarterDto.getQuarterItems()) {
+ quarterItem.setQuarterId(spotCheckQuarterDto.getQuarterId());
+ }
+ spotCheckQuarterItemService.saveBatch(spotCheckQuarterDto.getQuarterItems());
+ } else {
+ // 绱姞璇︽儏
+ for (SpotCheckQuarterItem quarterItem : spotCheckQuarterDto.getQuarterItems()) {
+ quarterItem.setQuarterId(spotCheckQuarter.getQuarterId());
+ }
+ spotCheckQuarterItemService.saveBatch(spotCheckQuarterDto.getQuarterItems());
+ }
+
+ return true;
+ }
+
+ /**
+ * 鏌ヨ瀛e害鎶芥牱璇︽儏
+ * @param quarterId
+ * @return
+ */
+ @Override
+ public SpotCheckQuarterDto getQuarter(Integer quarterId) {
+ SpotCheckQuarter spotCheckQuarter = spotCheckQuarterMapper.selectById(quarterId);
+
+ // 鏌ヨ璇︽儏
+ List<SpotCheckQuarterItem> list = spotCheckQuarterItemService.list(Wrappers.<SpotCheckQuarterItem>lambdaQuery()
+ .eq(SpotCheckQuarterItem::getQuarterId, spotCheckQuarter.getQuarterId()));
+ SpotCheckQuarterDto spotCheckQuarterDto = new SpotCheckQuarterDto();
+ BeanUtil.copyProperties(spotCheckQuarter, spotCheckQuarterDto);
+ spotCheckQuarterDto.setQuarterItems(list);
+
+ return spotCheckQuarterDto;
+ }
+
+ /**
+ * 瀛e害鎶芥牱鍒嗛〉鏌ヨ
+ * @param page
+ * @param spotCheckQuarter
+ * @return
+ */
+ @Override
+ public IPage<SpotCheckQuarterDto> getQuarterPage(Page page, SpotCheckQuarterDto spotCheckQuarter) {
+ return spotCheckQuarterMapper.getQuarterPage(page, QueryWrappers.queryWrappers(spotCheckQuarter));
+ }
+
+ /**
+ * 鍒犻櫎瀛e害鎶芥牱
+ * @param quarterId
+ * @return
+ */
+ @Override
+ public boolean deleteQuarter(Integer quarterId) {
+ spotCheckQuarterMapper.deleteById(quarterId);
+ spotCheckQuarterItemService.remove(Wrappers.<SpotCheckQuarterItem>lambdaQuery()
+ .eq(SpotCheckQuarterItem::getQuarterId, quarterId));
+ return true;
+ }
+
+ /**
+ * 鎴愬搧涓嬪崟鐣岄潰鏌ヨ瀛e害淇℃伅
+ * @return
+ */
+ @Override
+ public List<Map<String, Object>> getQuarterOnOrder() {
+ List<Map<String, Object>> quarterOnOrder = spotCheckQuarterMapper.getQuarterOnOrder();
+ for (Map<String, Object> stringMap : quarterOnOrder) {
+ List<SpotCheckQuarterItem> list = spotCheckQuarterItemService.list(Wrappers.<SpotCheckQuarterItem>lambdaQuery()
+ .eq(SpotCheckQuarterItem::getQuarterId, (Integer) stringMap.get("value")));
+ List<Map<String, Object>> itemMaps = list.stream().map(spotCheckQuarterItem -> {
+ Map<String, Object> map = new HashMap<>();
+ map.put("value", spotCheckQuarterItem.getQuarterItemId());
+ map.put("label", spotCheckQuarterItem.getProductModel() + " "
+ + spotCheckQuarterItem.getProductType() + " "
+ + spotCheckQuarterItem.getSpotCheckNumber());
+ return map;
+ }).collect(Collectors.toList());
+ stringMap.put("children", itemMaps);
+
+ }
+
+ return quarterOnOrder;
+ }
+
+ /**
+ * 淇敼瀛e害妫�楠�
+ * @param spotCheckQuarterDto
+ * @return
+ */
+ @Override
+ public boolean updateQuarterOnOrder(SpotCheckQuarterDto spotCheckQuarterDto) {
+ if (CollectionUtils.isNotEmpty(spotCheckQuarterDto.getQuarterItems())) {
+ // 娓呴櫎涔嬪墠璇︽儏
+ spotCheckQuarterItemService.remove(Wrappers.<SpotCheckQuarterItem>lambdaQuery()
+ .eq(SpotCheckQuarterItem::getQuarterId, spotCheckQuarterDto.getQuarterId()));
+ // 娣诲姞璇︽儏
+ for (SpotCheckQuarterItem quarterItem : spotCheckQuarterDto.getQuarterItems()) {
+ quarterItem.setQuarterId(spotCheckQuarterDto.getQuarterId());
+ }
+ spotCheckQuarterItemService.saveBatch(spotCheckQuarterDto.getQuarterItems());
+ }
+
+ spotCheckQuarterMapper.updateById(spotCheckQuarterDto);
+ return true;
+ }
+
+ /**
+ * 鐢熸垚鏈�缁堟姤鍛�
+ * @param quarterId
+ * @return
+ */
+ @Override
+ public boolean finalReportQuarter(Integer quarterId, HttpServletResponse response) {
+ // 娣诲姞鎶ュ憡淇℃伅
+ SpotCheckQuarter spotCheckQuarter = spotCheckQuarterMapper.selectById(quarterId);
+
+ // 鏌ヨ璇︽儏
+ List<SpotCheckQuarterItem> itemList = spotCheckQuarterItemService.list(Wrappers.<SpotCheckQuarterItem>lambdaQuery()
+ .eq(SpotCheckQuarterItem::getQuarterId, spotCheckQuarter.getQuarterId()));
+
+ for (SpotCheckQuarterItem spotCheckQuarterItem : itemList) {
+ // 鎷兼帴鍨嬪彿鍜屾暟閲�
+ spotCheckQuarterItem.setSpotCheckNumber((StringUtils.isBlank(spotCheckQuarterItem.getProductModel()) ? "" : spotCheckQuarterItem.getProductModel()) +
+ (StringUtils.isBlank(spotCheckQuarterItem.getSpotCheckNumber()) ? "" : spotCheckQuarterItem.getSpotCheckNumber()));
+ }
+
+ //缂栧埗浜�
+ String writeUrl = null;
+ if (spotCheckQuarter.getWriteUser() != null) {
+ try {
+ writeUrl = userMapper.selectById(spotCheckQuarter.getWriteUser()).getSignatureUrl();
+ } catch (Exception e) {
+ throw new ErrorException("鎵句笉鍒扮紪鍒朵汉鐨勭鍚�");
+ }
+ if (StrUtil.isBlank(writeUrl)) {
+ throw new ErrorException("鎵句笉鍒扮紪鍒朵汉鐨勭鍚�");
+ }
+ }
+
+ // 鍒濆鍖栨墍鏈夌殑 countersignUrl 鍙橀噺
+ String[] countersignUrls = new String[7];
+
+ // 濡傛灉 spotCheckQuarter.getCountersignUser() 涓嶆槸绌烘垨绌虹櫧瀛楃涓�
+ if (StrUtil.isNotBlank(spotCheckQuarter.getCountersignUser())) {
+ String[] split = spotCheckQuarter.getCountersignUser().split(",");
+
+ // 閬嶅巻 split 鏁扮粍锛屽苟灏嗗厓绱犱緷娆¤祴鍊肩粰 countersignUrls 鏁扮粍
+ for (int i = 0; i < Math.min(split.length, countersignUrls.length); i++) {
+
+ String countersignUrl = null;
+ try {
+ countersignUrl = userMapper.selectById(Integer.parseInt(split[i])).getSignatureUrl();
+ } catch (Exception e) {
+ throw new ErrorException("鎵句笉鍒扮紪鍒朵汉鐨勭鍚�");
+ }
+ if (StrUtil.isBlank(countersignUrl)) {
+ throw new ErrorException("鎵句笉鍒扮紪鍒朵汉鐨勭鍚�");
+ }
+
+ countersignUrls[i] = countersignUrl;
+ }
+ }
+
+ // 灏� countersignUrls 鏁扮粍涓殑鍊间緷娆¤祴鍊肩粰 countersignUrl1 鍒� countersignUrl7
+ String countersignUrl1 = countersignUrls[0];
+ String countersignUrl2 = countersignUrls[1];
+ String countersignUrl3 = countersignUrls[2];
+ String countersignUrl4 = countersignUrls[3];
+ String countersignUrl5 = countersignUrls[4];
+ String countersignUrl6 = countersignUrls[5];
+ String countersignUrl7 = countersignUrls[6];
+
+ //瀹℃牳浜�
+ String examineUrl = null;
+ if (spotCheckQuarter.getExamineUser() != null) {
+ try {
+ examineUrl = userMapper.selectById(spotCheckQuarter.getExamineUser()).getSignatureUrl();
+ } catch (Exception e) {
+ throw new ErrorException("鎵句笉鍒板鏍镐汉鐨勭鍚�");
+ }
+ if (StrUtil.isBlank(examineUrl)) {
+ throw new ErrorException("鎵句笉鍒板鏍镐汉鐨勭鍚�");
+ }
+ }
+
+ //鎵瑰噯浜�
+ String ratifyUrl = null;
+ if (spotCheckQuarter.getRatifyUser() != null) {
+ try {
+ ratifyUrl = userMapper.selectById(spotCheckQuarter.getRatifyUser()).getSignatureUrl();
+ } catch (Exception e) {
+ throw new ErrorException("鎵句笉鍒版壒鍑嗕汉鐨勭鍚�");
+ }
+ if (StrUtil.isBlank(ratifyUrl)) {
+ throw new ErrorException("鎵句笉鍒版壒鍑嗕汉鐨勭鍚�");
+ }
+ }
+
+ String finalWriteUrl = writeUrl;
+ String finalExamineUrl = examineUrl;
+ String finalRatifyUrl = ratifyUrl;
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/spot_check_quarter.docx");
+ ConfigureBuilder builder = Configure.builder();
+ builder.useSpringEL(true);
+
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
+ new HashMap<String, Object>() {{
+ put("quarter", spotCheckQuarter);
+ put("quarterItems", itemList);
+ put("writeUrl", StrUtil.isBlank(finalWriteUrl) ? null :
+ Pictures.ofLocal(imgUrl + "/" + finalWriteUrl).create());
+ put("countersignUrl1", StrUtil.isBlank(countersignUrl1) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl1).create());
+ put("countersignUrl2", StrUtil.isBlank(countersignUrl2) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl2).create());
+ put("countersignUrl3", StrUtil.isBlank(countersignUrl3) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl3).create());
+ put("countersignUrl4", StrUtil.isBlank(countersignUrl4) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl4).create());
+ put("countersignUrl5", StrUtil.isBlank(countersignUrl5) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl5).create());
+ put("countersignUrl6", StrUtil.isBlank(countersignUrl6) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl6).create());
+ put("countersignUrl7", StrUtil.isBlank(countersignUrl7) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl7).create());
+ put("examineUrl", StrUtil.isBlank(finalExamineUrl) ? null :
+ Pictures.ofLocal(imgUrl + "/" + finalExamineUrl).create());
+ put("ratifyUrl", StrUtil.isBlank(finalRatifyUrl) ? null :
+ Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create());
+ put("createDateUrl", Pictures.ofStream(DateImageUtil.createDateImage(spotCheckQuarter.getCreateTime())).create());
+ }});
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ spotCheckQuarter.getQuarterNo() + "鎶芥牱璁″垝", "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new RuntimeException("瀵煎嚭澶辫触");
+ }
+ return true;
+ }
+
+
+ /******************************************************* 骞村害鎶芥牱 *************************************************************/
+
+ @Override
+ public boolean addSpotCheckYear(SpotCheckYearDto spotCheckYearDto) {
+ spotCheckYearMapper.insert(spotCheckYearDto);
+ // 璇︽儏
+ for (SpotCheckYearItem yearItem : spotCheckYearDto.getYearItems()) {
+ yearItem.setYearId(spotCheckYearDto.getYearId());
+ }
+ spotCheckYearItemService.saveBatch(spotCheckYearDto.getYearItems());
+ return true;
+ }
+
+ @Override
+ public SpotCheckYearDto getSpotCheckYear(Integer yearId) {
+ SpotCheckYear spotCheckYear = spotCheckYearMapper.selectById(yearId);
+
+ // 鏌ヨ璇︽儏
+ List<SpotCheckYearItem> list = spotCheckYearItemService.list(Wrappers.<SpotCheckYearItem>lambdaQuery()
+ .eq(SpotCheckYearItem::getYearId, spotCheckYear.getYearId()));
+ SpotCheckYearDto spotCheckYearDto = new SpotCheckYearDto();
+ BeanUtil.copyProperties(spotCheckYear, spotCheckYearDto);
+ spotCheckYearDto.setYearItems(list);
+
+ return spotCheckYearDto;
+ }
+
+ @Override
+ public IPage<SpotCheckYearDto> getSpotCheckYearPage(Page page, SpotCheckYearDto spotCheckYear) {
+ return spotCheckYearMapper.getSpotCheckYearPage(page, QueryWrappers.queryWrappers(spotCheckYear));
+ }
+
+ @Override
+ public boolean deleteSpotCheckYear(Integer yearId) {
+ spotCheckYearMapper.deleteById(yearId);
+ spotCheckYearItemService.remove(Wrappers.<SpotCheckYearItem>lambdaQuery()
+ .eq(SpotCheckYearItem::getYearId, yearId));
+ return true;
+ }
+
+ /**
+ * 淇敼骞村害妫�楠�
+ * @param spotCheckYearDto
+ * @return
+ */
+ @Override
+ public boolean updateSpotCheckYear(SpotCheckYearDto spotCheckYearDto) {
+ spotCheckYearMapper.updateById(spotCheckYearDto);
+
+ // 鍒犻櫎璇︽儏
+ spotCheckYearItemService.remove(Wrappers.<SpotCheckYearItem>lambdaQuery()
+ .eq(SpotCheckYearItem::getYearId, spotCheckYearDto.getYearId()));
+
+ // 閲嶆柊鏂板
+ for (SpotCheckYearItem yearItem : spotCheckYearDto.getYearItems()) {
+ yearItem.setYearId(spotCheckYearDto.getYearId());
+ }
+ spotCheckYearItemService.saveBatch(spotCheckYearDto.getYearItems());
+ return false;
+ }
+
+ @Override
+ public boolean finalReportSpotCheckYear(Integer yearId, HttpServletResponse response) {
+ SpotCheckYear spotCheckYear = spotCheckYearMapper.selectById(yearId);
+
+ // 鏌ヨ璇︽儏
+ List<SpotCheckYearItem> itemList = spotCheckYearItemService.list(Wrappers.<SpotCheckYearItem>lambdaQuery()
+ .eq(SpotCheckYearItem::getYearId, spotCheckYear.getYearId()));
+
+ //缂栧埗浜�
+ String writeUrl = null;
+ if (spotCheckYear.getWriteUser() != null) {
+ try {
+ writeUrl = userMapper.selectById(spotCheckYear.getWriteUser()).getSignatureUrl();
+ } catch (Exception e) {
+ throw new ErrorException("鎵句笉鍒扮紪鍒朵汉鐨勭鍚�");
+ }
+ if (StrUtil.isBlank(writeUrl)) {
+ throw new ErrorException("鎵句笉鍒扮紪鍒朵汉鐨勭鍚�");
+ }
+ }
+
+ // 鍒濆鍖栨墍鏈夌殑 countersignUrl 鍙橀噺
+ String[] countersignUrls = new String[7];
+
+ // 濡傛灉涓嶆槸绌烘垨绌虹櫧瀛楃涓�
+ if (StrUtil.isNotBlank(spotCheckYear.getCountersignUser())) {
+ String[] split = spotCheckYear.getCountersignUser().split(",");
+
+ // 閬嶅巻 split 鏁扮粍锛屽苟灏嗗厓绱犱緷娆¤祴鍊肩粰 countersignUrls 鏁扮粍
+ for (int i = 0; i < Math.min(split.length, countersignUrls.length); i++) {
+
+ String countersignUrl = null;
+ try {
+ countersignUrl = userMapper.selectById(Integer.parseInt(split[i])).getSignatureUrl();
+ } catch (Exception e) {
+ throw new ErrorException("鎵句笉鍒扮紪鍒朵汉鐨勭鍚�");
+ }
+ if (StrUtil.isBlank(countersignUrl)) {
+ throw new ErrorException("鎵句笉鍒扮紪鍒朵汉鐨勭鍚�");
+ }
+
+ countersignUrls[i] = countersignUrl;
+ }
+ }
+
+ // 灏� countersignUrls 鏁扮粍涓殑鍊间緷娆¤祴鍊肩粰 countersignUrl1 鍒� countersignUrl7
+ String countersignUrl1 = countersignUrls[0];
+ String countersignUrl2 = countersignUrls[1];
+ String countersignUrl3 = countersignUrls[2];
+ String countersignUrl4 = countersignUrls[3];
+ String countersignUrl5 = countersignUrls[4];
+ String countersignUrl6 = countersignUrls[5];
+ String countersignUrl7 = countersignUrls[6];
+
+ //瀹℃牳浜�
+ String examineUrl = null;
+ if (spotCheckYear.getExamineUser() != null) {
+ try {
+ examineUrl = userMapper.selectById(spotCheckYear.getExamineUser()).getSignatureUrl();
+ } catch (Exception e) {
+ throw new ErrorException("鎵句笉鍒板鏍镐汉鐨勭鍚�");
+ }
+ if (StrUtil.isBlank(examineUrl)) {
+ throw new ErrorException("鎵句笉鍒板鏍镐汉鐨勭鍚�");
+ }
+ }
+
+ //鎵瑰噯浜�
+ String ratifyUrl = null;
+ if (spotCheckYear.getRatifyUser() != null) {
+ try {
+ ratifyUrl = userMapper.selectById(spotCheckYear.getRatifyUser()).getSignatureUrl();
+ } catch (Exception e) {
+ throw new ErrorException("鎵句笉鍒版壒鍑嗕汉鐨勭鍚�");
+ }
+ if (StrUtil.isBlank(ratifyUrl)) {
+ throw new ErrorException("鎵句笉鍒版壒鍑嗕汉鐨勭鍚�");
+ }
+ }
+
+ String finalWriteUrl = writeUrl;
+ String finalExamineUrl = examineUrl;
+ String finalRatifyUrl = ratifyUrl;
+
+ // 鑾峰彇璺緞
+ InputStream inputStream = this.getClass().getResourceAsStream("/static/spot_check_year.docx");
+ ConfigureBuilder builder = Configure.builder();
+ builder.useSpringEL(true);
+ XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
+ new HashMap<String, Object>() {{
+ put("year", spotCheckYear);
+ put("yearItems", itemList);
+ put("writeUrl", StrUtil.isBlank(finalWriteUrl) ? null :
+ Pictures.ofLocal(imgUrl + "/" + finalWriteUrl).create());
+ put("countersignUrl1", StrUtil.isBlank(countersignUrl1) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl1).create());
+ put("countersignUrl2", StrUtil.isBlank(countersignUrl2) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl2).create());
+ put("countersignUrl3", StrUtil.isBlank(countersignUrl3) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl3).create());
+ put("countersignUrl4", StrUtil.isBlank(countersignUrl4) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl4).create());
+ put("countersignUrl5", StrUtil.isBlank(countersignUrl5) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl5).create());
+ put("countersignUrl6", StrUtil.isBlank(countersignUrl6) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl6).create());
+ put("countersignUrl7", StrUtil.isBlank(countersignUrl7) ? null :
+ Pictures.ofLocal(imgUrl + "/" + countersignUrl7).create());
+ put("examineUrl", StrUtil.isBlank(finalExamineUrl) ? null :
+ Pictures.ofLocal(imgUrl + "/" + finalExamineUrl).create());
+ put("ratifyUrl", StrUtil.isBlank(finalRatifyUrl) ? null :
+ Pictures.ofLocal(imgUrl + "/" + finalRatifyUrl).create());
+ put("createDateUrl", Pictures.ofStream(DateImageUtil.createDateImage(spotCheckYear.getCreateTime())).create());
+ }});
+ try {
+ response.setContentType("application/msword");
+ String fileName = URLEncoder.encode(
+ spotCheckYear.getYearHead(), "UTF-8");
+ response.setHeader("Content-disposition",
+ "attachment;filename=" + fileName + ".docx");
+ OutputStream os = response.getOutputStream();
+ template.write(os);
+ os.flush();
+ os.close();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return true;
+ }
+
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerFileServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerFileServiceImpl.java
new file mode 100644
index 0000000..28236fa
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerFileServiceImpl.java
@@ -0,0 +1,111 @@
+package com.ruoyi.inspect.service.impl;
+
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.lang.UUID;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.mapper.InsUnqualifiedHandlerFileMapper;
+import com.ruoyi.inspect.pojo.InsUnqualifiedHandlerFile;
+import com.ruoyi.inspect.service.InsUnqualifiedHandlerFileService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+
+/**
+* @author 27233
+* @description 閽堝琛ㄣ�恑ns_unqualified_handler_file(涓嶅悎鏍煎鐞嗛檮浠惰褰曡〃)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+* @createDate 2024-07-31 13:38:38
+*/
+@Service
+@Slf4j
+public class InsUnqualifiedHandlerFileServiceImpl extends ServiceImpl<InsUnqualifiedHandlerFileMapper, InsUnqualifiedHandlerFile>
+ implements InsUnqualifiedHandlerFileService {
+
+ @Value("${wordUrl}")
+ private String wordUrl;
+
+ @Value("${file.path}")
+ private String imgUrl;
+
+ @Override
+ public InsUnqualifiedHandlerFile uploadFile(Long handlerId, MultipartFile file) {
+ String urlString;
+ String pathName;
+ String path;
+ String prefix;
+ String filename = file.getOriginalFilename();
+ String contentType = file.getContentType();
+ InsUnqualifiedHandlerFile unqualifiedHandlerFile = new InsUnqualifiedHandlerFile();
+// unqualifiedHandlerFile.setUnqualifiedId(handlerId);
+ unqualifiedHandlerFile.setFileName(filename);
+ if (contentType != null && contentType.startsWith("image/")) {
+ // 鏄浘鐗�
+ path = imgUrl;
+ prefix = "/image/";
+ unqualifiedHandlerFile.setType(1);
+ } else {
+ // 鏄枃浠�
+ path = wordUrl;
+ prefix = "/word/";
+ unqualifiedHandlerFile.setType(2);
+ }
+ try {
+ File realpath = new File(path);
+ if (!realpath.exists()) {
+ realpath.mkdirs();
+ }
+ pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
+ urlString = realpath + "/" + pathName;
+ file.transferTo(new File(urlString));
+ unqualifiedHandlerFile.setFileUrl(pathName);
+ baseMapper.insert(unqualifiedHandlerFile);
+ return unqualifiedHandlerFile;
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("闄勪欢涓婁紶閿欒");
+ throw new ErrorException(e.getMessage());
+ }
+ }
+
+ @Override
+ public void downloadOAFile(Long handlerFileId, HttpServletResponse response) {
+ response.reset();
+ String fileName;
+ try {
+ //鏌ヨ涓婁紶闄勪欢璁板綍
+ InsUnqualifiedHandlerFile file = baseMapper.selectById(handlerFileId);
+ if (file != null){
+ fileName = file.getFileName();
+ fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
+ response.setContentType("application/vnd.ms-excel");
+ response.setHeader("Cache-Control", "no-cache");
+ response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+ response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
+ //鑾峰彇鏂囦欢澶硅矾寰�
+ String path = file.getType()==1?imgUrl:wordUrl;
+ //鏂囦欢瀹屾暣璺緞
+ String fullPath = path + file.getFileUrl();
+ //鍒ゆ柇鏂囦欢鏄惁瀛樺湪
+ File fullFile = new File(fullPath);
+ if(fullFile.exists()){
+ IoUtil.copy(Files.newInputStream(fullFile.toPath()),response.getOutputStream());
+ }
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
new file mode 100644
index 0000000..d4c2a25
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnqualifiedHandlerServiceImpl.java
@@ -0,0 +1,280 @@
+package com.ruoyi.inspect.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.oa.OAProcess;
+import com.ruoyi.common.oa.OAProperty;
+import com.ruoyi.common.oa.OAResult;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.inspect.dto.PushOADto;
+import com.ruoyi.inspect.dto.UnqualifiedHandlerDto;
+import com.ruoyi.inspect.mapper.InsOrderMapper;
+import com.ruoyi.inspect.mapper.InsUnqualifiedHandlerMapper;
+import com.ruoyi.inspect.pojo.CommonOa;
+import com.ruoyi.inspect.pojo.InsOrder;
+import com.ruoyi.inspect.pojo.InsUnqualifiedHandler;
+import com.ruoyi.inspect.pojo.InsUnqualifiedHandlerFile;
+import com.ruoyi.inspect.service.CommonOaService;
+import com.ruoyi.inspect.service.InsUnqualifiedHandlerFileService;
+import com.ruoyi.inspect.service.InsUnqualifiedHandlerService;
+import com.ruoyi.inspect.vo.UnqualifiedHandlerVO;
+import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.system.service.UserService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 27233
+ * @description 閽堝琛ㄣ�恑ns_unqualified_handler(涓嶅悎鏍煎鐞嗚〃)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ * @createDate 2024-07-31 13:38:14
+ */
+@Service
+@Slf4j
+public class InsUnqualifiedHandlerServiceImpl extends ServiceImpl<InsUnqualifiedHandlerMapper, InsUnqualifiedHandler>
+ implements InsUnqualifiedHandlerService {
+
+ @Resource
+ private CommonOaService commonOaService;
+ @Resource
+ private OAProperty oaProperty;
+ @Resource
+ private InsUnqualifiedHandlerFileService insUnqualifiedHandlerFileService;
+ @Resource
+ private InsOrderMapper insOrderMapper;
+
+
+ @Override
+ public IPage<UnqualifiedHandlerVO> pageList(Page page, UnqualifiedHandlerDto unqualifiedHandlerDto) {
+ return baseMapper.selectPageList(page, QueryWrappers.queryWrappers(unqualifiedHandlerDto));
+ }
+
+ @Override
+ public Result pushOA(PushOADto pushOADto) {
+ //鑾峰彇涓嶅悎鏍煎鐞嗚褰�
+ UnqualifiedHandlerVO vo = baseMapper.findById(pushOADto.getHandlerId());
+
+ if (vo.getRequestId() != null) {
+ throw new ErrorException("璇ヤ笉鍚堟牸澶勭悊宸叉彁浜よ繃OA");
+ }
+
+ //鎻愪氦oa鐩稿叧瀛楁璧嬪��
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ Map<String, String> mainFields = new HashMap<>();
+ mainFields.put("bh", vo.getNo());//缂栧彿
+ mainFields.put("gysmc", vo.getSupplierName());//渚涘簲鍟嗗悕绉�
+ mainFields.put("wlmc", vo.getMaterialName());//鐗╂枡鍚嶇О
+ mainFields.put("scpc", vo.getProductionBatch());//鐢熶骇鎵规
+ mainFields.put("dhsl", vo.getCargoQuantity());//鍒拌揣鏁伴噺
+ mainFields.put("ggxh", vo.getSpecsModels());//瑙勬牸鍨嬪彿
+ mainFields.put("bjrq", vo.getInspectTime().format(formatter));//鎶ユ鏃ユ湡
+ mainFields.put("fkr", SecurityUtils.getUsername());//鍙嶉浜�
+ mainFields.put("fkrq", vo.getFeedbackTime().format(formatter));//鍙嶉鏃ユ湡
+ mainFields.put("fl", vo.getClassification());//鍒嗙被
+ mainFields.put("bhggs", vo.getOffGradeAscription());//涓嶅悎鏍煎綊灞�
+ mainFields.put("bhgqkms", vo.getUnqualifiedDesc());//涓嶅悎鏍兼儏鍐垫弿杩�
+
+ //鏌ヨ闄勪欢
+ List<InsUnqualifiedHandlerFile> handlerFiles = insUnqualifiedHandlerFileService.list(Wrappers.<InsUnqualifiedHandlerFile>lambdaQuery()
+ .eq(InsUnqualifiedHandlerFile::getUnqualifiedId, vo.getHandlerId()));
+ if (CollectionUtils.isNotEmpty(handlerFiles)) {
+ StringBuilder fileUrl = new StringBuilder();
+ for (int i = 0; i < handlerFiles.size(); i++) {
+ String path = handlerFiles.get(i).getType().equals(1) ? "/lims/img/" : "/lims/word/";
+ if (i == handlerFiles.size() - 1) {
+ fileUrl.append("<a href='" + oaProperty.getProdIp()).append(path + handlerFiles.get(i).getFileUrl()
+ + "'target='_blank'>" + handlerFiles.get(i).getFileName() + "</a>");
+ } else {
+ fileUrl.append("<a href='" + oaProperty.getProdIp()).append(path + handlerFiles.get(i).getFileUrl()
+ + "'target='_blank'>" + handlerFiles.get(i).getFileName() + "</a>").append("<br/>");
+ }
+ }
+ mainFields.put("xlimsfj", fileUrl.toString());
+ }
+ //娴佺▼鏍囬
+ String requestName = vo.getHeadline();
+ //鍙戣捣OA
+ boolean oa = false;
+ try {
+ log.info("鍙戣捣涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼");
+ String unqualifiedProcessId = oaProperty.getUnqualifiedProcessId();
+ OAResult oaResult = OAProcess.start(mainFields, requestName, unqualifiedProcessId,SecurityUtils.getUsername());
+ log.info("涓嶅悎鏍煎鐞哋A瀹℃牳娴佺▼缁撴潫锛岃繑鍥炵粨鏋�->{}" + oaResult);
+ oa = oaResult.success();
+ if (oa) {
+ String addWorkflowResult = oaResult.getAddWorkflowResult();
+ baseMapper.update(null, new LambdaUpdateWrapper<InsUnqualifiedHandler>()
+ .set(InsUnqualifiedHandler::getRequestId, addWorkflowResult)
+ .set(InsUnqualifiedHandler::getOaState, 2)
+ .eq(InsUnqualifiedHandler::getId, pushOADto.getHandlerId()));
+ } else {
+ return Result.fail("鎻愪氦oa澶辫触: " + oaResult.getErrorMsg());
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ return Result.success();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void unqualifiedHandlerOACallback(Long oaWorkId, String checkResult, JSONArray objects) {
+ // 娌℃湁杩欎釜灏辩粨鏉�
+ Long count1 = baseMapper.selectCount(Wrappers.<InsUnqualifiedHandler>lambdaQuery()
+ .eq(InsUnqualifiedHandler::getRequestId, Integer.valueOf(String.valueOf(oaWorkId))));
+ if (count1 == 0) {
+ return;
+ }
+
+ //oa鐘舵�侊細3閫氳繃 4椹冲洖
+ Integer oaState = "1".equals(checkResult) ? 3 : 4;
+ baseMapper.update(null, new LambdaUpdateWrapper<InsUnqualifiedHandler>()
+ .set(InsUnqualifiedHandler::getOaState, oaState)
+ .ge(InsUnqualifiedHandler::getRequestId, Integer.valueOf(String.valueOf(oaWorkId))));
+ //淇濆瓨oa瀹℃壒娴佺▼璁板綍
+ List<CommonOa> commonOaList = new ArrayList<>();
+ objects.forEach(l -> {
+ JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(l));
+ CommonOa oa = new CommonOa();
+ oa.setApprover(jsonObject.getString("operatorName"));
+ oa.setWorkflowId(oaWorkId);
+ oa.setOperation(jsonObject.getString("operateType"));
+ oa.setApprovalDate(jsonObject.getString("operateDate"));
+ oa.setApprovalOpinion(jsonObject.getString("remark"));
+ oa.setNodeName(jsonObject.getString("nodeName"));
+ oa.setApprovalTime(jsonObject.getString("operateTime"));
+
+ //鏌ヨ鍒ゆ柇涔嬪墠鏄惁娣诲姞杩�
+ long count = commonOaService.count(Wrappers.<CommonOa>lambdaQuery()
+ .eq(CommonOa::getApprover, oa.getApprover())
+ .eq(CommonOa::getWorkflowId, oa.getWorkflowId())
+ .eq(CommonOa::getOperation, oa.getOperation())
+ .eq(CommonOa::getApprovalDate, oa.getApprovalDate())
+ .eq(CommonOa::getApprovalOpinion, oa.getApprovalOpinion())
+ .eq(CommonOa::getNodeName, oa.getNodeName())
+ .eq(CommonOa::getApprovalTime, oa.getApprovalTime())
+ );
+ // 娌℃湁閲嶅娣诲姞
+ if (count == 0) {
+ commonOaList.add(oa);
+ }
+ });
+ commonOaService.saveBatch(commonOaList);
+
+ }
+
+ /**
+ * 鏌ョ湅oa娴佺▼
+ * @param id
+ * @return
+ */
+ @Override
+ public List<CommonOa> getOaFlow(Integer id) {
+ return baseMapper.getOaFlow(id);
+ }
+
+ /**
+ * 鏂板涓嶅悎鏍煎鐞�
+ * @param unqualifiedHandlerDto
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean addUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto) {
+ if (unqualifiedHandlerDto.getInventoryQuantityId() == null) {
+ throw new ErrorException("缂哄皯鍘熸潗鏂檌d");
+ }
+ long count = this.count(Wrappers.<InsUnqualifiedHandler>lambdaQuery()
+ .eq(InsUnqualifiedHandler::getInsOrderId, unqualifiedHandlerDto.getInsOrderId()));
+ if (count > 0) {
+ throw new ErrorException("褰撳墠妫�楠屽崟宸叉彁浜よ繃涓嶅悎鏍�");
+ }
+ // 鍘熸潗鏂欑紪鍙峰垏鍓�
+ InsOrder order = insOrderMapper.selectOne(Wrappers.<InsOrder>lambdaQuery()
+ .eq(InsOrder::getId, unqualifiedHandlerDto.getInsOrderId())
+ .select(InsOrder::getEntrustCode));
+ unqualifiedHandlerDto.setNo(order.getEntrustCode());
+
+ this.save(unqualifiedHandlerDto);
+ if (CollectionUtils.isNotEmpty(unqualifiedHandlerDto.getUnqualifiedHandlerFiles())) {
+ for (InsUnqualifiedHandlerFile unqualifiedHandlerFile : unqualifiedHandlerDto.getUnqualifiedHandlerFiles()) {
+ unqualifiedHandlerFile.setUnqualifiedId(unqualifiedHandlerDto.getId());
+ }
+ insUnqualifiedHandlerFileService.updateBatchById(unqualifiedHandlerDto.getUnqualifiedHandlerFiles());
+ }
+
+ return true;
+ }
+
+ /**
+ * 缂栬緫涓嶅悎鏍煎鐞�
+ * @param unqualifiedHandlerDto
+ * @return
+ */
+ @Override
+ public boolean updateUnqualifiedHandler(UnqualifiedHandlerDto unqualifiedHandlerDto) {
+ // 鍒犻櫎闄勪欢, 閲嶆柊娣诲姞
+ insUnqualifiedHandlerFileService.remove(Wrappers.<InsUnqualifiedHandlerFile>lambdaQuery()
+ .eq(InsUnqualifiedHandlerFile::getUnqualifiedId, unqualifiedHandlerDto.getId()));
+ if (CollectionUtils.isNotEmpty(unqualifiedHandlerDto.getUnqualifiedHandlerFiles())) {
+ for (InsUnqualifiedHandlerFile unqualifiedHandlerFile : unqualifiedHandlerDto.getUnqualifiedHandlerFiles()) {
+ unqualifiedHandlerFile.setUnqualifiedId(unqualifiedHandlerDto.getId());
+ }
+ insUnqualifiedHandlerFileService.updateBatchById(unqualifiedHandlerDto.getUnqualifiedHandlerFiles());
+ }
+
+ return this.updateById(unqualifiedHandlerDto);
+ }
+
+ /**
+ * 鏌ョ湅涓嶅悎鏍煎鐞嗙晫闈�
+ * @param id
+ * @return
+ */
+ @Override
+ public UnqualifiedHandlerDto getUnqualifiedHandler(Integer id) {
+ InsUnqualifiedHandler insUnqualifiedHandler = this.getById(id);
+ UnqualifiedHandlerDto unqualifiedHandlerDto = new UnqualifiedHandlerDto();
+ BeanUtil.copyProperties(insUnqualifiedHandler, unqualifiedHandlerDto);
+ // 鏌ョ湅闄勪欢
+ List<InsUnqualifiedHandlerFile> list = insUnqualifiedHandlerFileService.list(Wrappers.<InsUnqualifiedHandlerFile>lambdaQuery()
+ .eq(InsUnqualifiedHandlerFile::getUnqualifiedId, unqualifiedHandlerDto.getId()));
+ unqualifiedHandlerDto.setUnqualifiedHandlerFiles(list);
+ return unqualifiedHandlerDto;
+ }
+
+ /**
+ * 鍒犻櫎涓嶅悎鏍�
+ * @param id
+ * @return
+ */
+ @Override
+ public boolean deleteUnqualifiedHandler(Integer id) {
+ insUnqualifiedHandlerFileService.remove(Wrappers.<InsUnqualifiedHandlerFile>lambdaQuery()
+ .eq(InsUnqualifiedHandlerFile::getUnqualifiedId, id));
+ this.removeById(id);
+ return true;
+ }
+}
+
+
+
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckQuarterItemServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckQuarterItemServiceImpl.java
new file mode 100644
index 0000000..5b7ad6c
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckQuarterItemServiceImpl.java
@@ -0,0 +1,19 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.inspect.mapper.SpotCheckQuarterItemMapper;
+import com.ruoyi.inspect.pojo.SpotCheckQuarterItem;
+import com.ruoyi.inspect.service.SpotCheckQuarterItemService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 瀛e害鎶芥牱璁″垝璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-10-09
+ */
+@Service
+public class SpotCheckQuarterItemServiceImpl extends ServiceImpl<SpotCheckQuarterItemMapper, SpotCheckQuarterItem> implements SpotCheckQuarterItemService {
+
+}
+
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckYearItemServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckYearItemServiceImpl.java
new file mode 100644
index 0000000..205f980
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/SpotCheckYearItemServiceImpl.java
@@ -0,0 +1,19 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.inspect.mapper.SpotCheckYearItemMapper;
+import com.ruoyi.inspect.pojo.SpotCheckYearItem;
+import com.ruoyi.inspect.service.SpotCheckYearItemService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 骞村害鎶芥牱璁″垝璇︽儏琛�
+ *
+ * @author zhuo
+ * @since 2024-10-10
+ */
+@Service
+public class SpotCheckYearItemServiceImpl extends ServiceImpl<SpotCheckYearItemMapper, SpotCheckYearItem> implements SpotCheckYearItemService {
+
+}
+
diff --git a/inspect-server/src/main/resources/mapper/SpotCheckQuarterMapper.xml b/inspect-server/src/main/resources/mapper/SpotCheckQuarterMapper.xml
new file mode 100644
index 0000000..6238257
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/SpotCheckQuarterMapper.xml
@@ -0,0 +1,25 @@
+<?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.ruoyi.inspect.mapper.SpotCheckQuarterMapper">
+ <select id="getQuarterPage" resultType="com.ruoyi.inspect.dto.SpotCheckQuarterDto">
+ select * from ( select scq.quarter_id,
+ scq.quarter_no,
+ scq.quarter_status,
+ scq.file_url,
+ scq.remark,
+ u.name create_user_name,
+ scq.create_time
+ from spot_check_quarter scq
+ left join user u on u.id = scq.create_user) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+ <select id="getQuarterOnOrder" resultType="java.util.Map">
+ select quarter_id value,
+ quarter_no label
+ from spot_check_quarter
+ </select>
+
+
+</mapper>
diff --git a/inspect-server/src/main/resources/mapper/SpotCheckYearMapper.xml b/inspect-server/src/main/resources/mapper/SpotCheckYearMapper.xml
new file mode 100644
index 0000000..9584e96
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/SpotCheckYearMapper.xml
@@ -0,0 +1,19 @@
+<?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.ruoyi.inspect.mapper.SpotCheckYearMapper">
+
+ <select id="getSpotCheckYearPage" resultType="com.ruoyi.inspect.dto.SpotCheckYearDto">
+ select * from (select scy.year_id,
+ scy.year_head,
+ scy.table_remark,
+ scy.file_url,
+ scy.remark,
+ u.name create_user_name,
+ scy.create_time
+ from spot_check_year scy
+ left join user u on u.id = scy.create_user) a
+ <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
+ ${ew.customSqlSegment}
+ </if>
+ </select>
+</mapper>
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java b/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java
index 1880e93..48a07e0 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProperty.java
@@ -17,10 +17,10 @@
*/
private String oaHost;
-// /**
-// * 鏂囦欢鏌ョ湅ip鍦板潃
-// */
-// private String prodIp;
+ /**
+ * 鏂囦欢鏌ョ湅ip鍦板潃
+ */
+ private String prodIp;
/**
* 瑁呭鐢电紗锛氫笉鍚堟牸瀹℃壒oa鐨刬d
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
index 511842b..b0e9080 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -23,7 +23,7 @@
/**
* spring security閰嶇疆
- *
+ *
* @author ruoyi
*/
@EnableMethodSecurity(prePostEnabled = true, securedEnabled = true)
@@ -35,7 +35,7 @@
*/
@Autowired
private UserDetailsService userDetailsService;
-
+
/**
* 璁よ瘉澶辫触澶勭悊绫�
*/
@@ -53,7 +53,7 @@
*/
@Autowired
private JwtAuthenticationTokenFilter authenticationTokenFilter;
-
+
/**
* 璺ㄥ煙杩囨护鍣�
*/
@@ -111,7 +111,7 @@
.authorizeHttpRequests((requests) -> {
permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
// 瀵逛簬鐧诲綍login 娉ㄥ唽register 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶
- requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
+ requests.antMatchers("/login", "/register", "/captchaImage", "/unqualifiedHandler/callback").permitAll()
// 闈欐�佽祫婧愶紝鍙尶鍚嶈闂�
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
--
Gitblit v1.9.3