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