chenrui
2025-02-28 99755eea33cf009c36507df468c244f3be5b34c9
Merge branch 'dev' of http://114.132.189.42:9002/r/lims-ruoyi-after into dev_cr
已修改42个文件
已重命名1个文件
已删除11个文件
已添加9个文件
1587 ■■■■■ 文件已修改
basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceCalibrationPlanController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceDocumentsController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceDocumentsMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/mapper/DocumentMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceDocuments.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceDocumentsService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DocumentService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/QrShowService.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceDocumentsServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/DocumentServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/impl/QrShowServiceImpl.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIssueRecycleServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordVerifyServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/UnPassPageDto.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnPassMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderRates.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnPass.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnPassService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java 299 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnPassServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderMapper.xml 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsProductMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsUnPassMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java
@@ -61,7 +61,7 @@
    @ApiOperation(value = "获取项目检验参数列表")
    @GetMapping("/selectItemParameterList")
    public Result selectItemParameterList(Page page,StructureItemParameter itemParameter) throws Exception {
    public Result selectItemParameterList(Page page,StructureItemParameter itemParameter) {
        return Result.success(capacityScopeService.selectItemParameterList(page, itemParameter));
    }
@@ -85,7 +85,7 @@
    @ApiOperation(value = "获取检验对象")
    @GetMapping("/selectTestObjectList")
    public Result selectTestObjectList(Page page,PageTestObjectDto pageTestObjectDto) throws Exception {
    public Result selectTestObjectList(Page page,PageTestObjectDto pageTestObjectDto) {
        return Result.success(capacityScopeService.selectTestObjectList(page, pageTestObjectDto));
    }
@@ -121,7 +121,7 @@
    @ApiOperation(value = "维护检验对象的产品")
    @GetMapping("/selectProductListByObjectId")
    public Result selectProductListByObjectId(Page page,ProductDTO1 productDTO) throws Exception {
    public Result selectProductListByObjectId(Page page,ProductDTO1 productDTO) {
        return Result.success(productService.selectProductListByObjectId(page, productDTO));
    }
basic-server/src/main/java/com/ruoyi/basic/controller/StandardMethodController.java
@@ -22,7 +22,7 @@
    @ApiOperation(value = "获取标准方法列表")
    @GetMapping("/selectStandardMethodList")
    public Result selectStandardMethodList(Page page,StandardMethod standardMethod) throws Exception {
    public Result selectStandardMethodList(Page page,StandardMethod standardMethod)  {
        return Result.success(standardMethodService.selectStandardMethodList(page, standardMethod));
    }
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceCalibrationPlanController.java
@@ -81,8 +81,8 @@
     * @return
     */
    @ApiOperation(value = "设备校准计划删除")
    @DeleteMapping("/delQualitySupervise")
    public Result delQualitySupervise(Integer planId){
    @DeleteMapping("/delDeviceCalibrationPlan")
    public Result delDeviceCalibrationPlan(Integer planId){
        return Result.success(deviceCalibrationPlanService.removeById(planId));
    }
@@ -122,7 +122,7 @@
     * @return
     */
    @ApiOperation(value = "设备校准计划详情列表")
    @PostMapping("/pageDeviceCalibrationPlanDetail")
    @GetMapping("/pageDeviceCalibrationPlanDetail")
    public Result<IPage<DeviceCalibrationPlanDetail>> pageDeviceCalibrationPlanDetail(Page page, DeviceCalibrationPlanDetail deviceCalibrationPlanDetails) {
        return Result.success(deviceCalibrationPlanService.pageDeviceCalibrationPlanDetail(page, deviceCalibrationPlanDetails));
    }
@@ -155,7 +155,7 @@
     * @return
     */
    @ApiOperation(value = "删除设备校准计划详情")
    @GetMapping("/delDeviceCalibrationPlanDetail")
    @DeleteMapping("/delDeviceCalibrationPlanDetail")
    public Result delDeviceCalibrationPlanDetail(Integer planDetailsId){
        return Result.success(deviceCalibrationPlanDetailService.removeById(planDetailsId));
    }
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceDocumentsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package com.ruoyi.device.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.pojo.DeviceDocuments;
import com.ruoyi.device.service.DeviceDocumentsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * è®¾å¤‡æ¡£æ¡ˆæ–‡æ¡£
 *
 * @author zhuo
 * @since 2025-02-28
 */
@RestController
@Api(tags = "设备档案文档")
@RequestMapping("/deviceDocuments")
public class DeviceDocumentsController {
    @Resource
    private DeviceDocumentsService deviceDocumentsService;
    /**
     * æ–°å¢žè®¾å¤‡æ¡£æ¡ˆ
     * @param document
     * @return
     */
    @ApiOperation(value = "新增设备档案")
    @PostMapping("/addDocument")
    public Result addDocument(@RequestBody DeviceDocuments document) {
        if (document.getDeviceId() == null) {
            throw new RuntimeException("设备id为空");
        }
        deviceDocumentsService.save(document);
        return Result.success();
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ¡£æ¡ˆä¿¡æ¯
     * @param id
     * @return
     */
    @ApiOperation(value = "查询设备档案信息")
    @GetMapping("/getDocumentById")
    public Result getDocumentById(Integer id) {
        return Result.success(deviceDocumentsService.getById(id));
    }
    /**
     * ä¿®æ”¹è®¾å¤‡æ¡£æ¡ˆ
     * @param document
     * @return
     */
    @ApiOperation(value = "修改设备档案")
    @PostMapping("/updateDocument")
    public Result updateDocument(@RequestBody DeviceDocuments document) {
        return Result.success(deviceDocumentsService.updateById(document));
    }
    /**
     * åˆ é™¤è®¾å¤‡æ¡£æ¡ˆ
     * @param id
     * @return
     */
    @ApiOperation(value = "删除设备档案")
    @DeleteMapping("/deleteDocumentById")
    public Result deleteDocumentById(Integer id) {
        return Result.success(deviceDocumentsService.removeById(id));
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ¡£æ¡ˆåˆ—表
     * @param deviceId
     * @return
     */
    @ApiOperation(value = "查询设备档案列表")
    @GetMapping("/getAllDocuments")
    public Result getAllDocuments(Integer deviceId) {
        LambdaQueryWrapper<DeviceDocuments> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(DeviceDocuments::getDeviceId, deviceId);
        return Result.success(deviceDocumentsService.list(lambdaQueryWrapper));
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExaminePlanController.java
@@ -90,8 +90,8 @@
     * @return
     */
    @ApiOperation(value = "设备核查计划删除")
    @DeleteMapping("/delQualitySupervise")
    public Result delQualitySupervise(Integer planId){
    @DeleteMapping("/delDeviceExaminePlan")
    public Result delDeviceExaminePlan(Integer planId){
        return Result.success(deviceExaminePlanService.removeById(planId));
    }
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceExternalApplyController.java
@@ -55,7 +55,7 @@
     * @return
     */
    @ApiOperation(value = "删除利用外部设备申请")
    @GetMapping("/delDeviceExternalApply")
    @DeleteMapping("/delDeviceExternalApply")
    public Result delDeviceExternalApply(Integer externalApplyId){
        return Result.success(deviceExternalApplyService.removeById(externalApplyId));
    }
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java
@@ -9,6 +9,7 @@
import com.ruoyi.device.excel.DeviceMaintenanceExport;
import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.service.DeviceMaintenanceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
@@ -26,7 +27,8 @@
 * todo: å­™æ²³æ»¨
 */
@RestController
@RequestMapping("/device-maintain")
@Api(tags = "设备维护保养")
@RequestMapping("/deviceMaintain")
public class DeviceMaintenanceController {
    @Autowired
@@ -34,9 +36,15 @@
    @Autowired
    private NumberGenerator<DeviceMaintenance> numberGenerator;
    //增
    @PostMapping()
    public Result create(@RequestBody DeviceMaintenance deviceMaintenance){
    /**
     * æ–°å¢žè®¾å¤‡ç»´æŠ¤ä¿å…»
     * @param deviceMaintenance
     * @return
     */
    @ApiOperation(value = "新增设备维护保养")
    @PostMapping("/addDeviceMaintenance")
    public Result addDeviceMaintenance(@RequestBody DeviceMaintenance deviceMaintenance){
        String year = new SimpleDateFormat("yy", Locale.CHINESE).format(new Date());
        String month = new SimpleDateFormat("MM", Locale.CHINESE).format(new Date());
        String processNumber = numberGenerator.generateNumberWithPrefix(3, "DG-TC-23FM " + month + "-" + year + month, DeviceMaintenance::getDeviceNumber);
@@ -44,32 +52,29 @@
        return Result.success(deviceMaintenanceService.save(deviceMaintenance));
    }
    //通过deviceId查询维护数据
    /**
     * é€šè¿‡è®¾å¤‡id查询设备维护保养信息
     * @param deviceId
     * @param page
     * @param deviceNumber
     * @return
     */
    @ApiOperation(value = "通过设备id查询设备维护保养信息")
    @GetMapping("/getDeviceMaintenancePage")
    public Result getDeviceMaintenancePage(@RequestParam("deviceId") Integer deviceId, Page page, String deviceNumber){
        return Result.success(deviceMaintenanceService.getDeviceMaintenancePage(page, deviceId, deviceNumber));
    }
    //删
    @DeleteMapping("/delete/{id}")
    public void deleteDeviceFault(@PathVariable Integer id) {
    /**
     * åˆ é™¤è®¾å¤‡ç»´æŠ¤ä¿å…»
     * @param id
     */
    @ApiOperation(value = "新增设备维护保养")
    @DeleteMapping("/deleteDeviceMaintenance")
    public void deleteDeviceMaintenance(@PathVariable Integer id) {
        deviceMaintenanceService.removeById(id);
    }
    @GetMapping("/deviceMaintenanceExport")
    public Result deviceMaintenanceExport(@RequestParam("deviceId") Integer deviceId, HttpServletResponse response) throws IOException {
        List<DeviceMaintenanceExport> list = deviceMaintenanceService.deviceMaintenanceExport(deviceId);
        response.setHeader("requestType","excel");
        response.setHeader("Access-Control-Expose-Headers", "requestType");
        // è®¾ç½®å•元格样式
        // ä¿å­˜åˆ°ç¬¬ä¸€ä¸ªsheet中
        EasyExcel.write(response.getOutputStream())
                .head(DeviceMaintenanceExport.class)
                .registerWriteHandler(getHorizontalCellStyleStrategy((short) 12))
                .sheet()
                .doWrite(list);
        return Result.success();
    }
    @ApiOperation(value = "设备维护记录导出")
    @GetMapping("/exportMaintenanceRecord")
@@ -77,22 +82,4 @@
        deviceMaintenanceService.exportMaintenanceRecord(deviceId, response);
    }
    /**
     * å•元格样式策略
     */
    public static HorizontalCellStyleStrategy getHorizontalCellStyleStrategy(Short fontHeightInPoints) {
        // å†…容的策略
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        // ã€æ°´å¹³å±…中需要使用以下两行】
        // è®¾ç½®æ–‡å­—左右居中
        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        // è®¾ç½®æ–‡å­—上下居中
        contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        // è®¾ç½® è‡ªåŠ¨æ¢è¡Œ
        contentWriteCellStyle.setWrapped(true);
        // æ ·å¼ç­–ç•¥
        return new HorizontalCellStyleStrategy(null, contentWriteCellStyle);
    }
}
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenancePlanController.java
@@ -36,7 +36,7 @@
     */
    @ApiOperation("分页查询设备保养计划")
    @GetMapping("selectDeviceMaintenancePlanByPage")
    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto itemParameter){
    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(Page page, DeviceMaintenancePlanDto itemParameter){
        return deviceMaintenancePlanService.selectDeviceMaintenancePlanByPage(page, itemParameter);
    }
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceTraceabilityManagementController.java
@@ -1,6 +1,7 @@
package com.ruoyi.device.controller;
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.device.dto.DeviceTraceabilityManagementDto;
import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
@@ -33,7 +34,7 @@
     */
    @ApiOperation("分页查询量值溯源计划")
    @GetMapping("selectDeviceTraceabilityManagementByPage")
    public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto itemParameter){
    public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(Page page, DeviceTraceabilityManagementDto itemParameter){
        return deviceTraceabilityManagementService.selectDeviceTraceabilityManagementByPage(page, itemParameter);
    }
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceDocumentsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.ruoyi.device.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.device.pojo.DeviceDocuments;
import org.apache.ibatis.annotations.Mapper;
/**
 * è®¾å¤‡æ¡£æ¡ˆ
 */
@Mapper
public interface DeviceDocumentsMapper extends BaseMapper<DeviceDocuments> {
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenanceMapper.java
@@ -13,8 +13,5 @@
 */
@Mapper
public interface DeviceMaintenanceMapper extends BaseMapper<DeviceMaintenance> {
    List<DeviceMaintenance> getDeviceMaintenanceParam();
    List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMaintenancePlanMapper.java
@@ -3,6 +3,7 @@
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.device.dto.DeviceMaintenancePlanDto;
import com.ruoyi.device.pojo.DeviceMaintenancePlan;
import org.apache.ibatis.annotations.Param;
@@ -23,7 +24,7 @@
     * @param queryWrappers æŸ¥è¯¢æ¡ä»¶
     * @return
     */
    IPage<DeviceMaintenancePlan> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceMaintenancePlanDto> queryWrappers);
    IPage<DeviceMaintenancePlan> selectDeviceParameterPage(Page page, @Param("ew") QueryWrapper<DeviceMaintenancePlanDto> queryWrappers);
    /**
     * æ ¹æ®ä¿å…»è®¡åˆ’id查询设备保养计划
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceRecordMapper.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.DeviceRecordDto;
import com.ruoyi.device.pojo.DeviceRecord;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -18,7 +19,7 @@
 */
public interface DeviceRecordMapper extends BaseMapper<DeviceRecord> {
    IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber, Integer userId);
    IPage<DeviceRecordDto> deviceRecordPage(@Param("deviceId") Integer deviceId, @Param("page") Page page, @Param("sampleCode") String sampleCode, @Param("managementNumber") String managementNumber, @Param("userId") Integer userId);
    /**
@@ -33,5 +34,5 @@
     * @param exportDate
     * @return
     */
    List<DeviceRecord> selectExportList(Integer deviceId, String exportDate);
    List<DeviceRecord> selectExportList(@Param("deviceId") Integer deviceId, @Param("exportDate") String exportDate);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceStateMapper.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.device.dto.DeviceStateDto;
import com.ruoyi.device.pojo.DeviceState;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
@@ -16,5 +17,5 @@
 */
public interface DeviceStateMapper extends BaseMapper<DeviceState> {
    IPage<DeviceStateDto> getDeviceStatePage(Integer deviceId, Page page, String processNumber);
    IPage<DeviceStateDto> getDeviceStatePage(@Param("deviceId") Integer deviceId, @Param("page") Page page, @Param("processNumber") String processNumber);
}
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceTraceabilityManagementMapper.java
@@ -23,7 +23,7 @@
     * @param queryWrappers
     * @return
     */
    IPage<DeviceTraceabilityManagement> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceTraceabilityManagementDto> queryWrappers);
    IPage<DeviceTraceabilityManagement> selectDeviceParameterPage(IPage page, @Param("ew") QueryWrapper<DeviceTraceabilityManagementDto> ew);
    /**
     * æ ¹æ®id查询设备量值溯源计划
cnas-device/src/main/java/com/ruoyi/device/mapper/DocumentMapper.java
ÎļþÒÑɾ³ý
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceDocuments.java
ÎļþÃû´Ó cnas-device/src/main/java/com/ruoyi/device/pojo/Document.java ÐÞ¸Ä
@@ -14,7 +14,7 @@
 */
@Data
@TableName(value = "device_documents")
public class Document implements Serializable {
public class DeviceDocuments implements Serializable {
    private static final long serialVersionUID = 1L;
@@ -57,7 +57,6 @@
    /**
     * æä¾›æ—¥æœŸ
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime provideDate;
    /**
@@ -68,18 +67,19 @@
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime createdAt;
    private LocalDateTime createTime;
    /**
     * æ›´æ–°æ—¶é—´
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;
    private LocalDateTime updateTime;
    private int deviceId;
    @ApiModelProperty("设备id")
    private Integer deviceId;
    @ApiModelProperty("资产编号")
    private String number;
cnas-device/src/main/java/com/ruoyi/device/service/DeviceDocumentsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.ruoyi.device.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.device.pojo.DeviceDocuments;
/**
 * è®¾å¤‡æ¡£æ¡ˆ
 */
public interface DeviceDocumentsService extends IService<DeviceDocuments> {
}
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenancePlanService.java
@@ -1,6 +1,7 @@
package com.ruoyi.device.service;
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.device.dto.DeviceMaintenancePlanDto;
@@ -24,7 +25,7 @@
     * @param deviceMaintenancePlanDto è®¾å¤‡ä¿å…»è®¡åˆ’
     * @return
     */
    Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(Page page, DeviceMaintenancePlanDto deviceMaintenancePlanDto);
    /**
     * æ–°å¢žè®¾å¤‡ä¿å…»è®¡åˆ’
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java
@@ -12,7 +12,6 @@
public interface DeviceMaintenanceService extends IService<DeviceMaintenance> {
    IPage<DeviceMaintenance> getDeviceMaintenancePage(Page page, Integer deviceId, String deviceNumber);
    List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId);
    /**
     * å¯¼å‡ºWord设备维护记录
cnas-device/src/main/java/com/ruoyi/device/service/DeviceTraceabilityManagementService.java
@@ -1,10 +1,12 @@
package com.ruoyi.device.service;
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.device.dto.DeviceTraceabilityManagementDto;
import com.ruoyi.device.pojo.DeviceTraceabilityManagement;
import org.apache.ibatis.annotations.Param;
import javax.servlet.http.HttpServletResponse;
@@ -24,7 +26,7 @@
     * @param itemParameter é‡å€¼æº¯æºè®¡åˆ’
     * @return
     */
    Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto itemParameter);
    Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(@Param("page") Page page, @Param("itemParameter") DeviceTraceabilityManagementDto itemParameter);
    /**
     * æ–°å¢žé‡å€¼æº¯æºè®¡åˆ’
cnas-device/src/main/java/com/ruoyi/device/service/DocumentService.java
ÎļþÒÑɾ³ý
cnas-device/src/main/java/com/ruoyi/device/service/QrShowService.java
ÎļþÒÑɾ³ý
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceDocumentsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.device.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.device.mapper.DeviceDocumentsMapper;
import com.ruoyi.device.pojo.DeviceDocuments;
import com.ruoyi.device.service.DeviceDocumentsService;
import org.springframework.stereotype.Service;
/**
 * è®¾å¤‡æ¡£æ¡ˆ
 */
@Service
public class DeviceDocumentsServiceImpl extends ServiceImpl<DeviceDocumentsMapper, DeviceDocuments> implements DeviceDocumentsService {
}
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceImpl.java
@@ -33,11 +33,6 @@
    }
    @Override
    public List<DeviceMaintenanceExport> deviceMaintenanceExport(Integer deviceId) {
        return baseMapper.deviceMaintenanceExport(deviceId);
    }
    @Override
    public void exportMaintenanceRecord(Integer deviceId, HttpServletResponse response) {
        // æŸ¥è¯¢cnas设备维修记录
        List<DeviceMaintenance> deviceMaintenanceList = baseMapper.selectList(Wrappers.<DeviceMaintenance>lambdaQuery()
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenancePlanServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
@@ -68,7 +69,7 @@
     * @return
     */
    @Override
    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(IPage page, DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
    public Result<IPage<DeviceMaintenancePlan>> selectDeviceMaintenancePlanByPage(Page page, DeviceMaintenancePlanDto deviceMaintenancePlanDto) {
        IPage<DeviceMaintenancePlan> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceMaintenancePlanDto));
        return Result.success(iPage);
    }
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -25,7 +25,7 @@
import com.ruoyi.device.pojo.*;
import com.ruoyi.device.service.DataConfigService;
import com.ruoyi.device.service.DeviceService;
import com.ruoyi.device.service.DocumentService;
import com.ruoyi.device.service.DeviceDocumentsService;
import com.ruoyi.device.utils.DataAcquisition;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.mapper.InsSampleMapper;
@@ -35,7 +35,6 @@
import lombok.AllArgsConstructor;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -65,11 +64,9 @@
    private DataConfigService dataConfigService;
    private QrShowServiceImpl qrShowService;
    private InsSampleMapper insSampleMapper;
    private DocumentService documentService;
    private DeviceDocumentsService documentService;
    private DeviceMetricRecordMapper deviceMetricRecordMapper;
@@ -171,7 +168,7 @@
        }
        deviceDto.setAuthorizedPersonName(name);
        //查询设备校准信息
        DeviceMetricRecord calibrate = qrShowService.getDeviceMetricRecord(id, "calibrate");
        DeviceMetricRecord calibrate = getDeviceMetricRecord(id, "calibrate");
        deviceDto.setCalibrateNo(calibrate.getCertificateSerialNumber());
        // åˆ°äº†åœç”¨æ—¥æœŸï¼Œè‡ªåŠ¨å°†çŠ¶æ€æ”¹ä¸ºåœç”¨
@@ -185,6 +182,21 @@
            }
        }
        return deviceDto;
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ ¡å‡†/核查记录
     * @param deviceId
     * @param type
     * @return
     */
    public DeviceMetricRecord getDeviceMetricRecord(int deviceId, String type){
        return Optional.ofNullable(
                deviceMetricRecordMapper.selectOne(Wrappers.<DeviceMetricRecord>lambdaQuery()
                        .eq(DeviceMetricRecord::getDeviceId, deviceId)
                        .eq(DeviceMetricRecord::getType, type)
                        .orderByDesc(DeviceMetricRecord::getCreateTime)
                        .last("limit 1"))).orElse(new DeviceMetricRecord());
    }
    @Override
@@ -309,7 +321,7 @@
        // è®¾å¤‡ä¿¡æ¯
        Device device = baseMapper.selectById(deviceId);
        // è®¾å¤‡æ¡£æ¡ˆ
        List<Document> documentList = documentService.list(Wrappers.<Document>lambdaQuery().eq(Document::getDeviceId, deviceId));
        List<DeviceDocuments> documentList = documentService.list(Wrappers.<DeviceDocuments>lambdaQuery().eq(DeviceDocuments::getDeviceId, deviceId));
        // è®¾å¤‡æ ¡å‡†è¡¨
        List<DeviceMetricRecord> deviceMetricRecordList = deviceMetricRecordMapper.selectList(Wrappers.<DeviceMetricRecord>lambdaQuery().eq(DeviceMetricRecord::getDeviceId, deviceId));
        // è®¾å¤‡ç»´ä¿®è¡¨
@@ -411,13 +423,13 @@
     * @param documentList              æ¡£æ¡ˆåˆ—表
     * @param documentExportWordDtoList è¿”回给word的数据列表
     */
    private static void extracted(List<Document> documentList, List<DocumentExportWordDto> documentExportWordDtoList) {
    private static void extracted(List<DeviceDocuments> documentList, List<DocumentExportWordDto> documentExportWordDtoList) {
        // ç»™æ¡£æ¡ˆåŠ åºå·   å¹¶ä¸”分为左右两个列表在word中显示
        for (int i = 0; i < documentList.size(); i++) {
            // åˆ›å»ºword表格中一行的数据对象
            DocumentExportWordDto documentExportWordDto = new DocumentExportWordDto();
            // èŽ·å–æ¡£æ¡ˆä¿¡æ¯
            Document document = documentList.get(i);
            DeviceDocuments document = documentList.get(i);
            // æ ¼å¼åŒ–日期
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
            // æ ¹æ®åºå· åˆ†åˆ«åŠ å…¥ä¸¤ä¸ªåˆ—è¡¨
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceTraceabilityManagementServiceImpl.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
@@ -70,7 +71,7 @@
     * @return
     */
    @Override
    public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(IPage page, DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
    public Result<IPage<DeviceTraceabilityManagement>> selectDeviceTraceabilityManagementByPage(Page page, DeviceTraceabilityManagementDto deviceTraceabilityManagementDto) {
        IPage<DeviceTraceabilityManagement> iPage = baseMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceTraceabilityManagementDto));
        return Result.success(iPage);
    }
cnas-device/src/main/java/com/ruoyi/device/service/impl/DocumentServiceImpl.java
ÎļþÒÑɾ³ý
cnas-device/src/main/java/com/ruoyi/device/service/impl/QrShowServiceImpl.java
ÎļþÒÑɾ³ý
cnas-device/src/main/resources/mapper/DeviceMaintenanceMapper.xml
@@ -3,15 +3,4 @@
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.device.mapper.DeviceMaintenanceMapper">
    <select id="getDeviceMaintenanceParam" resultType="com.ruoyi.device.pojo.DeviceMaintenance">
        select id,device_id,device_name, device_number,management_number,content,name
        ,date from device_maintenance
    </select>
    <select id="deviceMaintenanceExport" resultType="com.ruoyi.device.excel.DeviceMaintenanceExport">
        select id, device_id, device_name, device_number, management_number, content, date, if(maintenance_type = 1, '计划中维护', '使用前后维护'), next_date, name, comments
        from device_maintenance dm
        where dm.device_id = #{deviceId}
    </select>
</mapper>
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentListServiceImpl.java
@@ -95,33 +95,4 @@
        saveBatch(list);
    }
    public String wordToPdf(String wordPath, String pdfPath) {
        FileOutputStream os = null;
        try {
            InputStream is = new ClassPathResource("/lib/license.xml").getInputStream();
            License license = new License();
            license.setLicense(is);
            if (!license.getIsLicensed()) {
                System.out.println("License验证不通过...");
                return null;
            }
            //生成一个空的PDF文件
            File file = new File(pdfPath.replace(".pdf", ".pdf"));
            os = new FileOutputStream(file);
            //要转换的word文件
            com.aspose.words.Document doc = new com.aspose.words.Document(wordPath);
            doc.save(os, SaveFormat.PDF);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }
}
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCancelServiceImpl.java
@@ -430,7 +430,6 @@
                for (int i = 1; i < rows.size(); i++) { // ä»Žç¬¬äºŒè¡Œå¼€å§‹ï¼Œè·³è¿‡è¡¨å¤´
                    XWPFTableRow row = rows.get(i);
                    if (row.getTableCells().size() != 10) {
                        System.out.println("行 " + (i + 1) + " çš„列数不匹配,跳过该行");
                        continue;
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordCheckServiceImpl.java
@@ -421,7 +421,6 @@
                for (int i = 1; i < rows.size(); i++) { // ä»Žç¬¬äºŒè¡Œå¼€å§‹ï¼Œè·³è¿‡è¡¨å¤´
                    XWPFTableRow row = rows.get(i);
                    if (row.getTableCells().size() != 9) {
                        System.out.println("行 " + (i + 1) + " çš„列数不匹配,跳过该行");
                        continue;
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIntervalsServiceImpl.java
@@ -448,7 +448,6 @@
                for (int i = 1; i < rows.size(); i++) { // ä»Žç¬¬äºŒè¡Œå¼€å§‹ï¼Œè·³è¿‡è¡¨å¤´
                    XWPFTableRow row = rows.get(i);
                    if (row.getTableCells().size() != 7) {
                        System.out.println("行 " + (i + 1) + " çš„列数不匹配,跳过该行");
                        continue;
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordIssueRecycleServiceImpl.java
@@ -613,7 +613,6 @@
                for (int i = 2; i < rows.size(); i++) { // ä»Žç¬¬ä¸‰è¡Œå¼€å§‹ï¼Œè·³è¿‡è¡¨å¤´
                    XWPFTableRow row = rows.get(i);
                    if (row.getTableCells().size() != 12) {
                        System.out.println("行 " + (i + 1) + " çš„列数不匹配,跳过该行");
                        continue;
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageRecordVerifyServiceImpl.java
@@ -117,7 +117,6 @@
                for (int i = 1; i < rows.size(); i++) { // ä»Žç¬¬äºŒè¡Œå¼€å§‹ï¼Œè·³è¿‡è¡¨å¤´
                    XWPFTableRow row = rows.get(i);
                    if (row.getTableCells().size() != 8) {
                        System.out.println("行 " + (i + 1) + " çš„列数不匹配,跳过该行");
                        continue;
                    }
                    if (ObjectUtils.isNotEmpty(row.getCell(1).getText())) {
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeStandardSubstanceRecordServiceImpl.java
@@ -58,7 +58,6 @@
        }
        standardSubstance.setState(0);
        feStandardSubstanceMapper.updateById(standardSubstance);
        System.out.println(feStandardSubstanceRecord);
        baseMapper.update(feStandardSubstanceRecord, Wrappers.<FeStandardSubstanceRecord>lambdaUpdate()
                .eq(FeStandardSubstanceRecord::getSubstanceId, feStandardSubstanceRecord.getSubstanceId())
                .eq(FeStandardSubstanceRecord::getStatus, 0));
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java
@@ -134,25 +134,6 @@
        return Result.success(insOrderService.selectSampleAndProductByOrderId(page, sampleProductDto));
    }
    @ApiOperation(value = "费用统计")
    @GetMapping("/costStatistics")
    public Result<?> costStatistics(Page page, CostStatisticsDto costStatisticsDto){
        return Result.success(insOrderService.costStatistics(page, costStatisticsDto));
    }
    @ApiOperation(value = "费用统计获取总价")
    @GetMapping("/costStatistics2")
    public Result<?> costStatistics2(CostStatisticsDto costStatisticsDto){
        return Result.success(insOrderService.costStatistics2(costStatisticsDto));
    }
    @ApiOperation(value = "样品缺陷指数")
    @GetMapping("/selectSampleDefects")
    public Result selectSampleDefects(Integer size, Integer current, String inspectionItems, String orderNumber) {
        return Result.success(insOrderService.selectSampleDefects(new Page<>(current, size),inspectionItems, orderNumber));
    }
    @ApiOperation(value = "撤销")
    @PostMapping("/updateStatus")
@@ -193,13 +174,6 @@
        Integer state = (Integer) param.get("state");
        insProductService.checkUpdate(orderId,state);
        return Result.success();
    }
    @ApiOperation(value = "费用统计导出")
    @GetMapping("/export")
    public void export(CostStatisticsDto costStatisticsDto,HttpServletResponse response) throws ServletException, IOException {
       insOrderService.export(costStatisticsDto,response);
    }
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderRatesController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.ruoyi.inspect.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.inspect.dto.SampleOrderDto;
import com.ruoyi.inspect.pojo.InsOrderRates;
import com.ruoyi.inspect.service.InsOrderRatesService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * è®¢å•费用表
 *
 * @author zhuo
 * @since 2025-02-28
 */
@Api(tags = "订单费用信息")
@RestController
@RequestMapping("/insOrderRates")
public class InsOrderRatesController  {
    @Resource
    private InsOrderRatesService insOrderRatesService;
    /**
     * æŸ¥è¯¢è®¢å•列表
     * @param page
     * @param sampleOrderDto
     * @return
     */
    @ApiOperation(value = "查询订单列表")
    @GetMapping("/selectRatesPage")
    public Result selectInsOrderRates(Page page, SampleOrderDto sampleOrderDto) {
        return Result.success(insOrderRatesService.selectInsOrderRates(page, sampleOrderDto));
    }
    /**
     * æŸ¥è¯¢è®¢å•列表
     * @param insOrderId
     * @return
     */
    @ApiOperation(value = "查询订单费用详情")
    @GetMapping("/selectRatesDetail")
    public Result selectRatesDetail(Integer insOrderId) {
        return Result.success(insOrderRatesService.list(Wrappers.<InsOrderRates>lambdaQuery()
                .eq(InsOrderRates::getInsOrderId, insOrderId)));
    }
}
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsUnqualifiedHandlerController.java
@@ -66,7 +66,7 @@
    public String unqualifiedHandlerOACallback(String data){
        String msg = OAProcess.oaReturnMsg(0, "success");
        JSONObject json = JSONObject.parseObject(data);
        System.out.println("========>" + json);
        log.info("oa回调参数========>" + json);
        try {
            Long oaWorkId = json.getLong(REQUESTID);
            String checkResult = json.getString(CHECKRESULT);
@@ -77,7 +77,7 @@
            log.error("oa回调失败: " + e.getMessage());
            msg = OAProcess.oaReturnMsg(1, "oa回调失败: " + e.getMessage());
        }
        System.out.println("oa回调返回结果========>" + msg);
        log.info("oa回调返回结果========>" + msg);
        return msg;
    }
inspect-server/src/main/java/com/ruoyi/inspect/dto/UnPassPageDto.java
ÎļþÒÑɾ³ý
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderMapper.java
@@ -34,14 +34,8 @@
    IPage<SampleProductDto2> selectSampleAndProductByOrderId(@Param("page") IPage<SampleProductDto2> page, @Param("ew") QueryWrapper<SampleProductDto2> ew, @Param("id") Integer id);
    IPage<CostStatisticsDto> selectCostStatistics(@Param("page") IPage<CostStatisticsDto> page, @Param("ew") QueryWrapper<CostStatisticsDto> ew);
    List<CostStatisticsDto> selectCostStatistics2(@Param("ew") QueryWrapper<CostStatisticsDto> ew);
    List<Map<String, String>> selectDeviceList(@Param("managementNumbers") Set<String> managementNumbers);
    List<SampleDefectsFatherVo> selectSampleDefects(Page page, @Param("inspectionItems") String inspectionItems, @Param("orderNumber") String orderNumber);
    Long getCount(@Param("inspectionItems") String inspectionItems, @Param("orderNumber") String orderNumber);
    String getStandardMethodCode(@Param("id") Integer id);
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsOrderRatesMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.inspect.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.inspect.pojo.InsOrderRates;
/**
 * è®¢å•费用表
 *
 * @author zhuo
 * @since 2025-02-28
 */
public interface InsOrderRatesMapper extends BaseMapper<InsOrderRates> {
}
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsProductMapper.java
@@ -60,6 +60,13 @@
     * @return
     */
    int selectNoJudge(@Param("orderId") Integer orderId);
    /**
     * æ ¹æ®è®¢å•查询产品信息
     * @param orderId
     * @return
     */
    List<InsProduct> selectProductByOrderId(Integer orderId);
}
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InsUnPassMapper.java
ÎļþÒÑɾ³ý
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsOrderRates.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.ruoyi.inspect.pojo;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * è®¢å•费用表
 *
 * @author zhuo
 * @since 2025-02-28
 */
@Data
@TableName("ins_order_rates")
public class InsOrderRates {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("订单id")
    private Integer insOrderId;
    @ApiModelProperty("样品id")
    private Integer insSampleId;
    @ApiModelProperty("检验项id")
    private Integer insProductId;
    @ApiModelProperty("样品编号")
    private String sampleCode;
    @ApiModelProperty("样品编号")
    private String entrustCode;
    @ApiModelProperty("检验项分类")
    private String inspectionItemClass;
    @ApiModelProperty("检测项目")
    private String inspectionItem;
    @ApiModelProperty("检验项子类")
    private String inspectionItemSubclass;
    @ApiModelProperty("电缆标识")
    private String cableTag;
    @ApiModelProperty("标准价格")
    private String rates;
    @ApiModelProperty("分组")
    private String manHourGroup;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("创建人id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("修改人id")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
}
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnPass.java
ÎļþÒÑɾ³ý
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderRatesService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package com.ruoyi.inspect.service;
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.inspect.dto.SampleOrderDto;
import com.ruoyi.inspect.pojo.InsOrderRates;
/**
 * è®¢å•费用表
 *
 * @author zhuo
 * @since 2025-02-28
 */
public interface InsOrderRatesService extends IService<InsOrderRates> {
    /**
     *
     * @param page
     * @param sampleOrderDto
     * @return
     */
    IPage<SampleOrderDto> selectInsOrderRates(Page page, SampleOrderDto sampleOrderDto);
}
inspect-server/src/main/java/com/ruoyi/inspect/service/InsOrderService.java
@@ -39,16 +39,9 @@
    IPage<SampleProductDto2> selectSampleAndProductByOrderId(IPage<SampleProductDto2> page, SampleProductDto2 sampleProductDto);
    IPage<CostStatisticsDto> costStatistics(IPage<CostStatisticsDto> page, CostStatisticsDto costStatisticsDto);
    Map<String, Object> costStatistics2(CostStatisticsDto costStatisticsDto);
    Map<String, Object> selectSampleDefects(Page page, String inspectionItems, String orderNumber);
    int updateStatus(Integer id);
    void export(CostStatisticsDto costStatisticsDto,HttpServletResponse response)throws IOException, ServletException;
    // èŽ·å–ifs库存信息
    void getIfsOrder();
inspect-server/src/main/java/com/ruoyi/inspect/service/InsUnPassService.java
ÎļþÒÑɾ³ý
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderPlanServiceImpl.java
@@ -2,8 +2,6 @@
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
@@ -44,7 +42,6 @@
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.inspect.vo.InsOrderPlanTaskSwitchVo;
import com.ruoyi.inspect.vo.InsOrderPlanVO;
import com.ruoyi.performance.mapper.AuxiliaryOutputWorkingHoursMapper;
import com.ruoyi.performance.mapper.PerformanceShiftMapper;
import com.ruoyi.performance.mapper.ShiftTimeMapper;
import com.ruoyi.performance.pojo.AuxiliaryOutputWorkingHours;
@@ -57,7 +54,6 @@
import com.ruoyi.system.service.InformationNotificationService;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xwpf.usermodel.*;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -71,13 +67,10 @@
import java.math.RoundingMode;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
@@ -119,8 +112,6 @@
    @Resource
    private InsProductUserMapper insProductUserMapper;
    @Resource
    private InsUnPassService insUnPassService;
    @Resource
    private AuxiliaryOutputWorkingHoursService auxiliaryOutputWorkingHoursService;
    @Resource
    private AuxiliaryOutputWorkingHoursTemporaryService auxiliaryOutputWorkingHoursTemporaryService;
@@ -132,7 +123,6 @@
    private CustomMapper customMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Resource
    private InsOrderFileMapper insOrderFileMapper;
    @Resource
@@ -163,7 +153,8 @@
    private InsOrderDeviceRecordService insOrderDeviceRecordService;
    @Resource
    private ISysDictTypeService iSysDictTypeService;
    @Resource
    private InsOrderRatesService insOrderRatesService;
    @Override
    public IPage<InsOrderPlanVO> selectInsOrderPlanList(Page page, InsOrderPlanDTO insOrderPlanDTO) {
@@ -752,7 +743,7 @@
    @Transactional(rollbackFor = Exception.class)
    public int submitPlan(Integer orderId, String laboratory, Integer verifyUser, String entrustCode) {
        InsOrder order = insOrderMapper.selectById(orderId);
        // åˆ¤æ–­æ˜¯å¦æœ‰é‡å¤ç¼–号, æœ‰é‡å¤ç¼–号做提醒
        // 1. åˆ¤æ–­æ˜¯å¦æœ‰é‡å¤ç¼–号, æœ‰é‡å¤ç¼–号做提醒
        Long codeCount = insOrderMapper.selectCount(Wrappers.<InsOrder>lambdaQuery()
                .ne(InsOrder::getState, -1)
                .ne(InsOrder::getIfsInventoryId, order.getIfsInventoryId())
@@ -761,7 +752,7 @@
            throw new ErrorException("当前编号有重复, è¯·å…ˆåŽ»ä¿®æ”¹é‡å¤ç¼–å·");
        }
        // åˆ¤æ–­è¯¥è®¢å•是否是第一次生产
        // 2. åˆ¤æ–­è¯¥è®¢å•是否是第一次生产(后续报告生成只取第一次提交时间)
        if (!(order.getIsFirstSubmit() != null && order.getIsFirstSubmit().equals(1))) {
            insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
                    .eq(InsOrder::getId, orderId)
@@ -769,11 +760,12 @@
                    .set(InsOrder::getFirstSubmitDate, LocalDateTime.now()));
        }
        // 3. åˆ¤æ–­æ˜¯å¦æœ‰æœªæ£€é¡¹
        List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
        List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
        List<Integer> InsSampleIds = insSamples.stream().map(InsSample::getId).collect(Collectors.toList());
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .in(InsProduct::getInsSampleId, ids)
                .in(InsProduct::getInsSampleId, InsSampleIds)
                .eq(InsProduct::getSonLaboratory, laboratory)
                .eq(InsProduct::getState, 1)
                .and(wrapper -> wrapper
@@ -781,10 +773,8 @@
                        .or()
                        .eq(InsProduct::getInsResult, 2)
                )
                .isNull(InsProduct::getInsFiberId)
                .isNull(InsProduct::getInsFibersId)
                .ne(InsProduct::getIsBinding, 1));
        insProducts.addAll(insProductMapper.selectFiberInsProduct(ids, laboratory));
        insProducts.addAll(insProductMapper.selectFiberInsProduct(InsSampleIds, laboratory));
        if (insProducts.size() > 0) {
            String str = "";
            int count = 0;
@@ -797,21 +787,21 @@
                throw new ErrorException("<strong>存在待检验的项目:</strong><br/>" + str);
            }
        }
        // 4.修改检测结果
        insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate().eq(InsOrderState::getInsOrderId, orderId)
                .eq(InsOrderState::getLaboratory, laboratory)
                .set(InsOrderState::getInsTime, LocalDateTime.now())
                .set(InsOrderState::getInsState, 3)
                .set(InsOrderState::getVerifyUser, verifyUser));
        // å‘送消息
        // 5.发送消息通知给复核人
        // æŸ¥è¯¢å½“前人信息
        Integer userId = SecurityUtils.getUserId().intValue();
        String userName = insProductMapper.selectUserById(userId).get("name");
        // æŸ¥è¯¢å‘送人信息
        String sendUserAccount = insProductMapper.selectUserById(verifyUser).get("account");
        InformationNotification info = new InformationNotification();
        info.setCreateUser(userName);
        info.setMessageType("2");
@@ -823,15 +813,16 @@
        info.setJumpPath("b1-inspect-orderPlan-review");
        informationNotificationService.addInformationNotification(info);
        //复核人--检验单相关负责人
        // 6.复核人--新增检验单相关负责人
        InsSampleUser insSampleUser = new InsSampleUser();
        insSampleUser.setUserId(verifyUser);
        insSampleUser.setInsSampleId(orderId);
        insSampleUser.setState(1);
        insSampleUser.setSonLaboratory(laboratory);
        insSampleUserMapper.insert(insSampleUser);
        /*校验一下result表*/
        CompletableFuture.supplyAsync(() -> {
        // 7.校验一下result表(避免出现多个检验项结果)
        threadPoolTaskExecutor.execute(() -> {
            List<Integer> ips = insProducts.stream().map(InsProduct::getId).distinct().collect(Collectors.toList());
            for (Integer ip : ips) {
                List<InsProductResult> insProductResults = insProductResultMapper.selectList(Wrappers.<InsProductResult>lambdaQuery()
@@ -842,26 +833,116 @@
                    }
                }
            }
            return null;
        });
        // æäº¤ç”ŸæˆæŠ¥å‘Š
        // 8.提交生成报告
        this.generateReport(orderId);
        // æ·»åŠ ä¸´æ—¶pdf生成地址
        // 9.添加临时pdf生成地址
        InsReport report = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery()
                .eq(InsReport::getInsOrderId, orderId));
        String tempUrlPdf = this.wordToPdfTemp(report.getUrl().replace("/word", wordUrl));
        report.setTempUrlPdf("/word/" + tempUrlPdf);
        insReportMapper.updateById(report);
        // æŸ¥è¯¢è®¢å•
        // 10.原始记录模板复制(添加备份, é¿å…ä¿®æ”¹åŽŸå§‹æ¨¡æ¿å½±å“åˆ°å·²ç»å®Œæˆçš„å•å­)
        this.templateCopy(orderId, InsSampleIds);
        // 11.成品抽样添加合格状态
        // åˆ¤æ–­æ˜¯å¦æœ‰æŠ½æ ·ä¿¡æ¯
        if (order.getQuarterItemId() != null) {
            // åˆ¤æ–­æ˜¯å¦æœ‰ä¸åˆæ ¼
            this.addProductSpotCheck(insSamples, order);
        }
        // 12.添加工时
        // åˆ é™¤åŽŸæœ¬è®¢å•å·¥æ—¶
        auxiliaryOutputWorkingHoursService.remove(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
                .eq(AuxiliaryOutputWorkingHours::getOrderId, orderId));
        // æŸ¥è¯¢å·¥æ—¶æš‚å­˜
        List<AuxiliaryOutputWorkingHoursTemporary> hoursTemporaries = auxiliaryOutputWorkingHoursTemporaryService.list(Wrappers.<AuxiliaryOutputWorkingHoursTemporary>lambdaQuery()
                .eq(AuxiliaryOutputWorkingHoursTemporary::getOrderId, orderId));
        List<AuxiliaryOutputWorkingHours> outputWorkingHours = hoursTemporaries.stream().map(hoursTemporary -> {
            AuxiliaryOutputWorkingHours workingHours = new AuxiliaryOutputWorkingHours();
            BeanUtil.copyProperties(hoursTemporary, workingHours);
            workingHours.setId(null);
            return workingHours;
        }).collect(Collectors.toList());
        auxiliaryOutputWorkingHoursService.saveBatch(outputWorkingHours);
        // 13.添加订单费用统计信息
        List<InsProduct> productList = insProductMapper.selectProductByOrderId(orderId);
        // åˆ é™¤åŽŸæœ¬è´¹ç”¨ä¿¡æ¯
        insOrderRatesService.remove(Wrappers.<InsOrderRates>lambdaQuery()
                .eq(InsOrderRates::getInsOrderId, orderId));
        List<InsOrderRates> orderRatesList = productList.stream().map(insProduct -> {
            InsOrderRates insOrderRates = new InsOrderRates();
            insOrderRates.setInsOrderId(orderId);
            insOrderRates.setInsSampleId(insProduct.getInsSampleId());
            insOrderRates.setInsProductId(insProduct.getId());
            insOrderRates.setSampleCode(insProduct.getSampleCode());
            insOrderRates.setEntrustCode(order.getEntrustCode());
            insOrderRates.setInspectionItemClass(insProduct.getInspectionItemClass());
            insOrderRates.setInspectionItem(insProduct.getInspectionItem());
            insOrderRates.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());
            insOrderRates.setCableTag(insProduct.getCableTag());
            insOrderRates.setRates(insProduct.getRates());
            insOrderRates.setManHourGroup(insProduct.getManHourGroup());
            return insOrderRates;
        }).collect(Collectors.toList());
        insOrderRatesService.saveBatch(orderRatesList);
        // 14.发送企业微信通知
        // æŸ¥è¯¢åŽŸææ–™
        IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(order.getIfsInventoryId());
        // æŸ¥è¯¢æ ·å“ä¿¡æ¯
        InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, orderId)
                .last("limit 1"));
        // æŸ¥è¯¢åŽŸææ–™
        IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(order.getIfsInventoryId());
        threadPoolTaskExecutor.execute(() -> {
            String message = "";
            message += "检验任务复核通知";
            message += "\n提交人: " + userName;
            message += "\n委托编号: " + order.getEntrustCode();
            message += "\n样品名称: " + insSample.getModel();
            message += "\n规格型号: " + order.getPartDetail();
            if (ifsInventoryQuantity != null) {
                message += "\n批次号: " + ifsInventoryQuantity.getUpdateBatchNo();
            }
            //发送企业微信消息通知  æäº¤å¤æ ¸
            try {
                WxCpUtils.inform(sendUserAccount, message, null);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        });
        // 15.ifs移库(原材料需要进行移库操作) --> æœ€åŽæ‰§è¡Œ,因为失败无法回滚
        if (ifsInventoryQuantity != null) {
            // ç™»è®°æ£€éªŒç»“æžœ
            // åˆ¤æ–­æ˜¯å¦æœ‰ä¸åˆæ ¼, æœ‰ä¸åˆæ ¼ä¸èƒ½ç§»åº“
            // todo: ifs移库
            insReportService.isRawMaterial(order);
        } else {
            // ä¿®æ”¹æˆå“çŠ¶æ€
            // åˆ¤æ–­æ˜¯å¦æœ‰ä¸åˆæ ¼
            Long unqualifiedCount = insReportService.getUnqualifiedCount(order);
            if (unqualifiedCount.equals(0L)) {
                insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
                        .eq(InsOrder::getId, order.getId())
                        .set(InsOrder::getInsResult, 1));
            } else {
                insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
                        .eq(InsOrder::getId, order.getId())
                        .set(InsOrder::getInsResult, 0));
            }
        }
        return 1;
    }
    private void templateCopy(Integer orderId, List<Integer> ids) {
        // åˆ é™¤åŽŸæœ¬æ¨¡æ¿
        insOrderStandardTemplateService.remove(Wrappers.<InsOrderStandardTemplate>lambdaQuery()
                .eq(InsOrderStandardTemplate::getInsOrderId, orderId));
@@ -886,99 +967,6 @@
                }
            }
        }
        // æ·»åŠ å·¥æ—¶
        // åˆ é™¤åŽŸæœ¬è®¢å•å·¥æ—¶
        auxiliaryOutputWorkingHoursService.remove(Wrappers.<AuxiliaryOutputWorkingHours>lambdaQuery()
                .eq(AuxiliaryOutputWorkingHours::getOrderId, orderId));
        // æŸ¥è¯¢å·¥æ—¶æš‚å­˜
        List<AuxiliaryOutputWorkingHoursTemporary> hoursTemporaries = auxiliaryOutputWorkingHoursTemporaryService.list(Wrappers.<AuxiliaryOutputWorkingHoursTemporary>lambdaQuery()
                .eq(AuxiliaryOutputWorkingHoursTemporary::getOrderId, orderId));
        List<AuxiliaryOutputWorkingHours> outputWorkingHours = hoursTemporaries.stream().map(hoursTemporary -> {
            AuxiliaryOutputWorkingHours workingHours = new AuxiliaryOutputWorkingHours();
            BeanUtil.copyProperties(hoursTemporary, workingHours);
            workingHours.setId(null);
            return workingHours;
        }).collect(Collectors.toList());
        auxiliaryOutputWorkingHoursService.saveBatch(outputWorkingHours);
        // æˆå“æŠ½æ ·æ·»åŠ åˆæ ¼çŠ¶æ€
        // åˆ¤æ–­æ˜¯å¦æœ‰æŠ½æ ·ä¿¡æ¯
        if (order.getQuarterItemId() != null) {
            // åˆ¤æ–­æ˜¯å¦æœ‰ä¸åˆæ ¼
            Long unqualifiedCount = 0L;
            if (CollectionUtils.isNotEmpty(insSamples)) {
                unqualifiedCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
                        .in(InsProduct::getInsSampleId, insSamples.stream().map(InsSample::getId).collect(Collectors.toList()))
                        .eq(InsProduct::getInsResult, 0));
                // åˆ¤æ–­å¦‚果有不合格的检验项, åˆ¤æ–­æœ‰æ²¡æœ‰æ£€éªŒé¡¹å¤æµ‹, å¤æ ¸åˆæ ¼ä¹Ÿç®—合格通过
                if (!unqualifiedCount.equals(0L)) {
                    List<InsProduct> productList = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                            .in(InsProduct::getInsSampleId, insSamples.stream().map(InsSample::getId).collect(Collectors.toList()))
                            .eq(InsProduct::getInsResult, 0));
                    boolean flag = true;
                    for (InsProduct insProduct : productList) {
                        Long unqualifiedProductCount = insUnqualifiedRetestProductMapper.selectCount(Wrappers.<InsUnqualifiedRetestProduct>lambdaQuery()
                                .eq(InsUnqualifiedRetestProduct::getInsProductId, insProduct.getId())
                                .ne(InsUnqualifiedRetestProduct::getInsResult, 0));
                        if (unqualifiedProductCount != 2) {
                            flag = false;
                        }
                    }
                    if (flag) {
                        unqualifiedCount = 0L;
                    }
                }
            }
            spotCheckQuarterItemMapper.update(null, Wrappers.<SpotCheckQuarterItem>lambdaUpdate()
                    .eq(SpotCheckQuarterItem::getQuarterItemId, order.getQuarterItemId())
                    .set(SpotCheckQuarterItem::getResult, unqualifiedCount.equals(0L) ? "合格" : "不合格"));
        }
        // å‘送企业微信通知
        threadPoolTaskExecutor.execute(() -> {
            String message = "";
            message += "检验任务复核通知";
            message += "\n提交人: " + userName;
            message += "\n委托编号: " + order.getEntrustCode();
            message += "\n样品名称: " + insSample.getModel();
            message += "\n规格型号: " + order.getPartDetail();
            if (ifsInventoryQuantity != null) {
                message += "\n批次号: " + ifsInventoryQuantity.getUpdateBatchNo();
            }
            //发送企业微信消息通知  æäº¤å¤æ ¸
            try {
                WxCpUtils.inform(sendUserAccount, message, null);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        });
        // ifs移库
        if (ifsInventoryQuantity != null) {
            // ç™»è®°æ£€éªŒç»“æžœ
            // åˆ¤æ–­æ˜¯å¦æœ‰ä¸åˆæ ¼, æœ‰ä¸åˆæ ¼ä¸èƒ½ç§»åº“
            // todo: ifs移库
            insReportService.isRawMaterial(order);
        } else {
            // ä¿®æ”¹æˆå“çŠ¶æ€
            // åˆ¤æ–­æ˜¯å¦æœ‰ä¸åˆæ ¼
            Long unqualifiedCount = insReportService.getUnqualifiedCount(order);
            if (unqualifiedCount.equals(0L)) {
                insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
                        .eq(InsOrder::getId, order.getId())
                        .set(InsOrder::getInsResult, 1));
            } else {
                insOrderMapper.update(null, Wrappers.<InsOrder>lambdaUpdate()
                        .eq(InsOrder::getId, order.getId())
                        .set(InsOrder::getInsResult, 0));
            }
        }
        return 1;
    }
@@ -1116,7 +1104,6 @@
     * @param orderId
     */
    private void generateReport(Integer orderId) {
        List<InsUnPass> insUnPasses = new ArrayList<>();
        /*样品下的项目只要有一个项目不合格则检验结果为0,否则为1*/
        //这里的insSamples是订单下的所有样品包括("/")
        List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId));
@@ -1132,25 +1119,7 @@
                insSample.setInsResult(1);
            }
            insSampleMapper.updateById(insSample);
            /*复核通过后,将不合格的项目信息添加到ins_un_pass表中*/
            for (InsProduct insProduct : insProducts) {
                if (insProduct.getInsResult() == 0) {
                    InsUnPass insUnPass = new InsUnPass();
                    insUnPass.setId(null);
                    insUnPass.setModel(insSample.getModel());
                    insUnPass.setSample(insSample.getSample());
                    insUnPass.setInspectionItem(insProduct.getInspectionItem());
                    insUnPass.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());
                    insUnPass.setLastValue(insProduct.getLastValue());
                    insUnPass.setEntrustCode(insOrderMapper.selectById(orderId).getEntrustCode());
                    List<Integer> userIds = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery().eq(InsProductUser::getInsProductId, insProduct.getId())).stream().map(InsProductUser::getCreateUser).distinct().collect(Collectors.toList());
                    String name = userMapper.selectBatchIds(userIds).stream().map(User::getName).collect(Collectors.joining(","));
                    insUnPass.setName(name);
                    insUnPasses.add(insUnPass);
                }
            }
        }
        insUnPassService.saveBatch(insUnPasses);
        InsOrder insOrder = insOrderMapper.selectById(orderId);
        // æŠ½æ£€å˜æˆå§”托检验
        if (insOrder.getOrderType().equals(InsOrderTypeConstants.SPOT_CHECK)) {
@@ -4062,7 +4031,7 @@
    }
    /**
     * ä¿å­˜å…ƒæ­¤é˜¿é‡Œè¿›è´§éªŒè¯åŽŸå§‹è®°å½•
     * *****保存元此阿里进货验证原始记录*****
     * @param insOrderId è®¢å•Id
     * @param examineUserId  å¤æ ¸äººId
     * @param writeUserId  æ£€éªŒå‘˜Id
@@ -4212,7 +4181,7 @@
    /**
     * æ ¼å¼åŒ–进厂验证内容
     * ***格式化进厂验证内容****
     * @param basicType
     * @return
     */
