zhuo
2025-02-28 b9ff0ede78518a3c7c160f12942acd9410c33ce5
清除不符合品管理, 调整设备档案和维护保养
已修改12个文件
已重命名1个文件
已删除11个文件
已添加4个文件
947 ■■■■ 文件已修改
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceDocumentsController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceController.java 67 ●●●●● 补丁 | 查看 | 原始文档 | 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/DocumentMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/pojo/DeviceDocuments.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceDocumentsService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-device/src/main/java/com/ruoyi/device/service/DeviceMaintenanceService.java 1 ●●●● 补丁 | 查看 | 原始文档 | 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/DeviceServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | 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 | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InsOrderController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | 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/InsUnPassMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnPass.java 83 ●●●●● 补丁 | 查看 | 原始文档 | 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 22 ●●●●● 补丁 | 查看 | 原始文档 | 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/InsUnPassServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderMapper.xml 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsUnPassMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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(DeviceDocuments document) {
        if (document.getDeviceId() == null) {
            throw new RuntimeException("设备id为空");
        }
        deviceDocumentsService.save(document);
        return Result.success();
    }
    /**
     * æŸ¥è¯¢è®¾å¤‡æ¡£æ¡ˆä¿¡æ¯
     * @param id
     * @return
     */
    @ApiOperation(value = "查询设备档案信息")
    @GetMapping("/id")
    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 id
     * @return
     */
    @ApiOperation(value = "查询设备档案列表")
    @GetMapping("/getAllDocuments")
    public Result getAllDocuments(Integer id) {
        LambdaQueryWrapper<DeviceDocuments> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(DeviceDocuments::getDeviceId, id);
        return Result.success(deviceDocumentsService.list(lambdaQueryWrapper));
    }
}
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/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/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;
    /**
@@ -70,16 +69,17 @@
     */
    @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/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/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/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/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>
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/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/InsUnPassMapper.java
ÎļþÒÑɾ³ý
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InsUnPass.java
ÎļþÒÑɾ³ý
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
@@ -119,8 +119,6 @@
    @Resource
    private InsProductUserMapper insProductUserMapper;
    @Resource
    private InsUnPassService insUnPassService;
    @Resource
    private AuxiliaryOutputWorkingHoursService auxiliaryOutputWorkingHoursService;
    @Resource
    private AuxiliaryOutputWorkingHoursTemporaryService auxiliaryOutputWorkingHoursTemporaryService;
@@ -132,7 +130,6 @@
    private CustomMapper customMapper;
    @Value("${file.path}")
    private String imgUrl;
    @Resource
    private InsOrderFileMapper insOrderFileMapper;
    @Resource
@@ -1116,7 +1113,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 +1128,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)) {
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/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/InsUnPassMapper.xml
ÎļþÒÑɾ³ý