@@ -4241,7 +4210,7 @@
    }
    /**
     * word转换pdf
     * ***word转换pdf***
     * @param path
     * @return
     */
@@ -4262,7 +4231,6 @@
            License license = new License();
            license.setLicense(is);
            if (!license.getIsLicensed()) {
                System.out.println("License验证不通过...");
                return null;
            }
            //生成一个空的PDF文件
@@ -4289,4 +4257,41 @@
        return null;
    }
    /**
     * *****修改成品抽样状态******
     * @param insSamples
     * @param order
     */
    private void addProductSpotCheck(List<InsSample> insSamples, InsOrder order) {
        Long unqualifiedCount = 0L;
        if (CollectionUtils.isNotEmpty(insSamples)) {
            unqualifiedCount = insProductMapper.selectCount(Wrappers.<InsProduct>lambdaQuery()
                    .in(InsProduct::getInsSampleId, insSamples.stream().map(InsSample::getId).collect(Collectors.toList()))
                    .eq(InsProduct::getInsResult, 0));
            // åˆ¤æ–­å¦‚果有不合格的检验项, åˆ¤æ–­æœ‰æ²¡æœ‰æ£€éªŒé¡¹å¤æµ‹, å¤æ ¸åˆæ ¼ä¹Ÿç®—合格通过
            if (!unqualifiedCount.equals(0L)) {
                List<InsProduct> productList = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                        .in(InsProduct::getInsSampleId, insSamples.stream().map(InsSample::getId).collect(Collectors.toList()))
                        .eq(InsProduct::getInsResult, 0));
                boolean flag = true;
                for (InsProduct insProduct : productList) {
                    Long unqualifiedProductCount = insUnqualifiedRetestProductMapper.selectCount(Wrappers.<InsUnqualifiedRetestProduct>lambdaQuery()
                            .eq(InsUnqualifiedRetestProduct::getInsProductId, insProduct.getId())
                            .ne(InsUnqualifiedRetestProduct::getInsResult, 0));
                    if (unqualifiedProductCount != 2) {
                        flag = false;
                    }
                }
                if (flag) {
                    unqualifiedCount = 0L;
                }
            }
        }
        spotCheckQuarterItemMapper.update(null, Wrappers.<SpotCheckQuarterItem>lambdaUpdate()
                .eq(SpotCheckQuarterItem::getQuarterItemId, order.getQuarterItemId())
                .set(SpotCheckQuarterItem::getResult, unqualifiedCount.equals(0L) ? "合格" : "不合格"));
    }
}
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderRatesServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.ruoyi.inspect.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.inspect.dto.SampleOrderDto;
import com.ruoyi.inspect.mapper.InsOrderRatesMapper;
import com.ruoyi.inspect.pojo.InsOrderRates;
import com.ruoyi.inspect.service.InsOrderRatesService;
import org.springframework.stereotype.Service;
/**
 * è®¢å•费用表
 *
 * @author zhuo
 * @since 2025-02-28
 */
@Service
public class InsOrderRatesServiceImpl extends ServiceImpl<InsOrderRatesMapper, InsOrderRates> implements InsOrderRatesService {
    /**
     * æŸ¥è¯¢è®¢å•费用列表
     * @param page
     * @param sampleOrderDto
     * @return
     */
    @Override
    public IPage<SampleOrderDto> selectInsOrderRates(Page page, SampleOrderDto sampleOrderDto) {
        return null;
    }
}
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -557,112 +557,12 @@
        return productDto2IPage;
    }
    @Override
    public IPage<CostStatisticsDto> costStatistics(IPage<CostStatisticsDto> page, CostStatisticsDto costStatisticsDto) {
        String dates = costStatisticsDto.getDates();
        String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
        costStatisticsDto.setDates(null);
        //todo:仅看自己
        IPage<CostStatisticsDto> dtoIPage = insOrderMapper.selectCostStatistics(page, QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
        List<CostStatisticsDto> collect = dtoIPage.getRecords().stream().map(dto -> {
            Set<String> uniqueTags = new HashSet<>();
            if (dto.getInspectionItem().contains(",")) {
                for (String s : dto.getInspectionItem().split(",")) {
                    uniqueTags.add(s.split("@")[0]);
                }
            } else {
                uniqueTags.add(dto.getInspectionItem().split("@")[0]);
            }
            dto.setInspectionItem(uniqueTags.toString());
            return dto;
        }).collect(Collectors.toList());
        dtoIPage.setRecords(collect);
        return dtoIPage;
    }
    @Override
    public Map<String, Object> costStatistics2(CostStatisticsDto costStatisticsDto) {
        Map<String, Object> map = new HashMap<>();
        String dates = costStatisticsDto.getDates();
        String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
        costStatisticsDto.setDates(null);
        List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
        double totalPrice = costStatisticsDtos.stream()
                .filter(dto -> dto.getPrice() != null) // è¿‡æ»¤æŽ‰ä»·æ ¼ä¸º null çš„对象
                .mapToDouble(value -> value.getPrice().doubleValue() * value.getNum())
                .sum();
        map.put("total", totalPrice);
        return map;
    }
    @Override
    public Map<String, Object> selectSampleDefects(Page page, String inspectionItems, String orderNumber) {
        List<SampleDefectsFatherVo> sampleDefectsFatherVos = insOrderMapper.selectSampleDefects(page, inspectionItems, orderNumber);
        Map<String, Object> map = new HashMap<>();
        map.put("records", sampleDefectsFatherVos);
        Long aLong = insOrderMapper.getCount(inspectionItems, orderNumber);
        map.put("total", aLong);
        return map;
    }
    @Override
    public int updateStatus(Integer id) {
        return insOrderMapper.updateStatus(id);
    }
    @Override
    public void export(CostStatisticsDto costStatisticsDto, HttpServletResponse response) throws IOException {
        //查询导出的费用统计数据
        String dates = costStatisticsDto.getDates();
        String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
        costStatisticsDto.setDates(null);
        List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
        costStatisticsDtos = costStatisticsDtos.stream().map(dto -> {
            Set<String> uniqueTags = new HashSet<>();
            if (dto.getInspectionItem().contains(",")) {
                for (String s : dto.getInspectionItem().split(",")) {
                    uniqueTags.add(s.split("@")[0]);
                }
            } else {
                uniqueTags.add(dto.getInspectionItem().split("@")[0]);
            }
            dto.setInspectionItem(uniqueTags.toString());
            return dto;
        }).collect(Collectors.toList());
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        // è¿™é‡ŒURLEncoder.encode可以防止中文乱码 å½“ç„¶å’Œeasyexcel没有关系
        String fileName = URLEncoder.encode("样品费用统计导出", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        Map<String, List<CostStatisticsDto>> groupByCompany =
                costStatisticsDtos.stream().filter(e -> StrUtil.isNotEmpty(e.getCompany()))
                        .collect(Collectors.groupingBy(CostStatisticsDto::getCompany));
        try {
            // æ–°å»ºExcelWriter
            // æ–°å»ºExcelWriter
            ExcelWriter excelWriter =
                    EasyExcel.write(response.getOutputStream())
                            .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))
                            .build();
            for (Map.Entry<String, List<CostStatisticsDto>> companyDataEntry : groupByCompany.entrySet()) {
                String sheetName = companyDataEntry.getKey();
                List<CostStatisticsDto> dataList = companyDataEntry.getValue();
                WriteSheet mainSheet = EasyExcel.writerSheet(sheetName)
                        .head(CostStatisticsDto.class)
                        .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25))
                        .build();
                excelWriter.write(dataList, mainSheet);
            }
            // å…³é—­æµ
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
    /**
     * èŽ·å–ifs库存信息
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsReportServiceImpl.java
@@ -36,6 +36,7 @@
import com.ruoyi.inspect.mapper.InsUnqualifiedHandlerMapper;
import com.ruoyi.system.mapper.UserMapper;
import com.ruoyi.system.service.InformationNotificationService;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xwpf.usermodel.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -65,6 +66,7 @@
 * @createDate 2024-03-17 22:10:02
 */
@Service
@Slf4j
public class InsReportServiceImpl extends ServiceImpl<InsReportMapper, InsReport>
        implements InsReportService {
    @Resource
@@ -540,7 +542,6 @@
            // æ¸…理临时文件夹
            deleteDirectory(tempFolder);
            System.out.println("ZIP文件创建完成!");
        } catch (IOException e) {
            e.printStackTrace();
        }
@@ -675,13 +676,11 @@
        FileOutputStream os = null;
        try {
            //凭证 ä¸ç„¶åˆ‡æ¢åŽæœ‰æ°´å°
//            InputStream is = this.getClass().getResourceAsStream("/lib/license.xml");
//            InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("license.xml");
            InputStream is = Files.newInputStream(new File(licenseUrl).toPath());
            License license = new License();
            license.setLicense(is);
            if (!license.getIsLicensed()) {
                System.out.println("License验证不通过...");
                log.info("License验证不通过...");
                return null;
            }
            //生成一个空的PDF文件
@@ -1120,7 +1119,7 @@
            License license = new License();
            license.setLicense(is);
            if (!license.getIsLicensed()) {
                System.out.println("License验证不通过...");
                log.info("License验证不通过...");
                return null;
            }
            //生成一个空的PDF文件
@@ -1131,7 +1130,6 @@
            //要转换的word文件
            com.aspose.words.Document doc = new com.aspose.words.Document(wordPath);
            doc.save(os, SaveFormat.PDF);
            String name = file.getName();
            return file.getName();
        } catch (Exception e) {
            e.printStackTrace();
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsUnPassServiceImpl.java
ÎļþÒÑɾ³ý
inspect-server/src/main/resources/mapper/InsOrderMapper.xml
@@ -178,60 +178,7 @@
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectCostStatistics" resultType="com.ruoyi.inspect.dto.CostStatisticsDto">
        select * from (
        SELECT A.id,
        A.entrust_code,
        A.create_time,
        A.sample,
        A.model,
        A.inspection_item,
        A.company,
        A.`name`,
        COUNT(1) num,
        SUM(A.price) price,
        SUM(A.cost) cost
        FROM
        (SELECT
        i.id,
        i.entrust_code,
        i.create_time,
        isa.sample,
        isa.sample_code,
        isa.model,
        c.price,
        c.cost,
        c.inspection_item,
        i.company,
        u.`name`,
        i.create_user,
        c.ins_sample_id
        FROM
        ins_order i
        LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id
        LEFT JOIN `user` u ON u.id = i.user_id
        left join custom cus on cus.id = u.company
        LEFT JOIN (select SUM(b.price) price, sum(b.man_hour) cost,b.ins_sample_id,
        GROUP_CONCAT(b.inspection_item2
        SEPARATOR ',')
        inspection_item from (select * ,
        GROUP_CONCAT(CONCAT(inspection_item,'@',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP
        BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
        where (i.state = 1 or i.state = 3 or i.state = 4) and c.ins_sample_id IS not  NULL)A
        GROUP BY
        A.id,
        A.entrust_code,
        A.create_time,
        A.sample,
        A.model,
        A.inspection_item,
        A.company,
        A.`name`
        ) B
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectDeviceList" resultType="java.util.Map">
        select device_name,
               en_device_name,
@@ -272,28 +219,6 @@
        </if>
    </select>
    <select id="getCount" resultType="long">
        select count(1)
        from (
        SELECT io.entrust_code,sam.sample,ip.inspection_item,u.name,b.create_time, sam.id
        from ins_order io
        left JOIN ins_sample sam on io.id=sam.ins_order_id
        LEFT JOIN ins_product ip on ip.ins_sample_id=sam.id
        LEFT JOIN
        (SELECT create_time,create_user,ins_product_id FROM (select * FROM ins_product_user ORDER BY
        ins_product_user.create_time DESC) a GROUP BY a.ins_product_id) b
        on b.ins_product_id=ip.id
        left JOIN `user` u on u.id=b.create_user
        where (ip.ins_result=0 OR ip.state=0)
        <if test="inspectionItems != null and inspectionItems != ''">
            and inspection_item like concat('%', #{inspectionItems}, '%')
        </if>
        <if test="orderNumber != null and orderNumber != ''">
            and io.entrust_code like concat('%', #{orderNumber}, '%')
        </if>
        ) temp
    </select>
    <select id="getStandardMethodCode" resultType="java.lang.String">
        select code
        from standard_method
@@ -312,77 +237,6 @@
                     where son_laboratory = #{laboratory}
                       and ins_sample_id in
                           (select id from ins_sample where ins_order_id = #{id}))
    </select>
    <select id="selectCostStatistics2" resultType="com.ruoyi.inspect.dto.CostStatisticsDto">
        select * from (
        SELECT A.id,
        A.entrust_code,
        A.create_time,
        A.sample,
        A.model,
        A.inspection_item,
        A.company,
        A.`name`,
        production,
        engineering,
        COUNT(1) num,
        SUM(A.price) price,
        SUM(A.cost) cost
        FROM
        (SELECT
        i.id,
        i.entrust_code,
        i.create_time,
        isa.sample,
        isa.sample_code,
        isa.model,
        c.price,
        c.cost,
        c.inspection_item,
        i.company,
        u.`name`,
        i.create_user,
        c.ins_sample_id,
        production,
        engineering
        FROM
        ins_order i
        LEFT JOIN ins_sample isa ON isa.ins_order_id = i.id
        LEFT JOIN `user` u ON u.id = i.user_id
        left join custom cus on cus.id = u.company
        LEFT JOIN (select SUM(b.price) price, sum(b.man_hour) cost,b.ins_sample_id,
        GROUP_CONCAT(b.inspection_item2
        SEPARATOR ',')
        inspection_item from (select * ,
        GROUP_CONCAT(CONCAT(inspection_item,'@',inspection_item_subclass) SEPARATOR ',')inspection_item2 from ins_product where state = 1 and template_id IS NOT NULL GROUP BY ins_sample_id,man_hour_group) b GROUP
        BY b.ins_sample_id) c ON c.ins_sample_id = isa.id
        where (i.state = 1 or i.state = 3 or i.state = 4) and c.ins_sample_id IS not  NULL)A
        GROUP BY
        A.id,
        A.entrust_code,
        A.create_time,
        A.sample,
        A.model,
        A.inspection_item,
        A.company,
        A.`name`,
        production,
        engineering
        ORDER BY
        A.id,
        A.entrust_code,
        A.create_time,
        A.sample,
        A.model,
        A.inspection_item,
        A.company,
        A.`name`,
        production,
        engineering) B
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="seldepLimsId" resultType="java.lang.String">
inspect-server/src/main/resources/mapper/InsProductMapper.xml
@@ -141,4 +141,12 @@
        where io2.id = #{orderId}
        and ip.is_binding != 1
    </select>
    <!-- æ ¹æ®è®¢å•查询产品id -->
    <select id="selectProductByOrderId" resultType="com.ruoyi.inspect.pojo.InsProduct">
        select ip.*, is2.sample_code
        from ins_product ip
                 left join ins_sample is2 on is2.id = ip.ins_sample_id
        where is2.ins_order_id = #{orderId}
    </select>
</mapper>
inspect-server/src/main/resources/mapper/InsUnPassMapper.xml
ÎļþÒÑɾ³ý
performance-server/src/main/java/com/ruoyi/performance/controller/PerformanceShiftController.java
@@ -114,7 +114,6 @@
    @ApiOperation(value = "临时接口-添加7月份8月份的数据")
    @GetMapping("temporaryInterface")
    public void temporaryInterface() {
        System.out.println("开始给每个人进行排班,默认早班======start");
        // TODO ç»™æ¯ä¸ªäººéƒ½è¿›è¡ŒæŽ’班(默认早班)
        PerformanceShiftAddDto performanceShiftAddDto = new PerformanceShiftAddDto();
        //班次--早(查询字典)
@@ -140,13 +139,11 @@
            endOfWeek = startOfWeek.plusDays(6);
            LocalDateTime startDateTime = LocalDateTime.of(startOfWeek, LocalTime.MIDNIGHT);
            LocalDateTime endDateTime = LocalDateTime.of(endOfWeek, LocalTime.MIDNIGHT);
            System.out.println("Week starts on " + startDateTime + " and ends on " + endDateTime);
            performanceShiftAddDto.setStartWeek(startDateTime);
            performanceShiftAddDto.setEndWeek(endDateTime);
            performanceShiftService.performanceShiftAdd(performanceShiftAddDto);
            startOfWeek = startOfWeek.plusWeeks(1);
        }
        System.out.println("排班结束======end");
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAProcess.java
@@ -37,8 +37,6 @@
        // å‘èµ·OA流程
        OAResult oaResult = oaService.sendWorkFlow(wri);
        // è¾“出OA流程执行结果
        System.out.println(oaResult);
        return oaResult;
    }
@@ -51,17 +49,15 @@
        wri.setCreaterId(createrId);
        wri.setRequestLevel("0");
        wri.setRequestName(requestName);
        //todo: oa提交 1: ç›´æŽ¥å‘送流程, 0:存入草稿箱
//        wri.setIsnextflow("1");
        wri.setIsnextflow("0");
        //创建主表
        OAWorkflowTable wmi = oaService.createOAMainWorkflowTable(mainFields);
        // å°†ä¸»è¡¨ä¿¡æ¯å¡«å……到流程信息里
        wri.setWorkflowMainTable(wmi);
        // å‘èµ·OA流程
        OAResult oaResult = oaService.sendWorkFlow(wri);
        // è¾“出OA流程执行结果
        System.out.println(oaResult);
        return oaResult;
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/oa/OAService.java
@@ -23,11 +23,10 @@
            oaWorkflowRequestTableField.add(createOAWorkflowRequestTableField(field.getKey(), field.getValue().toString()));
        }
        System.out.println("@#######################");
        for (OAWorkflowRequestTableField workflowRequestTableField : oaWorkflowRequestTableField) {
            System.out.println(workflowRequestTableField.fieldName +","+ workflowRequestTableField.fieldValue +"--"+ workflowRequestTableField.fieldType);
        }
//        for (OAWorkflowRequestTableField workflowRequestTableField : oaWorkflowRequestTableField) {
//
//            System.out.println(workflowRequestTableField.fieldName +","+ workflowRequestTableField.fieldValue +"--"+ workflowRequestTableField.fieldType);
//        }
        //创建主表列
        ArrayOfOAWorkflowRequestTableField wrti = new ArrayOfOAWorkflowRequestTableField();
        wrti.oaWorkflowRequestTableField = oaWorkflowRequestTableField;
ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java
@@ -4,7 +4,7 @@
/**
 * è½¬ä¹‰å’Œåè½¬ä¹‰å·¥å…·ç±»
 *
 *
 * @author ruoyi
 */
public class EscapeUtil
@@ -30,7 +30,7 @@
    /**
     * è½¬ä¹‰æ–‡æœ¬ä¸­çš„HTML字符为安全的字符
     *
     *
     * @param text è¢«è½¬ä¹‰çš„æ–‡æœ¬
     * @return è½¬ä¹‰åŽçš„æ–‡æœ¬
     */
@@ -41,7 +41,7 @@
    /**
     * è¿˜åŽŸè¢«è½¬ä¹‰çš„HTML特殊字符
     *
     *
     * @param content åŒ…含转义符的HTML内容
     * @return è½¬æ¢åŽçš„字符串
     */
@@ -52,7 +52,7 @@
    /**
     * æ¸…除所有HTML标签,但是不删除标签内的内容
     *
     *
     * @param content æ–‡æœ¬
     * @return æ¸…除标签后的文本
     */
@@ -63,7 +63,7 @@
    /**
     * Escape编码
     *
     *
     * @param text è¢«ç¼–码的文本
     * @return ç¼–码后的字符
     */
@@ -104,7 +104,7 @@
    /**
     * Escape解码
     *
     *
     * @param content è¢«è½¬ä¹‰çš„内容
     * @return è§£ç åŽçš„字符串
     */
@@ -153,15 +153,4 @@
        return tmp.toString();
    }
    public static void main(String[] args)
    {
        String html = "<script>alert(1);</script>";
        String escape = EscapeUtil.escape(html);
        // String html = "<scr<script>ipt>alert(\"XSS\")</scr<script>ipt>";
        // String html = "<123";
        // String html = "123>";
        System.out.println("clean: " + EscapeUtil.clean(html));
        System.out.println("escape: " + escape);
        System.out.println("unescape: " + EscapeUtil.unescape(escape));
    }
}