第一次改动(检验任务与样品关联,附件与样品关联,报告与样品关联)
已修改32个文件
已添加2个文件
2275 ■■■■ 文件已修改
inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/InsOrderPlanDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/InsOrderStateDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto1.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto2.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/ReportPageDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/SubmitPlanDto.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderStateMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsReportMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderFile.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsReport.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsSampleUser.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java 256 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java 1463 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanTaskSwitchVo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsOrderStateMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsProductMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsReportMapper.xml 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsSampleMapper.xml 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderController.java
@@ -59,15 +59,6 @@
        return Result.success();
    }
    @ValueClassify("检验下单")
    @ApiOperation(value = "检验分配")
    @PostMapping("/upInsOrder")
    //暂时停用
    public Result<?> upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId,String sonLaboratory) {
        return Result.success(insOrderService.upInsOrder(orderId, sampleId, appointed, userId,sonLaboratory));
    }
    @ValueClassify("检验下单")
    @ApiOperation(value = "添加检验下单数据")
    @PostMapping("/addInsOrder")
inspect-server/src/main/java/com/yuanchu/mom/controller/InsOrderPlanController.java
@@ -75,13 +75,14 @@
    @ValueClassify("检验任务")
    @ApiOperation(value = "执行检验操作")
    @PostMapping("/doInsOrder")
    public Result<?> doInsOrder(Integer id, String laboratory) {
        return Result.success(insOrderPlanService.doInsOrder(id, laboratory));
    public Result<?> doInsOrder(Integer sampleId, String laboratory) {
        return Result.success(insOrderPlanService.doInsOrder(sampleId, laboratory));
    }
    @ValueAuth
    @PostMapping("/getInsProduct")
    @ApiOperation("获取检验项目和模板内容")
    //这里的id就是样品id
    public Result<?> getInsProduct(Integer id, Integer type, String laboratory, HttpServletRequest request) {
        return Result.success(insOrderPlanService.getInsProduct(id, type, laboratory, request));
    }
@@ -89,29 +90,29 @@
    @ValueClassify("检验任务")
    @ApiOperation(value = "任务交接")
    @PostMapping("/upPlanUser")
    public Result<?> upPlanUser(Integer userId, Integer orderId, String sonLaboratory) {
        return Result.success(insOrderPlanService.upPlanUser(userId, orderId, sonLaboratory));
    public Result<?> upPlanUser(Integer userId, Integer sampleId, String sonLaboratory) {
        return Result.success(insOrderPlanService.upPlanUser(userId, sampleId, sonLaboratory));
    }
    @ValueAuth
    @ApiOperation(value = "判断交接的试验室")
    @PostMapping("/upPlanUser2")
    public Result<?> upPlanUser2(Integer orderId) {
        return Result.success(insOrderPlanService.upPlanUser2(orderId));
    public Result<?> upPlanUser2(Integer sampleId) {
        return Result.success(insOrderPlanService.upPlanUser2(sampleId));
    }
    @ValueClassify("检验任务")
    @ApiOperation(value = "复核检验任务")
    @PostMapping("/verifyPlan")
    public Result<?> verifyPlan(Integer orderId, String laboratory, Integer type, String tell) throws IOException {
        return Result.success(insOrderPlanService.verifyPlan(orderId, laboratory, type, tell));
    public Result<?> verifyPlan(Integer sampleId, String laboratory, Integer type, String tell) throws IOException {
        return Result.success(insOrderPlanService.verifyPlan(sampleId, laboratory, type, tell));
    }
    @ValueAuth
    @ApiOperation(value = "校验检验任务提交")
    @PostMapping("/checkSubmitPlan")
    public Result<?> checkSubmitPlan(Integer orderId, String laboratory) {
        return Result.success(insOrderPlanService.checkSubmitPlan(orderId, laboratory));
    public Result<?> checkSubmitPlan(Integer sampleId, String laboratory) {
        return Result.success(insOrderPlanService.checkSubmitPlan(sampleId, laboratory));
    }
    @ValueClassify("检验任务")
@@ -165,8 +166,8 @@
    @ValueClassify("检验任务")
    @ApiOperation(value = "上传附件")
    @PostMapping("/uploadFile")
    public Result<?> uploadFile(Integer orderId, MultipartFile file, String sonLaboratory) {
        return Result.success(insOrderPlanService.uploadFile(orderId, file, sonLaboratory));
    public Result<?> uploadFile(Integer orderId, MultipartFile file, String sonLaboratory,Integer sampleId) {
        return Result.success(insOrderPlanService.uploadFile(orderId, file, sonLaboratory,sampleId));
    }
    @ValueClassify("检验任务")
@@ -229,6 +230,7 @@
    @ValueAuth
    @PostMapping("/getInsProduct2")
    @ApiOperation("查看检验历史")
    //这里的id是样品id
    public Result<?> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request, Integer num) {
        return Result.success(insOrderPlanService.getInsProduct2(id, type, laboratory, request, num));
    }
inspect-server/src/main/java/com/yuanchu/mom/controller/InsReportController.java
@@ -78,12 +78,12 @@
        return Result.success(insReportService.upReportUrl(id));
    }
    @ValueClassify("报告编制")
    /*@ValueClassify("报告编制")
    @ApiOperation(value = "报告在线编制")
    @GetMapping("/upReportFile")
    public Result upReportFile() {
        return Result.success();
    }
    }*/
    @ValueClassify("报告编制")
    @ApiOperation(value = "提交")
@@ -151,7 +151,7 @@
    }
    @ValueAuth
    @ApiOperation(value = "查出该订单下每个站点下的检验次数")
    @ApiOperation(value = "查出该订单下每个样品下每个站点的检验次数")
    @GetMapping("/getInsOrderStateCount")
    public Result getInsOrderStateCount(Integer id){
        return Result.success(insReportService.getInsOrderStateCount(id));
inspect-server/src/main/java/com/yuanchu/mom/dto/InsOrderPlanDTO.java
@@ -11,7 +11,7 @@
@Data
public class InsOrderPlanDTO extends OrderBy implements Serializable {
    @ApiModelProperty("检验任务主键id")
    @ApiModelProperty("样品id")
    private Long insSampleId;
    @ApiModelProperty("用户id")
inspect-server/src/main/java/com/yuanchu/mom/dto/InsOrderStateDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.InsOrderState;
import com.yuanchu.mom.pojo.InsSample;
import lombok.Data;
import java.util.List;
@Data
//查询一个订单下所有样品的所有检验任务
public class InsOrderStateDto {
    private InsSample insSample;
    private List<InsOrderState> insOrderStates;
}
inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto.java
@@ -15,6 +15,5 @@
    private Integer state;
    //选择的每个站点的第几次数据
    @NotNull
    private List<InsReportDto1> insReportDto1s;
}
inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto1.java
@@ -2,12 +2,16 @@
import lombok.Data;
import java.util.List;
@Data
public class InsReportDto1 {
    private String laboratory;
    private Integer num;
    private Integer insOrderUsersId;
    private Integer sampleId;
    private List<InsReportDto2> insReportDto2s;
}
inspect-server/src/main/java/com/yuanchu/mom/dto/InsReportDto2.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.yuanchu.mom.dto;
import lombok.Data;
@Data
public class InsReportDto2 {
    private String laboratory;
    private Integer num;
    private Integer insOrderUsersId;
}
inspect-server/src/main/java/com/yuanchu/mom/dto/ReportPageDto.java
@@ -13,6 +13,9 @@
    @ApiModelProperty(value = "委托编号")
    private String entrustCode;
    @ApiModelProperty(value = "样品编号")
    private String sampleCode;
    @ValueTableShow(value = 3,name = "提交人")
    private String writeUserName;
inspect-server/src/main/java/com/yuanchu/mom/dto/SubmitPlanDto.java
@@ -10,7 +10,7 @@
@Data
public class SubmitPlanDto {
    private Integer orderId;
    private Integer sampleId;
    private String  laboratory;
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderFileMapper.java
@@ -17,5 +17,5 @@
 */
public interface InsOrderFileMapper extends BaseMapper<InsOrderFile> {
    IPage<InsOrderFile> getFileList(@Param("page") Page page, @Param("ew") QueryWrapper<InsOrderFile> ew , @Param("insOrderId") Integer insOrderId, @Param("sonLaboratory") String sonLaboratory);
    IPage<InsOrderFile> getFileList(@Param("page") Page page, @Param("ew") QueryWrapper<InsOrderFile> ew , @Param("insOrderId") Integer insOrderId, @Param("sonLaboratory") String sonLaboratory, @Param("sampleId") Integer sampleId);
}
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsOrderStateMapper.java
@@ -2,6 +2,7 @@
import com.yuanchu.mom.pojo.InsOrderState;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -14,7 +15,7 @@
public interface InsOrderStateMapper extends BaseMapper<InsOrderState> {
    List<InsOrderState> getInsOrderStateCount(Integer id);
    List<InsOrderState> getInsOrderStateCount(@Param("id") Integer id, @Param("sampleId") Integer sampleId);
}
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsProductMapper.java
@@ -29,7 +29,7 @@
    IPage<InsProduct> selectNoProducts(Page page, Integer orderId);
    int selectInsProductCountByOrderId(int orderId);
    int selectInsProductCountByOrderId(int sampleId);
}
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsReportMapper.java
@@ -15,7 +15,7 @@
*/
public interface InsReportMapper extends BaseMapper<InsReport> {
    IPage<ReportPageDto> pageInsReport(IPage<ReportPageDto> page, @Param("ew") QueryWrapper<ReportPageDto> ew, @Param("laboratory") String laboratory);
    IPage<ReportPageDto> pageInsReport(IPage<ReportPageDto> page, @Param("ew") QueryWrapper<ReportPageDto> ew);
    String getLaboratoryByName(String name);
inspect-server/src/main/java/com/yuanchu/mom/mapper/InsSampleMapper.java
@@ -29,15 +29,15 @@
    IPage<InsOrderPlanTaskSwitchVo> inspectionOrderDetailsTaskSwitching(Page page, @Param("ew") QueryWrapper<InsOrderPlanDTO> ew, @Param("userId") Integer userId, @Param("sonLaboratory") String sonLaboratory, @Param("laboratory") String laboratory);
    List<SampleProductDto> selectSampleProductListByOrderId(Integer id);
    SampleProductDto selectSampleProductListByOrderId(Integer id);
    List<SampleProductDto> selectSampleProductListByOrderId2(Integer id);
    List<SampleProductDto> selectSampleProductListByOrder2Id2(Integer id);
    List<SampleProductDto3> selectSampleProductListByOrderId3(List<Integer> ids);
    List<SampleProductDto> getInsOrderAndSample(Integer id, String laboratory);
    List<SampleProductDto> getInsOrderAndSample2(Integer id, String laboratory);
    SampleProductDto getInsOrderAndSample(Integer sampleId, String laboratory);
    SampleProductDto getInsOrderAndSample2(Integer sampleId, String laboratory);
    String getSampleEn(String sample);
@@ -60,8 +60,6 @@
    //查询且过滤出有电路试验的样品
    List<InsSample> selectSample(Integer insOrderId);
    List<SampleProductDto> selectList1(Integer id);
}
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderFile.java
@@ -69,4 +69,7 @@
    @ApiModelProperty("所属站点")
    @ValueTableShow(6)
    private String sonLaboratory;
    @ApiModelProperty("关联 æ ·å“å¤–é”®id")
    private Integer insSampleId;
}
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsOrderState.java
@@ -101,4 +101,7 @@
    @TableField(select = false,exist = false)
    private List<InsOrderUser> insOrderUserList;
    @ApiModelProperty("关联 æ ·å“å¤–é”®id")
    private Integer insSampleId;
}
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsReport.java
@@ -35,6 +35,11 @@
    private Integer insOrderId;
    /**
     * å¤–键:样品idid
     */
    private Integer insSampleId;
    /**
     * ç³»ç»Ÿç”ŸæˆæŠ¥å‘Šåœ°å€
     */
    private String url;
inspect-server/src/main/java/com/yuanchu/mom/pojo/InsSampleUser.java
@@ -27,7 +27,7 @@
    private Integer id;
    /**
     * å¤–键:检验样品ins_sample表id(实际关联ins_order表id)
     * å¤–键:检验样品ins_sample表id
     */
    private Integer insSampleId;
inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderPlanService.java
@@ -32,24 +32,24 @@
    //电路试验的保存检验内容
    List<Integer> saveInsContext2(InsProductResultDto insProductResultDtos);
    Map<String, Object> doInsOrder(Integer id, String laboratory);
    Map<String, Object> doInsOrder(Integer sampleId, String laboratory);
    int upPlanUser(Integer userId, Integer orderId,String sonLaboratory);
    int upPlanUser(Integer userId, Integer sampleId,String sonLaboratory);
    int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) throws IOException;
    int verifyPlan(Integer sampleId, String laboratory, Integer type, String tell) throws IOException;
    int submitPlan(SubmitPlanDto submitPlanDto);
    List<InsProduct> getInsProduct(Integer id, Integer type, String laboratory, HttpServletRequest request);
    List<InsProduct> getInsProduct2(Integer id, Integer type, String laboratory, HttpServletRequest request,Integer num);
    List<String> checkSubmitPlan(Integer orderId, String laboratory);
    List<String> checkSubmitPlan(Integer sampleId, String laboratory);
    Map<String,Object> getFileList(Page page, InsOrderFile insOrderFile);
    int uploadFile(Integer orderId, MultipartFile file,String sonLaboratory);
    int uploadFile(Integer orderId, MultipartFile file,String sonLaboratory,Integer sampleId);
    List<String> upPlanUser2(Integer orderId);
    List<String> upPlanUser2(Integer sampleId);
    int deleteInsContext(InsProductResultVo insProductResultVo);
inspect-server/src/main/java/com/yuanchu/mom/service/InsOrderService.java
@@ -24,9 +24,6 @@
    //获取单位检验下单数据
    Map<String, Object> selectInsOrderParameter(IPage<InsOrder> page, SampleOrderDto sampleOrderDto);
    //分配站点
    int upInsOrder(Integer orderId,Integer sampleId, String appointed, Integer userId,String sonLaboratory);
    int addInsOrder(List<SampleProductDto> list, InsOrder insOrder, List<List<Integer>> pairing, List<MultipartFile> files);
    Map<String, Object> getInsOrder(Integer id);
@@ -35,7 +32,7 @@
    int upInsOrderOfState2(InsOrder insOrder);
    Map<String, Object> getInsOrderAndSample(Integer id, String laboratory);
    Map<String, Object> getInsOrderAndSample(Integer sampleId, String laboratory);
    Map<String, Object> selectSampleAndProductByOrderId(IPage<SampleProductDto2> page, SampleProductDto2 sampleProductDto);
inspect-server/src/main/java/com/yuanchu/mom/service/InsReportService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.dto.InsOrderStateDto;
import com.yuanchu.mom.dto.InsReportDto;
import com.yuanchu.mom.dto.ReportPageDto;
import com.yuanchu.mom.pojo.InsOrderState;
@@ -45,6 +46,6 @@
    //是否生成总报告
    int isReport(InsReportDto insReportDto);
    //查出该订单下每个站点下的检验次数
   List<InsOrderState> getInsOrderStateCount(Integer id);
    //查出该订单下每个样品下每个站点下的检验次数
    List<InsOrderStateDto> getInsOrderStateCount(Integer id);
}
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderPlanServiceImpl.java
@@ -78,8 +78,6 @@
    private ShiftTimeMapper shiftTimeMapper;
    @Resource
    private PerformanceShiftMapper performanceShiftMapper;
    @Resource
    private WarehouseHistoryMapper warehouseHistoryMapper;
    @Resource
    private WarehouseService warehouseService;
@@ -87,14 +85,8 @@
    @Value("${wordUrl}")
    private String wordUrl;
    @Value("${twoCode}")
    private String twoCode;
    @Resource
    WordUtils wordUtils;
    @Resource
    private InsReportMapper insReportMapper;
    @Resource
    private InsProductResultMapper insProductResultMapper;
@@ -119,9 +111,6 @@
    @Resource
    private UserMapper userMapper;
    @Resource
    private CustomMapper customMapper;
    @Value("${file.path}")
    private String imgUrl;
@@ -180,20 +169,23 @@
    }
    @Override
    public Map<String, Object> doInsOrder(Integer id, String laboratory) {
    public Map<String, Object> doInsOrder(Integer sampleId, String laboratory) {
        InsSample insSample = insSampleMapper.selectById(sampleId);
        InsOrder insOrder = new InsOrder();
        insOrder.setId(id);
        InsOrder order = insOrderMapper.selectById(id);
        insOrder.setId(insSample.getInsOrderId());
        InsOrder order = insOrderMapper.selectById(insSample.getInsOrderId());
        if (BeanUtil.isEmpty(order.getInsTime())) {
            insOrder.setInsTime(LocalDateTime.now());
            insOrder.setInsTime(LocalDateTime.now());//订单的检验时间
            insOrderMapper.updateById(insOrder);
            //更新检验任务表的检验时间
            insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                    .eq(InsOrderState::getInsOrderId, id)
                    .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                    .eq(InsOrderState::getInsSampleId, sampleId)
                    .eq(InsOrderState::getLaboratory, laboratory)
                    .set(InsOrderState::getInsTime, LocalDateTime.now())
                    .set(InsOrderState::getInsState, 1));
        }
        Map<String, Object> map = insOrderService.getInsOrderAndSample(id, laboratory);
        Map<String, Object> map = insOrderService.getInsOrderAndSample(sampleId, laboratory);
        List<SampleProductDto> list = JSON.parseArray(JSON.toJSONString(map.get("sampleProduct")), SampleProductDto.class);
        map.put("sampleProduct", list);
        return map;
@@ -220,9 +212,6 @@
                        insProduct.setInsProductResult(insProductResult);
                    }
                }
                /*if (insProducts.size() == 0) {
                    insProducts = insSampleMapper.getIns2Product1(id, laboratory);
                }*/
                break;
            case 1:
                //光纤带
@@ -270,12 +259,10 @@
    }
    @Override
    public List<String> checkSubmitPlan(Integer orderId, String laboratory) {
    public List<String> checkSubmitPlan(Integer sampleId, String laboratory) {
        List<String> collect = new ArrayList<>();
        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<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .in(InsProduct::getInsSampleId, ids)
                .eq(InsProduct::getInsSampleId, sampleId)
                .eq(InsProduct::getSonLaboratory, laboratory)
                .eq(InsProduct::getState, 1)
                .eq(InsProduct::getInsResult, 0));
@@ -294,17 +281,22 @@
        Integer insOrderId = insOrderFile.getInsOrderId();
        insOrderFile.setInsOrderId(null);
        String sonLaboratory = null;
        Integer sampleId = null;
        if (ObjectUtils.isNotEmpty(insOrderFile.getSonLaboratory())) {
            sonLaboratory = insOrderFile.getSonLaboratory();
            insOrderFile.setSonLaboratory(null);
        }
        IPage<InsOrderFile> insOrderFileIPage = insOrderFileMapper.getFileList(page, QueryWrappers.queryWrappers(insOrderFile), insOrderId, sonLaboratory);
        if (ObjectUtils.isNotEmpty(insOrderFile.getInsSampleId())) {
            sampleId = insOrderFile.getInsSampleId();
            insOrderFile.setInsSampleId(null);
        }
        IPage<InsOrderFile> insOrderFileIPage = insOrderFileMapper.getFileList(page, QueryWrappers.queryWrappers(insOrderFile), insOrderId, sonLaboratory,sampleId);
        map.put("body", insOrderFileIPage);
        return map;
    }
    @Override
    public int uploadFile(Integer orderId, MultipartFile file, String sonLaboratory) {
    public int uploadFile(Integer orderId, MultipartFile file, String sonLaboratory, Integer sampleId) {
        String urlString;
        String pathName;
        String path;
@@ -312,6 +304,9 @@
        String contentType = file.getContentType();
        InsOrderFile insOrderFile = new InsOrderFile();
        insOrderFile.setInsOrderId(orderId);
        if (ObjectUtils.isNotEmpty(sampleId)) {
            insOrderFile.setInsSampleId(sampleId);
        }
        insOrderFile.setFileName(filename);
        if (contentType != null && contentType.startsWith("image/")) {
            // æ˜¯å›¾ç‰‡
@@ -327,28 +322,10 @@
            if (!realpath.exists()) {
                realpath.mkdirs();
            }
            pathName = file.getOriginalFilename().replace("#", "&");
            pathName = UUID.randomUUID() + "_"+file.getOriginalFilename().replace("#", "&");
            urlString = realpath + "/" + pathName;
            file.transferTo(new File(urlString));
            insOrderFile.setFileUrl(pathName);
            if (ObjectUtils.isNotEmpty(sonLaboratory)) {
                insOrderFile.setSonLaboratory(sonLaboratory);
                //删除重复的数据
                insOrderFileMapper.delete(Wrappers.<InsOrderFile>lambdaQuery()
                        .eq(InsOrderFile::getInsOrderId, orderId)
                        .eq(InsOrderFile::getType, insOrderFile.getType())
                        .eq(InsOrderFile::getFileName, insOrderFile.getFileName())
                        .eq(InsOrderFile::getSonLaboratory, insOrderFile.getSonLaboratory())
                        .eq(InsOrderFile::getFileUrl, insOrderFile.getFileUrl()));
            } else {
                //删除重复的数据
                insOrderFileMapper.delete(Wrappers.<InsOrderFile>lambdaQuery()
                        .eq(InsOrderFile::getInsOrderId, orderId)
                        .eq(InsOrderFile::getType, insOrderFile.getType())
                        .eq(InsOrderFile::getFileName, insOrderFile.getFileName())
                        .isNull(InsOrderFile::getSonLaboratory)
                        .eq(InsOrderFile::getFileUrl, insOrderFile.getFileUrl()));
            }
            insOrderFileMapper.insert(insOrderFile);
            //如果是辐射试验(近场/远程上传的csv文件)
            String[] split = filename.split("\\.");
@@ -368,9 +345,11 @@
    }
    @Override
    public List<String> upPlanUser2(Integer orderId) {
        List<Integer> sampleId = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId)).stream().map(InsSample::getId).collect(Collectors.toList());
        List<String> sonLaboratory = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getState, 1).in(InsProduct::getInsSampleId, sampleId)).stream().map(InsProduct::getSonLaboratory).distinct().collect(Collectors.toList());
    public List<String> upPlanUser2(Integer sampleId) {
        List<String> sonLaboratory = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getState, 1)
                .eq(InsProduct::getInsSampleId, sampleId))
                .stream().map(InsProduct::getSonLaboratory).distinct().collect(Collectors.toList());
        return sonLaboratory;
    }
@@ -388,17 +367,15 @@
        /*样品入库*/
        warehouseService.inWarehouse(trees, sampleCode);
        /*新增检验任务*/
        //先判断该订单是否有这个站点的项目
        //先判断该样品是否有这个站点的项目
        InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode));
        List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, insSample.getInsOrderId())).stream().map(InsSample::getId).collect(Collectors.toList());
        List<String> collect = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getState, 1)
                .in(InsProduct::getInsSampleId, sampleIds)).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList());
                .eq(InsProduct::getInsSampleId, insSample.getId())).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList());
        if (!collect.contains(sonLaboratory)) {
            throw new ErrorException("该订单没有" + sonLaboratory + "站点的相关项目,请查看下单详情!");
            throw new ErrorException("该样品没有" + sonLaboratory + "站点的相关项目,请查看下单详情!");
        }
        //判断该订单是否站点任务有结束试验
        //判断该订单是否站点任务有结束试验(只要任一任务结束试验都不能再次试验)
        List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsState, 5));
@@ -407,6 +384,7 @@
        }
        InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsSampleId, insSample.getId())
                .eq(InsOrderState::getLaboratory, sonLaboratory));
        if (ObjectUtils.isNotEmpty(orderState)) {
            //继续试验
@@ -418,6 +396,7 @@
        } else {
            InsOrderState insOrderState = new InsOrderState();
            insOrderState.setInsOrderId(insSample.getInsOrderId());
            insOrderState.setInsOrderId(insSample.getId());
            insOrderState.setLaboratory(sonLaboratory);
            insOrderState.setInsState(0);
            insOrderState.setNum(1);//初始是第一次
@@ -430,25 +409,24 @@
    @Override
    public int outInsOrderState(String sonLaboratory, String sampleCode) {
        //判断该样品的检验任务是否已经结束(继续试验或者是结束试验)
        //先判断该订单是否有这个站点的项目
        //先判断该样品是否有这个站点的项目
        InsSample insSample = insSampleMapper.selectOne(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getSampleCode, sampleCode));
        List<Integer> sampleIds = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, insSample.getInsOrderId())).stream().map(InsSample::getId).collect(Collectors.toList());
        List<String> collect = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getState, 1)
                .in(InsProduct::getInsSampleId, sampleIds)).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList());
                .eq(InsProduct::getInsSampleId, insSample.getId())).stream().map(InsProduct::getSonLaboratory).collect(Collectors.toList());
        if (!collect.contains(sonLaboratory)) {
            throw new ErrorException("该订单没有" + sonLaboratory + "站点的相关项目,请查看下单详情!");
            throw new ErrorException("该样品没有" + sonLaboratory + "站点的相关项目,请查看下单详情!");
        }
        //判断该订单是否站点任务有(继续试验或者是结束试验)
        List<InsOrderState> orderStates = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsState, 5));
                .eq(InsOrderState::getInsState, 5));//结束试验
        if (CollectionUtils.isEmpty(orderStates)) {
            List<InsOrderState> orderStates1 = insOrderStateMapper.selectList(Wrappers.<InsOrderState>lambdaQuery()
                    .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                    .eq(InsOrderState::getInsSampleId, insSample.getId())
                    .eq(InsOrderState::getLaboratory, sonLaboratory)
                    .eq(InsOrderState::getInsState, 6));
                    .eq(InsOrderState::getInsState, 6));//继续试验
            if (CollectionUtils.isEmpty(orderStates1)) {
                throw new ErrorException("该样品的检验任务还没有结束试验或继续试验,暂时无法出库!");
            }
@@ -677,11 +655,13 @@
                int pId = Integer.parseInt(res.replaceAll("\\D+", ""));
                InsProduct insProduct = insProductMapper.selectById(pId);
                // é€šè¿‡æ ·æœ¬id获取订单id
                int orderId = insSampleMapper.selectById(insProduct.getInsSampleId()).getInsOrderId();
                int count = insProductMapper.selectInsProductCountByOrderId(orderId);
                InsSample insSample = insSampleMapper.selectById(insProduct.getInsSampleId());
                int orderId = insSample.getInsOrderId();
                int count = insProductMapper.selectInsProductCountByOrderId(insSample.getId());
                if (count == 0) {
                    insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate()
                            .eq(InsOrderState::getInsOrderId, orderId)
                            .eq(InsOrderState::getInsSampleId, insSample.getId())
                            .eq(InsOrderState::getLaboratory, insProduct.getSonLaboratory())
                            .set(InsOrderState::getInsState, 2));
                }
@@ -703,6 +683,7 @@
        InsOrder insOrder = insOrderMapper.selectById(insProductResultDtos.getOrderId());
        InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId())
                .eq(InsOrderState::getInsSampleId, insProductResultDtos.getSampleId())
                .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory())
                .orderByDesc(InsOrderState::getId)
                .last("LIMIT 1"));// ç¡®ä¿åªå–一条记录
@@ -816,6 +797,7 @@
        if (count == 0) {
            insOrderStateMapper.update(new InsOrderState(), Wrappers.<InsOrderState>lambdaUpdate()
                    .eq(InsOrderState::getInsOrderId, insProductResultDtos.getOrderId())
                    .eq(InsOrderState::getInsSampleId, insProductResultDtos.getSampleId())
                    .eq(InsOrderState::getLaboratory, insProductResultDtos.getSonLaboratory())
                    .set(InsOrderState::getInsState, 2));
        }
@@ -896,10 +878,10 @@
    //交接
    @Override
    public int upPlanUser(Integer userId, Integer orderId, String sonLaboratory) {
    public int upPlanUser(Integer userId, Integer sampleId, String sonLaboratory) {
        InsSampleUser insSampleUser = new InsSampleUser();
        insSampleUser.setUserId(userId);
        insSampleUser.setInsSampleId(orderId);
        insSampleUser.setInsSampleId(sampleId);
        insSampleUser.setState(0);
        insSampleUser.setSonLaboratory(sonLaboratory);
        return insSampleUserMapper.insert(insSampleUser);
@@ -907,47 +889,47 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int verifyPlan(Integer orderId, String laboratory, Integer type, String tell) throws IOException {
    public int verifyPlan(Integer sampleId, String laboratory, Integer type, String tell) throws IOException {
        LocalDateTime now = LocalDateTime.now();
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        List<InsUnPass> insUnPasses = new ArrayList<>();
        /*样品下的项目只要有一个项目不合格则检验结果为0,否则为1*/
        List<InsSample> samples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId));
        for (InsSample insSample : samples) {
            List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                    .eq(InsProduct::getInsSampleId, insSample.getId())
                    .eq(InsProduct::getSonLaboratory, laboratory)
                    .eq(InsProduct::getState, 1));
            List<Integer> results = insProducts.stream().map(InsProduct::getInsResult).filter(str -> str != null).collect(Collectors.toList());
            if (results.contains(0)) {
                insSample.setInsResult(0);
            } else {
                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);
                }
        InsSample insSample = insSampleMapper.selectById(sampleId);
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getInsSampleId, insSample.getId())
                .eq(InsProduct::getSonLaboratory, laboratory)
                .eq(InsProduct::getState, 1));
        List<Integer> results = insProducts.stream().map(InsProduct::getInsResult).filter(str -> str != null).collect(Collectors.toList());
        if (results.contains(0)) {
            insSample.setInsResult(0);
        } else {
            insSample.setInsResult(1);
        }
        insSampleMapper.updateById(insSample);
        /*复核后,将不合格的项目信息添加到ins_un_pass表中*/
        InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId());
        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(insOrder.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);
        /*type=0  å†æ¬¡è¯•验; type=1 ç»§ç»­è¯•验 ; type=2 ç»“束试验*/
        // æŸ¥è¯¢æ ¹æ® id å€’序排列的第一条记录
        InsOrderState record = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, orderId)
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsSampleId, sampleId)
                .eq(InsOrderState::getLaboratory, laboratory)
                .orderByDesc(InsOrderState::getId)
                .last("LIMIT 1")); // ç¡®ä¿åªå–一条记录
@@ -972,7 +954,8 @@
                case 1:
                    //继续试验:该站点任务结束(可以再次扫码检验);
                    insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                            .eq(InsOrderState::getInsOrderId, orderId)
                            .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                            .eq(InsOrderState::getInsSampleId, sampleId)
                            .eq(InsOrderState::getLaboratory, laboratory)
                            .set(InsOrderState::getInsState, 6)
                            .set(InsOrderState::getVerifyTell, tell)
@@ -981,25 +964,23 @@
                case 2:
                    //结束试验:此委托单停止试验(无法再次检验)。
                    insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                            .eq(InsOrderState::getInsOrderId, orderId)
                            .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                            .eq(InsOrderState::getInsSampleId, sampleId)
                            .eq(InsOrderState::getLaboratory, laboratory)
                            .set(InsOrderState::getInsState, 5)
                            .set(InsOrderState::getVerifyTell, tell)
                            .set(InsOrderState::getVerifyUser, userId));
                    //如果订单类型是原理样机,则该订单直接闭环
                    InsOrder insOrder = insOrderMapper.selectById(orderId);
                    if (insOrder.getFormType().equals("原理样机")) {
                        for (InsSample sample : samples) {
                            //出库
                            try {
                                outInsOrderState(laboratory, sample.getSampleCode());
                            } catch (Exception e) {
                        //出库
                        try {
                            outInsOrderState(laboratory, insSample.getSampleCode());
                        } catch (Exception e) {
                            }
                        }
                        insOrder.setState(4);
                        insOrderMapper.updateById(insOrder);
                    }
                    insOrder.setState(4);
                    insOrderMapper.updateById(insOrder);
                    break;
            }
        }
@@ -1033,10 +1014,10 @@
    @Override
    public int submitPlan(SubmitPlanDto submitPlanDto) {
        List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery()
                .eq(InsSample::getInsOrderId, submitPlanDto.getOrderId()).select(InsSample::getId));
        InsSample insSample = insSampleMapper.selectById(submitPlanDto.getSampleId());
        InsOrderState orderState = insOrderStateMapper.selectOne(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, submitPlanDto.getOrderId())
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsSampleId, submitPlanDto.getSampleId())
                .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory())
                .orderByDesc(InsOrderState::getId)
                .last("LIMIT 1"));// ç¡®ä¿åªå–一条记录
@@ -1049,16 +1030,10 @@
        insOrderUser.setNote(ObjectUtils.isNotEmpty(submitPlanDto.getNote()) ? submitPlanDto.getNote() : null);
        insOrderUser.setTerm(ObjectUtils.isNotEmpty(submitPlanDto.getTerm()) ? submitPlanDto.getTerm() : null);
        insOrderUserMapper.insert(insOrderUser);
        List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .in(InsProduct::getInsSampleId, ids)
                .eq(InsProduct::getInsSampleId, insSample.getId())
                .eq(InsProduct::getSonLaboratory, submitPlanDto.getLaboratory())
                .eq(InsProduct::getState, 1)
                .and(wrapper -> wrapper
                        .isNull(InsProduct::getInsResult)
                        .or()
                        .eq(InsProduct::getInsResult, 2)
                ));
                .eq(InsProduct::getState, 1));
        if (insProducts.size() > 0) {
            String str = "";
            int count = 0;
@@ -1090,19 +1065,13 @@
            }
        }
        insOrderStateMapper.update(null, Wrappers.<InsOrderState>lambdaUpdate()
                .eq(InsOrderState::getInsOrderId, submitPlanDto.getOrderId())
                .eq(InsOrderState::getInsOrderId, insSample.getInsOrderId())
                .eq(InsOrderState::getInsSampleId, submitPlanDto.getSampleId())
                .eq(InsOrderState::getLaboratory, submitPlanDto.getLaboratory())
                .set(InsOrderState::getInsState, 3)
                .set(InsOrderState::getVerifyUser, submitPlanDto.getVerifyUser()));
        InsOrder insOrder = insOrderMapper.selectById(submitPlanDto.getOrderId());
        /*这个情况先关闭----如果是C类订单且是下发到质量部,则直接复核通过(结束试验)*/
//        if (insOrder.getOrderType().equals("C") && insOrder.getDepartmentLims().equals("质量部")) {
//            try {
//                verifyPlan(orderId, laboratory, 2, null);
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        } else {
        InsOrder insOrder = insOrderMapper.selectById(insSample.getInsOrderId());
        Integer userId = getLook.selectPowerByMethodAndUserId(null).get("userId");
        //LIMS系统消息推送
        InformationNotification info = new InformationNotification();
@@ -1116,25 +1085,24 @@
        info.setJumpPath("b1-inspect-order-plan");
        informationNotificationService.addInformationNotification(info);
        //  todo ä¼ä¸šå¾®ä¿¡æ¶ˆæ¯æŽ¨é€@zss
            HashMap<String, Object> map = new HashMap<>();
            String account = userMapper.selectById(submitPlanDto.getVerifyUser()).getAccount();
            map.put("touser", account);//接收消息成员的账号'ZT-031292'这种类型(如果有多个用'|'分隔)
            map.put("toparty", "");//接收部门id
            map.put("totag", "");//消息标签id
            map.put("msgtype", "text");//消息类型 text:文本
            map.put("agentid", 1000517);//应用id
            HashMap<String, Object> hashMap = new HashMap<>();
            hashMap.put("content", "您有一条检验任务待复核消息,订单号是:"+insOrder.getEntrustCode()+",请前往LIMS系统查看。<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
            map.put("text", hashMap);//消息内容
            map.put("safe", 0);//是否保密消息.0否
            map.put("enable_id_trans", 0);//是否开启id转译.0否
            map.put("enable_duplicate_check", 0);//是否开启重复消息检查.0否
            qywxApi.send(map);
//        }
        HashMap<String, Object> map = new HashMap<>();
        String account = userMapper.selectById(submitPlanDto.getVerifyUser()).getAccount();
        map.put("touser", account);//接收消息成员的账号'ZT-031292'这种类型(如果有多个用'|'分隔)
        map.put("toparty", "");//接收部门id
        map.put("totag", "");//消息标签id
        map.put("msgtype", "text");//消息类型 text:文本
        map.put("agentid", 1000517);//应用id
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("content", "您有一条检验任务待复核消息,订单号是:" + insOrder.getEntrustCode() + ",请前往LIMS系统查看。<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
        map.put("text", hashMap);//消息内容
        map.put("safe", 0);//是否保密消息.0否
        map.put("enable_id_trans", 0);//是否开启id转译.0否
        map.put("enable_duplicate_check", 0);//是否开启重复消息检查.0否
        qywxApi.send(map);
        //复核人--检验单相关负责人
        InsSampleUser insSampleUser = new InsSampleUser();
        insSampleUser.setUserId(submitPlanDto.getVerifyUser());
        insSampleUser.setInsSampleId(submitPlanDto.getOrderId());
        insSampleUser.setInsSampleId(submitPlanDto.getSampleId());
        insSampleUser.setState(1);
        insSampleUser.setSonLaboratory(submitPlanDto.getLaboratory());
        insSampleUserMapper.insert(insSampleUser);
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
@@ -81,22 +81,13 @@
    @Resource
    InsProductResultMapper insProductResultMapper;
    @Resource
    private WarehouseHistoryMapper warehouseHistoryMapper;
    @Resource
    private InsProductMapper insProductMapper;
    @Resource
    private InsProductService insProductService;
    @Resource
    private InsProductUserMapper insProductUserMapper;
    @Resource
    private GiveCode giveCode;
    @Resource
    private InsSampleUserMapper insSampleUserMapper;
    @Resource
    private InsOrderStateMapper insOrderStateMapper;
    @Resource
    UserMapper userMapper;
    @Resource
    InformationNotificationService informationNotificationService;
    @Resource
@@ -141,34 +132,6 @@
        });
        map.put("body", sampleOrderDtoIPage);
        return map;
    }
    //分配站点
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId, String sonLaboratory) {
        InsOrder insOrder = new InsOrder();
        insOrder.setId(orderId);
        //insOrder.setAppointed(LocalDate.parse(appointed));
        insOrder.setSendTime(LocalDateTime.now());
        insOrderMapper.updateById(insOrder);
        //修改成只给当前选择的试验室下发单子
        InsOrderState insOrderState = new InsOrderState();
        insOrderState.setInsOrderId(orderId);
        insOrderState.setLaboratory(sonLaboratory);
        insOrderState.setInsState(0);
        insOrderState.setNum(1);//初始是第一次
        insOrderStateMapper.insert(insOrderState);
        //这里是在给分配的指定的人和试验室下发检验人
        if (userId != null) {
            InsSampleUser insSampleUser = new InsSampleUser();
            insSampleUser.setState(0);
            insSampleUser.setUserId(userId);
            insSampleUser.setInsSampleId(orderId);
            insSampleUser.setSonLaboratory(sonLaboratory);
            insSampleUserMapper.insert(insSampleUser);
        }
        return 1;
    }
    @Override
@@ -257,7 +220,7 @@
        if (insOrder.getOrderType().equals("C")) {
            insOrder.setState(1);
            upInsOrderOfState(insOrder);
        }else if (insOrder.getOrderType().equals("A")){
        } else if (insOrder.getOrderType().equals("A")) {
            //常规外部单需消息提醒检验中心主任和研发部经理
            //todo ä¼ä¸šå¾®ä¿¡æŽ¨é€
            users1.addAll(users2);
@@ -267,7 +230,7 @@
            map.put("msgtype", "text");//消息类型 text:文本
            map.put("agentid", 1000517);//应用id
            HashMap<String, Object> hashMap = new HashMap<>();
            hashMap.put("content", "您有一条检验订单需要审核,请前往LIMS系统查看。外部订单号是:"+insOrder.getOutEntrustCode()+",请前往LIMS系统查看。<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
            hashMap.put("content", "您有一条检验订单需要审核,请前往LIMS系统查看。外部订单号是:" + insOrder.getOutEntrustCode() + ",请前往LIMS系统查看。<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
            map.put("text", hashMap);//消息内容
            map.put("safe", 0);//是否保密消息.0否
            map.put("enable_id_trans", 0);//是否开启id转译.0否
@@ -280,7 +243,7 @@
                info.setCreateUser(userMapper.selectById(userId).getName());
                info.setMessageType("2");
                info.setTheme("审核通知");
                info.setContent("您有一条检验订单待审核消息,订单的外部编号是:"+insOrder.getOutEntrustCode());
                info.setContent("您有一条检验订单待审核消息,订单的外部编号是:" + insOrder.getOutEntrustCode());
                info.setSenderId(userId);
                info.setViewStatus(false);
                info.setJumpPath("b1-inspect-order");
@@ -288,7 +251,7 @@
                notificationArrayList.add(info);
            }
            informationNotificationService.saveBatch(notificationArrayList);
        }else if (insOrder.getOrderType().equals("B")){
        } else if (insOrder.getOrderType().equals("B")) {
            //非常规外部单需消息提醒检验中心主任,研发部经理和技术负责人
            //todo ä¼ä¸šå¾®ä¿¡æŽ¨é€
            users1.addAll(users2);
@@ -299,7 +262,7 @@
            map.put("msgtype", "text");//消息类型 text:文本
            map.put("agentid", 1000517);//应用id
            HashMap<String, Object> hashMap = new HashMap<>();
            hashMap.put("content", "您有一条检验订单需要审核,请前往LIMS系统查看。外部订单号是:"+insOrder.getOutEntrustCode()+",请前往LIMS系统查看。<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
            hashMap.put("content", "您有一条检验订单需要审核,请前往LIMS系统查看。外部订单号是:" + insOrder.getOutEntrustCode() + ",请前往LIMS系统查看。<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
            map.put("text", hashMap);//消息内容
            map.put("safe", 0);//是否保密消息.0否
            map.put("enable_id_trans", 0);//是否开启id转译.0否
@@ -312,7 +275,7 @@
                info.setCreateUser(userMapper.selectById(userId).getName());
                info.setMessageType("2");
                info.setTheme("审核通知");
                info.setContent("您有一条检验订单待审核消息,订单的外部编号是:"+insOrder.getOutEntrustCode());
                info.setContent("您有一条检验订单待审核消息,订单的外部编号是:" + insOrder.getOutEntrustCode());
                info.setSenderId(userId);
                info.setViewStatus(false);
                info.setJumpPath("b1-inspect-order");
@@ -346,7 +309,7 @@
                    if (!realpath.exists()) {
                        realpath.mkdirs();
                    }
                    pathName = UUID.randomUUID() + "_" + file.getOriginalFilename();
                    pathName = UUID.randomUUID() + "_" + file.getOriginalFilename().replace("#", "&");
                    urlString = realpath + "/" + pathName;
                    file.transferTo(new File(urlString));
                    insOrderFile.setFileUrl(pathName);
@@ -365,7 +328,7 @@
            map.put("msgtype", "text");//消息类型 text:文本
            map.put("agentid", 1000517);//应用id
            HashMap<String, Object> hashMap = new HashMap<>();
            hashMap.put("content", "您有一条订单需要完成,请前往LIMS系统查看。外部订单号是:"+insOrder.getOutEntrustCode()+",请前往LIMS系统查看。<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
            hashMap.put("content", "您有一条订单需要完成,请前往LIMS系统查看。外部订单号是:" + insOrder.getOutEntrustCode() + ",请前往LIMS系统查看。<a href=\"https://ztwxlims.ztt.cn:7443/enter\">中天通信LIMS系统 </a>");
            map.put("text", hashMap);//消息内容
            map.put("safe", 0);//是否保密消息.0否
            map.put("enable_id_trans", 0);//是否开启id转译.0否
@@ -377,7 +340,7 @@
            info.setCreateUser(insProductMapper.selectUserById(userId).get("name"));
            info.setMessageType("1");
            info.setTheme("样机员通知");
            info.setContent("您有一条检验订单的样机待完成消息,外部订单号是:"+insOrder.getOutEntrustCode()+",请前往LIMS系统查看。");
            info.setContent("您有一条检验订单的样机待完成消息,外部订单号是:" + insOrder.getOutEntrustCode() + ",请前往LIMS系统查看。");
            info.setSenderId(userId);
            info.setConsigneeId(insOrder.getIssueUser());
            info.setViewStatus(false);
@@ -479,49 +442,40 @@
    }
    @Override
    public Map<String, Object> getInsOrderAndSample(Integer id, String laboratory) {
    public Map<String, Object> getInsOrderAndSample(Integer sampleId, String laboratory) {
        InsSample insSample = insSampleMapper.selectById(sampleId);
        Map<String, Object> map = new HashMap<>();
        InsOrder insOrder = insOrderMapper.selectById2(id);
        List<SampleProductDto> insSamples = insSampleMapper.selectList1(insOrder.getId());
        List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory);
        InsOrder insOrder = insOrderMapper.selectById2(insSample.getInsOrderId());
        SampleProductDto sampleProductDto = insSampleMapper.getInsOrderAndSample(sampleId, laboratory);
        //再次试验会出现为空的情况
        if (list.size() != insSamples.size()) {
            List<Integer> ids = list.stream().map(sampleProductDto -> sampleProductDto.getId()).distinct().collect(Collectors.toList());
            List<SampleProductDto> samples = insSamples.stream().filter(insSample ->
                    !ids.contains(insSample.getId())
            ).collect(Collectors.toList());
            for (SampleProductDto insSample : samples) {
                List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                        .eq(InsProduct::getInsSampleId, insSample.getId())
                        .eq(InsProduct::getState, 1)
                        .eq(InsProduct::getSonLaboratory, laboratory));
                for (InsProduct insProduct : insProducts) {
                    List<InsProductResult2> insProductResult2List = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
                            .eq(InsProductResult2::getInsProductId, insProduct.getId()).isNull(InsProductResult2::getNum));
                    insProduct.setInsProductResult2(insProductResult2List);
                    InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery()
                            .eq(InsProductResult::getInsProductId, insProduct.getId()).isNull(InsProductResult::getNum));
                    insProduct.setInsProductResult(insProductResult);
                }
                insSample.setInsProduct(insProducts);
                list.add(insSample);
        if (ObjectUtils.isEmpty(sampleProductDto)) {
            List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                    .eq(InsProduct::getInsSampleId, insSample.getId())
                    .eq(InsProduct::getState, 1)
                    .eq(InsProduct::getSonLaboratory, laboratory));
            for (InsProduct insProduct : insProducts) {
                List<InsProductResult2> insProductResult2List = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
                        .eq(InsProductResult2::getInsProductId, insProduct.getId()).isNull(InsProductResult2::getNum));
                insProduct.setInsProductResult2(insProductResult2List);
                InsProductResult insProductResult = insProductResultMapper.selectOne(Wrappers.<InsProductResult>lambdaQuery()
                        .eq(InsProductResult::getInsProductId, insProduct.getId()).isNull(InsProductResult::getNum));
                insProduct.setInsProductResult(insProductResult);
            }
            BeanUtils.copyProperties(insSample,sampleProductDto);
            sampleProductDto.setInsProduct(insProducts);
        }
        for (SampleProductDto sampleProductDto : list) {
            List<Integer> ids = sampleProductDto.getInsProduct().stream().map(InsProduct::getId).collect(Collectors.toList());
            List<InsProductUser> insProductUsers = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery()
                    .in(InsProductUser::getInsProductId, ids));
            if (CollectionUtils.isNotEmpty(insProductUsers)) {
                List<Integer> userIds = insProductUsers.stream().map(InsProductUser::getCreateUser).distinct().collect(Collectors.toList());
                String collect = userMapper.selectBatchIds(userIds).stream().map(User::getName).collect(Collectors.joining(","));
                sampleProductDto.setCheckName(collect);
            }
        List<Integer> ids = sampleProductDto.getInsProduct().stream().map(InsProduct::getId).collect(Collectors.toList());
        List<InsProductUser> insProductUsers = insProductUserMapper.selectList(Wrappers.<InsProductUser>lambdaQuery()
                .in(InsProductUser::getInsProductId, ids));
        if (CollectionUtils.isNotEmpty(insProductUsers)) {
            List<Integer> userIds = insProductUsers.stream().map(InsProductUser::getCreateUser).distinct().collect(Collectors.toList());
            String collect = userMapper.selectBatchIds(userIds).stream().map(User::getName).collect(Collectors.joining(","));
            sampleProductDto.setCheckName(collect);
        }
        map.put("insOrder", insOrder);
        map.put("sampleProduct", list);
        map.put("sampleProduct", sampleProductDto);
        //查询所有记录模版去重
        List<Map<Integer, Object>> list2 = insOrderMapper.selectReportModelByOrderId(id, laboratory);
        List<Map<Integer, Object>> list2 = insOrderMapper.selectReportModelByOrderId(insSample.getInsOrderId(), laboratory);
        map.put("reportModel", list2);
        return map;
    }
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsReportServiceImpl.java
@@ -26,10 +26,7 @@
import com.itextpdf.text.pdf.PdfStamper;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.InsReportDto;
import com.yuanchu.mom.dto.InsReportDto1;
import com.yuanchu.mom.dto.ReportPageDto;
import com.yuanchu.mom.dto.SampleProductDto;
import com.yuanchu.mom.dto.*;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.*;
import com.yuanchu.mom.pojo.*;
@@ -139,19 +136,7 @@
        map.put("head", PrintChina.printChina(ReportPageDto.class));
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("pageInsReport");
        if (map1.get("look") == 1) reportPageDto.setCreateUser(map1.get("userId"));
        User user = userMapper.selectById(map1.get("userId"));//当前登录的人
        //获取当前人所属实验室id
        String departLimsId = user.getDepartLimsId();
        String laboratory = null;
        if (ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.equals("")) {
            String[] split = departLimsId.split(",");
            //查询对应架构名称(通信实验室,电力实验室,检测办)
            String departLims = insOrderMapper.seldepLimsId(Integer.parseInt(split[split.length - 1]));
            if (departLims.contains("实验室")) {
                laboratory = departLims;
            }
        }
        map.put("body", insReportMapper.pageInsReport(page, QueryWrappers.queryWrappers(reportPageDto), laboratory));
        map.put("body", insReportMapper.pageInsReport(page, QueryWrappers.queryWrappers(reportPageDto)));
        return map;
    }
@@ -333,7 +318,6 @@
            if (files != null) {
                for (File f : files) {
                    // æ ¹æ®æ–‡ä»¶åæŸ¥è¯¢id
                    String name = f.getName();
                    InsReport insReport = insReportMapper.selectOne(Wrappers.<InsReport>lambdaQuery().like(InsReport::getCode, f.getName().replace(".docx", "")));
                    if (ObjectUtils.isEmpty(insReport)) {
                        throw new ErrorException("没有找到 " + f.getName() + " è¿™ä¸ªæ–‡ä»¶å¯¹åº”的报告数据");
@@ -374,30 +358,37 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int isReport(InsReportDto insReportDto) {
        //先判断该订单是否可以去生产报告
        Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery().eq(InsOrderState::getInsOrderId, insReportDto.getId()).eq(InsOrderState::getInsState, 5));
        //先判断该订单是否可以去生产报告(是否结束试验)
        Long count = insOrderStateMapper.selectCount(Wrappers.<InsOrderState>lambdaQuery()
                .eq(InsOrderState::getInsOrderId, insReportDto.getId()).eq(InsOrderState::getInsState, 5));
        if (count > 0) {
            if (insReportDto.getState() == 1) {
                List<InsReportDto1> insReportDto1s = insReportDto.getInsReportDto1s();
                wordUtils.generateReport(insReportDto.getId(), insReportDto1s);
                for (InsReportDto1 insReportDto1 : insReportDto1s) {
                    wordUtils.generateReport(insReportDto.getId(), insReportDto1);
                }
            } else {
                //结束订单
                InsOrder insOrder = new InsOrder();
                insOrder.setId(insReportDto.getId());
                insOrder.setState(4);
                insOrderMapper.updateById(insOrder);
               //如果不生成就一直挂着
            }
        } else {
            throw new ErrorException("该订单还未结束试验,无法生产报告!");
            throw new ErrorException("该订单还未结束试验,无法生成报告!");
        }
        return 0;
    }
    //查出该订单下每个站点下的检验次数
    @Override
    public List<InsOrderState> getInsOrderStateCount(Integer id) {
        List<InsOrderState> insOrderStates = insOrderStateMapper.getInsOrderStateCount(id);
        return insOrderStates;
    public List<InsOrderStateDto> getInsOrderStateCount(Integer id) {
        List<InsOrderStateDto> insOrderStateDtos = new ArrayList<>();
        List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, id));
        for (InsSample insSample : insSamples) {
            InsOrderStateDto insOrderStateDto = new InsOrderStateDto();
            insOrderStateDto.setInsSample(insSample);
            List<InsOrderState> insOrderStates = insOrderStateMapper.getInsOrderStateCount(id, insSample.getId());
            insOrderStateDto.setInsOrderStates(insOrderStates);
            insOrderStateDtos.add(insOrderStateDto);
        }
        return insOrderStateDtos;
    }
inspect-server/src/main/java/com/yuanchu/mom/utils/FuSheUtils.java
@@ -1,5 +1,6 @@
package com.yuanchu.mom.utils;
import cn.hutool.core.lang.UUID;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.config.ConfigureBuilder;
@@ -11,8 +12,10 @@
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.InsOrderFileMapper;
import com.yuanchu.mom.mapper.InsOrderMapper;
import com.yuanchu.mom.mapper.InsSampleMapper;
import com.yuanchu.mom.pojo.InsOrder;
import com.yuanchu.mom.pojo.InsOrderFile;
import com.yuanchu.mom.pojo.InsSample;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.openxml4j.util.ZipSecureFile;
@@ -43,6 +46,9 @@
    @Resource
    InsOrderMapper insOrderMapper;
    @Resource
    InsSampleMapper insSampleMapper;
    public void getFuSheWord1(String sonLaboratory, InsOrderFile insOrderFile) {
        //读取excel文件内容
@@ -85,8 +91,7 @@
                                    default:
                                        System.out.print("NULL\t");
                                }
                            }
                            else {
                            } else {
                                switch (cell.getCellType()) {
                                    case STRING:
                                        if (StringUtils.isNotEmpty(s)) {
@@ -199,8 +204,8 @@
        HashMap<String, Object> map2 = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<>();
        XWPFDocument document = new XWPFDocument();
        String jiaodu="";
        String port="";
        String jiaodu = "";
        String port = "";
        try (CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(excelFilePath), fileEncoding))) {
            List<String[]> records = reader.readAll();
            for (int i = 0; i < records.size(); i++) {
@@ -211,13 +216,13 @@
                for (int i1 = 0; i1 < record.length; i1++) {
                    String value = record[i1];
                    if (i == 0) {
                        project.put(i1,value);
                        project.put(i1, value);
                    }
                    if (i == 1) {
                        biaozhun.put(project.get(i1).toString(),value);
                        biaozhun.put(project.get(i1).toString(), value);
                    }
                    if (i>2) {
                        if (i1==0&&StringUtils.isNotEmpty(value)) {
                    if (i > 2) {
                        if (i1 == 0 && StringUtils.isNotEmpty(value)) {
                            if (map2.size() != 0) {
                                map2.put(port, list);
@@ -225,16 +230,16 @@
                                map2 = new HashMap<>();
                            }
                            datas1.put(value, "");
                            jiaodu=value;
                            jiaodu = value;
                        } else if (i1 == 1 && StringUtils.isNotEmpty(value)) {
                            if (list.size() != 0) {
                                map2.put(port, list);
                                list = new ArrayList<>();
                            }
                            map2.put(value, "");
                            port=value;
                            port = value;
                        } else if (StringUtils.isNotEmpty(value)) {
                            if (value.equals("最大值")||value.equals("最小值")||value.equals("指标")||value.equals("类别")) {
                            if (value.equals("最大值") || value.equals("最小值") || value.equals("指标") || value.equals("类别")) {
                                break;
                            } else if (value.equals("平均值")) {
                                for (int i2 = 0; i2 < record.length; i2++) {
@@ -242,24 +247,24 @@
                                    if (value1.equals("平均值")) {
                                        continue;
                                    }
                                    pingjun.put(project.get(i2).toString(),value1);
                                    pingjun.put(project.get(i2).toString(), value1);
                                }
                                break;
                            }
                            map1.put(project.get(i1).toString(),value);
                            map1.put(project.get(i1).toString(), value);
                        }
                    }
                    System.out.print(value + " ");
                }
                if (map1.size()!=0) {
                if (map1.size() != 0) {
                    list.add(map1);
                }
                if (pingjun.size()!=0) {
                    pingjunzhi.put(jiaodu,pingjun);
                if (pingjun.size() != 0) {
                    pingjunzhi.put(jiaodu, pingjun);
                }
                if (i==records.size()-1) {
                    map2.put(port,list);
                    datas1.put(jiaodu,map2);
                if (i == records.size() - 1) {
                    map2.put(port, list);
                    datas1.put(jiaodu, map2);
                }
                System.out.println();
            }
@@ -274,23 +279,23 @@
        HashMap<String, Object> map = new HashMap<>();
        for (String s : datas1.keySet()) {
            Map<String, List<HashMap<String,Object>>> numbers = (Map<String, List<HashMap<String,Object>>>) datas1.get(s);
            Map<String, List<HashMap<String, Object>>> numbers = (Map<String, List<HashMap<String, Object>>>) datas1.get(s);
            for (String s1 : numbers.keySet()) {
                List<HashMap<String, Object>> hashMaps = numbers.get(s1);
                List<Integer> floatList = new ArrayList<>();
                for (Map<String, Object> number : hashMaps) {
                    number.put("端口", s1);
                    floatList.add( Integer.parseInt((String) number.get("测试频率(MHZ)")));
                    floatList.add(Integer.parseInt((String) number.get("测试频率(MHZ)")));
                }
                Integer maxValue = Collections.max(floatList);
                Integer minValue = Collections.min(floatList);
                if (map.get(minValue + "-" + maxValue+"-"+s) == null) {
                    map.put(minValue + "-" + maxValue+"-"+s, s1);
                if (map.get(minValue + "-" + maxValue + "-" + s) == null) {
                    map.put(minValue + "-" + maxValue + "-" + s, s1);
                } else {
                    Object o = map.get(minValue + "-" + maxValue+"-"+s);
                    map.put(minValue + "-" + maxValue+"-"+s, s1 + "," + o);
                    Object o = map.get(minValue + "-" + maxValue + "-" + s);
                    map.put(minValue + "-" + maxValue + "-" + s, s1 + "," + o);
                }
            }
@@ -305,9 +310,9 @@
            int size1 = -1;
            for (String s : datas1.keySet()) {
                Map<String, List<HashMap<String,Object>>> o1 = (Map<String, List<HashMap<String,Object>>>)datas1.get(s);
                Map<String, List<HashMap<String, Object>>> o1 = (Map<String, List<HashMap<String, Object>>>) datas1.get(s);
                for (String s3 : o1.keySet()) {
                    List<HashMap<String, Object>> numbers =  o1.get(s3);
                    List<HashMap<String, Object>> numbers = o1.get(s3);
                    for (String s2 : collect) {
                        if (s3.equals(s2)) {
                            if (numbers.size() > size1) {
@@ -323,7 +328,7 @@
        System.out.println(map);
        try {
            createWord2(sonLaboratory,document,exceldata, map,pingjunzhi,biaozhun,insOrderFile);
            createWord2(sonLaboratory, document, exceldata, map, pingjunzhi, biaozhun, insOrderFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
@@ -518,24 +523,25 @@
                paragraph11.setAlignment(ParagraphAlignment.CENTER);
                XWPFRun run11 = paragraph11.createRun();
                double v = count / (Double.parseDouble(s1.toString()) * Double.parseDouble(i1.toString()));
                run11.setText(String.format("%.2f",v));
                run11.setText(String.format("%.2f", v));
                size++;
            }
        }
        // è¾“出到文件
        try {
            InsOrder insOrder = insOrderMapper.selectById(insOrderFile.getInsOrderId());
            InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId());
            String[] split = insOrderFile.getFileName().split("\\.");
            String name = insOrderFile.getFileName().substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
            FileOutputStream out = new FileOutputStream(wordUrl + "/" + insOrder.getEntrustCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            FileOutputStream out = new FileOutputStream(wordUrl + "/" + UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            document.write(out);
            out.close();
            document.close();
            InsOrderFile orderFile = new InsOrderFile();
            orderFile.setInsOrderId(insOrderFile.getInsOrderId());
            orderFile.setFileUrl(insOrder.getEntrustCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            orderFile.setInsSampleId(insOrderFile.getInsSampleId());
            orderFile.setFileUrl(UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            orderFile.setType(2);
            orderFile.setFileName(insOrder.getEntrustCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            orderFile.setFileName(insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            orderFile.setSonLaboratory(sonLaboratory);
            insOrderFileMapper.insert(orderFile);
        } catch (IOException e) {
@@ -543,19 +549,19 @@
        }
    }
    public void createWord2(String sonLaboratory,XWPFDocument document,Exceldata exceldata, HashMap<String, Object> map,HashMap<String,Object> pj,HashMap<String,Object> bz,InsOrderFile insOrderFile) throws IOException {
    public void createWord2(String sonLaboratory, XWPFDocument document, Exceldata exceldata, HashMap<String, Object> map, HashMap<String, Object> pj, HashMap<String, Object> bz, InsOrderFile insOrderFile) throws IOException {
        int size = 1;
        for (String s : map.keySet()) {
            Map<String, Object> dataRow = exceldata.getDataRow();
            String result = s.substring(s.lastIndexOf("-") + 1);
            String result1 = s.substring(0,s.lastIndexOf("-"));
            String result1 = s.substring(0, s.lastIndexOf("-"));
            String o = map.get(s).toString();
            String[] split = o.split(",");
            Integer s1 = Integer.parseInt(split[split.length - 1]);
            Integer i1 = split.length - 1;
            int row = 3 + s1;
            int cell = 6 + i1;
            HashMap<String,Object> o2 =(HashMap<String,Object>) pj.get(result);
            HashMap<String, Object> o2 = (HashMap<String, Object>) pj.get(result);
            XWPFTable table1 = document.createTable(2, cell);
@@ -578,7 +584,7 @@
            XWPFRun run15 = paragraph15.createRun();
            run15.setText("标准要求");
            XWPFParagraph paragraph16 = table1.getRow(0).getCell(cell-1).getParagraphArray(0);
            XWPFParagraph paragraph16 = table1.getRow(0).getCell(cell - 1).getParagraphArray(0);
            XWPFRun run16 = paragraph16.createRun();
            run16.setText("检验结论");
@@ -588,8 +594,7 @@
            XWPFParagraph paragraph18 = table1.getRow(1).getCell(0).getParagraphArray(0);
            XWPFRun run18 = paragraph18.createRun();
            run18.setText("频段: "+result1+"MHz "+"下倾角"+result);
            run18.setText("频段: " + result1 + "MHz " + "下倾角" + result);
            List<String> collect = Arrays.stream(split).collect(Collectors.toList());
@@ -604,7 +609,7 @@
            Map<String, List<Map<String, Object>>> o1 = (Map<String, List<Map<String, Object>>>) dataRow.get(result);
            for (String s2 : collect) {
                if (s2.contains("端口")||s2.contains("P")) {
                if (s2.contains("端口") || s2.contains("P")) {
                    List<Map<String, Object>> mapList = o1.get(s2);
                    list.addAll(mapList);
                }
@@ -622,7 +627,7 @@
            for (String s2 : aggregatedMap.keySet()) {
                if (s2.equals("端口")||s2.equals("测试频率(MHZ)")) {
                if (s2.equals("端口") || s2.equals("测试频率(MHZ)")) {
                    continue;
                }
                List<Map<String, Object>> mapList = aggregatedMap.get(s2);
@@ -672,7 +677,6 @@
                }
                XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0);
                XWPFRun run3 = paragraph3.createRun();
                run3.setText(bz.get(s2).toString());
@@ -704,7 +708,7 @@
                for (int i = 0; i < collect.size(); i++) {
                    String s3 = collect.get(i);
                    if (s3.contains("端口")||s3.contains("P")) {
                    if (s3.contains("端口") || s3.contains("P")) {
                        XWPFParagraph paragraph10 = table.getRow(1).getCell(5 + i).getParagraphArray(0);
                        XWPFRun run10 = paragraph10.createRun();
                        run10.setText(s3);
@@ -712,7 +716,7 @@
                }
                Map<Integer, List<Map<String, Object>>> group = mapList.stream()
                        .collect(Collectors.groupingBy(item -> Integer.parseInt(item.get("测试频率(MHZ)").toString()) ));
                        .collect(Collectors.groupingBy(item -> Integer.parseInt(item.get("测试频率(MHZ)").toString())));
                int hang = 2;
@@ -726,7 +730,7 @@
                            if (text.equals(port)) {
                                XWPFParagraph paragraph10 = table.getRow(hang).getCell(i).getParagraphArray(0);
                                XWPFRun run10 = paragraph10.createRun();
                                count=Double.parseDouble(stringObjectMap.get(s2).toString())+count;
                                count = Double.parseDouble(stringObjectMap.get(s2).toString()) + count;
                                String project = stringObjectMap.get(s2).toString();
                                run10.setText(project);
                            }
@@ -740,7 +744,7 @@
                    hang++;
                }
                XWPFParagraph paragraph11 = table.getRow(row-1).getCell(5).getParagraphArray(0);
                XWPFParagraph paragraph11 = table.getRow(row - 1).getCell(5).getParagraphArray(0);
                XWPFRun run11 = paragraph11.createRun();
                double v = count / (Double.parseDouble(s1.toString()) * Double.parseDouble(i1.toString()));
                run11.setText(o2.get(s2).toString());
@@ -752,18 +756,19 @@
        // è¾“出到文件
        try {
            InsOrder insOrder = insOrderMapper.selectById(insOrderFile.getInsOrderId());
            InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId());
            String[] split = insOrderFile.getFileName().split("\\.");
            String name = insOrderFile.getFileName().replace("#","&").substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
            FileOutputStream out = new FileOutputStream(wordUrl + "/" + insOrder.getEntrustCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            String name = insOrderFile.getFileName().replace("#", "&").substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length()));
            FileOutputStream out = new FileOutputStream(wordUrl + "/" + UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            document.write(out);
            out.close();
            document.close();
            InsOrderFile orderFile = new InsOrderFile();
            orderFile.setInsOrderId(insOrderFile.getInsOrderId());
            orderFile.setFileUrl(insOrder.getEntrustCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            orderFile.setInsSampleId(insOrderFile.getInsSampleId());
            orderFile.setFileUrl(UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            orderFile.setType(2);
            orderFile.setFileName(insOrder.getEntrustCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            orderFile.setFileName(insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx");
            orderFile.setSonLaboratory(sonLaboratory);
            insOrderFileMapper.insert(orderFile);
        } catch (IOException e) {
inspect-server/src/main/java/com/yuanchu/mom/utils/WordUtils.java
@@ -1,5 +1,6 @@
package com.yuanchu.mom.utils;
import cn.hutool.core.lang.UUID;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -12,6 +13,7 @@
import com.deepoove.poi.data.style.*;
import com.deepoove.poi.util.TableTools;
import com.yuanchu.mom.dto.InsReportDto1;
import com.yuanchu.mom.dto.InsReportDto2;
import com.yuanchu.mom.dto.SampleProductDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.*;
@@ -88,6 +90,9 @@
    @Resource
    InsSampleUserMapper insSampleUserMapper;
    @Resource
    GiveCode giveCode;
    //生成站点电路试验报告
    public void generateWord(String term, InsOrderState insOrderState) {
@@ -97,255 +102,635 @@
        List<Map<String, Object>> tables = new ArrayList<>();
        //查询订单
        InsOrder insOrder = insOrderMapper.selectById(insOrderState.getInsOrderId());
        //查询且过滤出有电路试验的样品
        List<InsSample> insSamples = insSampleMapper.selectSample(insOrderState.getInsOrderId());
        insSamples.forEach(insSample -> {
            //查询项目
            List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                    .eq(InsProduct::getInsSampleId, insSample.getId())
                    .eq(InsProduct::getSonLaboratory, "电路试验"));
            //获取最大端口数量,角度数量,频段数量
            List<InsProductResult2> insProductResult2s = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
                    .eq(InsProductResult2::getNum, insOrderState.getNum())
                    .in(InsProductResult2::getInsProductId, insProducts.stream().map(InsProduct::getId).collect(Collectors.toList())));
            //按照频段分表(查询所有频段)
            List<String> frequencys = insProductResult2s.stream().map(InsProductResult2::getFrequency).distinct().collect(Collectors.toList());
            frequencys.forEach(s -> {
                int ports = 0;//端口数
                int angles = 0;//角度数
                for (InsProductResult2 insProductResult2 : insProductResult2s) {
                    if (insProductMapper.selectById(insProductResult2.getInsProductId()).getInspectionItemSubclass().equals("电压驻波比") && insProductResult2.getPort().split(",").length > ports) {
                        ports = insProductResult2.getPort().split(",").length;
                    }
                    if (insProductResult2.getAngle().split(",").length > angles) {
                        angles = insProductResult2.getAngle().split(",").length;
                    }
        //查询样品
        InsSample insSample = insSampleMapper.selectById(insOrderState.getInsSampleId());
        //查询项目
        List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getInsSampleId, insSample.getId())
                .eq(InsProduct::getSonLaboratory, "电路试验"));
        //获取最大端口数量,角度数量,频段数量
        List<InsProductResult2> insProductResult2s = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
                .eq(InsProductResult2::getNum, insOrderState.getNum())
                .in(InsProductResult2::getInsProductId, insProducts.stream().map(InsProduct::getId).collect(Collectors.toList())));
        //按照频段分表(查询所有频段)
        List<String> frequencys = insProductResult2s.stream().map(InsProductResult2::getFrequency).distinct().collect(Collectors.toList());
        frequencys.forEach(s -> {
            int ports = 0;//端口数
            int angles = 0;//角度数
            for (InsProductResult2 insProductResult2 : insProductResult2s) {
                if (insProductMapper.selectById(insProductResult2.getInsProductId()).getInspectionItemSubclass().equals("电压驻波比") && insProductResult2.getPort().split(",").length > ports) {
                    ports = insProductResult2.getPort().split(",").length;
                }
                //频点数
                long often = insProductResult2s.stream().filter(insProductResult2 -> insProductResult2.getFrequency().equals(s))
                        .filter(insProductResult2 ->
                                insProductMapper.selectById(insProductResult2.getInsProductId()).getInspectionItemSubclass().equals("互调")
                        ).filter(insProductResult2 -> ObjectUtils.isNotEmpty(insProductResult2.getOften())).distinct().count();
                List<String> inspectionItemSubclass = insProducts.stream().map(InsProduct::getInspectionItemSubclass).collect(Collectors.toList());
                //行数
                int aa = 0;
                int portRow = ports % 8 == 0 ? ports / 8 : ports / 8 + 1;
                //先判断是1简单版还是0复杂版
                if (insOrderState.getVersion() == 1) {
                    if (inspectionItemSubclass.contains("电压驻波比")) {
                        aa += 2 * portRow;
                    }
                    if (inspectionItemSubclass.contains("同极化隔离度")) {
                        aa += 1 * portRow;
                    }
                    if (inspectionItemSubclass.contains("异极化隔离度")) {
                        aa += 1 * portRow;
                    }
                    if (inspectionItemSubclass.contains("互调")) {
                        aa += (angles + 1) * portRow * often;
                    }
                } else {
                    if (inspectionItemSubclass.contains("电压驻波比")) {
                        aa += (angles + 1) * portRow;
                    }
                    if (inspectionItemSubclass.contains("同极化隔离度")) {
                        List<InsProductResult2> result2s = insProductResult2s.stream().filter(insProductResult2 ->
                                insProductMapper.selectById(insProductResult2.getInsProductId())
                                        .getInspectionItemSubclass().equals("同极化隔离度")
                        ).collect(Collectors.toList());
                        int length = result2s.get(0).getPort().split(",").length;
                        aa += (angles + 1) * (length % (ports > 8 ? 4 : (ports + 1) / 2) == 0 ? length / (ports > 8 ? 4 : (ports + 1) / 2) : length / (ports > 8 ? 4 : (ports + 1) / 2) + 1);
                    }
                    if (inspectionItemSubclass.contains("异极化隔离度")) {
                        List<InsProductResult2> result2s = insProductResult2s.stream().filter(insProductResult2 ->
                                insProductMapper.selectById(insProductResult2.getInsProductId())
                                        .getInspectionItemSubclass().equals("异极化隔离度")
                        ).collect(Collectors.toList());
                        int length = result2s.get(0).getPort().split(",").length;
                        aa += (angles + 1) * (length % (ports > 8 ? 4 : (ports + 1) / 2) == 0 ? length / (ports > 8 ? 4 : (ports + 1) / 2) : length / (ports > 8 ? 4 : (ports + 1) / 2) + 1);
                    }
                    if (inspectionItemSubclass.contains("互调")) {
                        aa += (angles + 1) * portRow * often;
                    }
                    if (inspectionItemSubclass.contains("最大耦合度")) {
                        aa += (angles + 1);
                    }
                    if (inspectionItemSubclass.contains("最小耦合度")) {
                        aa += (angles + 1);
                    }
                    if (inspectionItemSubclass.contains("幅度偏差")) {
                        List<InsProductResult2> result2s = insProductResult2s.stream().filter(insProductResult2 ->
                                insProductMapper.selectById(insProductResult2.getInsProductId())
                                        .getInspectionItemSubclass().equals("幅度偏差")
                        ).collect(Collectors.toList());
                        int length = result2s.get(0).getPort().split(",").length;
                        aa += (angles + 1) * (length % 8 == 0 ? length / 8 : length / 8 + 1);
                    }
                    if (inspectionItemSubclass.contains("最大相位偏差")) {
                        List<InsProductResult2> result2s = insProductResult2s.stream().filter(insProductResult2 ->
                                insProductMapper.selectById(insProductResult2.getInsProductId())
                                        .getInspectionItemSubclass().equals("最大相位偏差")
                        ).collect(Collectors.toList());
                        int length = result2s.get(0).getPort().split(",").length;
                        aa += (angles + 1) * (length % 8 == 0 ? length / 8 : length / 8 + 1);
                    }
                if (insProductResult2.getAngle().split(",").length > angles) {
                    angles = insProductResult2.getAngle().split(",").length;
                }
                List<RowRenderData> rows = new ArrayList<>();
                Set<String> itemSet = new HashSet<>();
                int cc = 0;
                int dd = 0;
                int ee = 0;
                int ff = 0;
                int gg = 0;
                int hh = 0;
                int mm = 0;
                //表格的行数
                for (int i = 0; i <= aa; i++) {
                    RowRenderData rowRenderData = new RowRenderData();
                    RowStyle rowStyle = new RowStyle();
                    rowStyle.setHeight(40);
                    rowRenderData.setRowStyle(rowStyle);
                    List<CellRenderData> cells = new ArrayList<>();
                    //表格的列数
                    int bb = ports > 8 ? 14 : ports + 6;
                    for (int j = 0; j < bb; j++) {
                        CellRenderData cellRenderData = new CellRenderData();
                        CellStyle cellStyle = new CellStyle();
                        cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                        cellRenderData.setCellStyle(cellStyle);
                        List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                        ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                        ParagraphStyle paragraphStyle = new ParagraphStyle();
                        paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                        paragraphRenderData.setParagraphStyle(paragraphStyle);
                        List<RenderData> renderData = new ArrayList<>();
                        TextRenderData textRenderData = new TextRenderData();
                        Style style = new Style();
                        style.setFontFamily("宋体");
                        style.setColor("000000");
                        textRenderData.setStyle(style);
                        if (i == 0) {
                            //第一行
                            textRenderData.setText("频段:" + s + "∑0" + lable);
                            renderData.add(textRenderData);
                            paragraphRenderData.setContents(renderData);
                            paragraphRenderDataList.add(paragraphRenderData);
                            cellRenderData.setParagraphs(paragraphRenderDataList);
                            cells.add(cellRenderData);
                        } else {
                            if (insOrderState.getVersion() == 1) {
                                //非电调版本(简单版)
                                if (inspectionItemSubclass.contains("电压驻波比") && i <= 2 * portRow) {
                                    cc = 2 * portRow;
                                    if (itemSet.add("电压驻波比")) {
                                        index.getAndIncrement();
                                    }
                                    List<InsProduct> products = insProducts.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("电压驻波比")).collect(Collectors.toList());
                                    List<InsProductResult2> result2s = insProductResult2s.stream()
                                            .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                            .collect(Collectors.toList());
                                    //电压驻波比所在行
                                    if (j == 0) {
                                        //第一列
                                        textRenderData.setText(index + "∑1" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 1) {
                                        //第二列
                                        textRenderData.setText("电压驻波比∑2" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 2) {
                                        //第三列
                                        textRenderData.setText(products.get(0).getUnit() + "∑3" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 3) {
                                        //第四列
                                        textRenderData.setText(products.get(0).getAsk() + "∑4" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 4) {
                                        //第五列
                                        if (i % 2 == 0) {
                                            //最差值
                                            textRenderData.setText("最差值");
                                        } else {
                                            //端口
                                            textRenderData.setText("端口");
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == bb - 1) {
                                        //最后一列
                                        if (i % 2 == 0) {
                                            //结论
                                            if (products.get(0).getInsResult() == 1) {
                                                textRenderData.setText("合格");
                                            } else if (products.get(0).getInsResult() == 0) {
                                                textRenderData.setText("不合格");
                                            } else {
                                                textRenderData.setText("不判定");
                                            }
                                        } else {
                                            textRenderData.setText("/");
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else {
                                        //其余列
                                        if (i % 2 == 0) {
                                            //最差值
                                            String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", "");
                                            try {
                                                textRenderData.setText(value.split(",")[(j - 5) + (i - 1) / 2 * (Math.min(ports, 8))]);
                                            } catch (Exception e) {
                                                textRenderData.setText("");
                                            }
                                        } else {
                                            //端口
                                            try {
                                                textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) + (i / 2) * (Math.min(ports, 8))]);
                                            } catch (Exception e) {
                                                textRenderData.setText("");
                                            }
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    }
            }
            //频点数
            long often = insProductResult2s.stream().filter(insProductResult2 -> insProductResult2.getFrequency().equals(s))
                    .filter(insProductResult2 ->
                            insProductMapper.selectById(insProductResult2.getInsProductId()).getInspectionItemSubclass().equals("互调")
                    ).filter(insProductResult2 -> ObjectUtils.isNotEmpty(insProductResult2.getOften())).distinct().count();
            List<String> inspectionItemSubclass = insProducts.stream().map(InsProduct::getInspectionItemSubclass).collect(Collectors.toList());
            //行数
            int aa = 0;
            int portRow = ports % 8 == 0 ? ports / 8 : ports / 8 + 1;
            //先判断是1简单版还是0复杂版
            if (insOrderState.getVersion() == 1) {
                if (inspectionItemSubclass.contains("电压驻波比")) {
                    aa += 2 * portRow;
                }
                if (inspectionItemSubclass.contains("同极化隔离度")) {
                    aa += 1 * portRow;
                }
                if (inspectionItemSubclass.contains("异极化隔离度")) {
                    aa += 1 * portRow;
                }
                if (inspectionItemSubclass.contains("互调")) {
                    aa += (angles + 1) * portRow * often;
                }
            } else {
                if (inspectionItemSubclass.contains("电压驻波比")) {
                    aa += (angles + 1) * portRow;
                }
                if (inspectionItemSubclass.contains("同极化隔离度")) {
                    List<InsProductResult2> result2s = insProductResult2s.stream().filter(insProductResult2 ->
                            insProductMapper.selectById(insProductResult2.getInsProductId())
                                    .getInspectionItemSubclass().equals("同极化隔离度")
                    ).collect(Collectors.toList());
                    int length = result2s.get(0).getPort().split(",").length;
                    aa += (angles + 1) * (length % (ports > 8 ? 4 : (ports + 1) / 2) == 0 ? length / (ports > 8 ? 4 : (ports + 1) / 2) : length / (ports > 8 ? 4 : (ports + 1) / 2) + 1);
                }
                if (inspectionItemSubclass.contains("异极化隔离度")) {
                    List<InsProductResult2> result2s = insProductResult2s.stream().filter(insProductResult2 ->
                            insProductMapper.selectById(insProductResult2.getInsProductId())
                                    .getInspectionItemSubclass().equals("异极化隔离度")
                    ).collect(Collectors.toList());
                    int length = result2s.get(0).getPort().split(",").length;
                    aa += (angles + 1) * (length % (ports > 8 ? 4 : (ports + 1) / 2) == 0 ? length / (ports > 8 ? 4 : (ports + 1) / 2) : length / (ports > 8 ? 4 : (ports + 1) / 2) + 1);
                }
                if (inspectionItemSubclass.contains("互调")) {
                    aa += (angles + 1) * portRow * often;
                }
                if (inspectionItemSubclass.contains("最大耦合度")) {
                    aa += (angles + 1);
                }
                if (inspectionItemSubclass.contains("最小耦合度")) {
                    aa += (angles + 1);
                }
                if (inspectionItemSubclass.contains("幅度偏差")) {
                    List<InsProductResult2> result2s = insProductResult2s.stream().filter(insProductResult2 ->
                            insProductMapper.selectById(insProductResult2.getInsProductId())
                                    .getInspectionItemSubclass().equals("幅度偏差")
                    ).collect(Collectors.toList());
                    int length = result2s.get(0).getPort().split(",").length;
                    aa += (angles + 1) * (length % 8 == 0 ? length / 8 : length / 8 + 1);
                }
                if (inspectionItemSubclass.contains("最大相位偏差")) {
                    List<InsProductResult2> result2s = insProductResult2s.stream().filter(insProductResult2 ->
                            insProductMapper.selectById(insProductResult2.getInsProductId())
                                    .getInspectionItemSubclass().equals("最大相位偏差")
                    ).collect(Collectors.toList());
                    int length = result2s.get(0).getPort().split(",").length;
                    aa += (angles + 1) * (length % 8 == 0 ? length / 8 : length / 8 + 1);
                }
            }
            List<RowRenderData> rows = new ArrayList<>();
            Set<String> itemSet = new HashSet<>();
            int cc = 0;
            int dd = 0;
            int ee = 0;
            int ff = 0;
            int gg = 0;
            int hh = 0;
            int mm = 0;
            //表格的行数
            for (int i = 0; i <= aa; i++) {
                RowRenderData rowRenderData = new RowRenderData();
                RowStyle rowStyle = new RowStyle();
                rowStyle.setHeight(40);
                rowRenderData.setRowStyle(rowStyle);
                List<CellRenderData> cells = new ArrayList<>();
                //表格的列数
                int bb = ports > 8 ? 14 : ports + 6;
                for (int j = 0; j < bb; j++) {
                    CellRenderData cellRenderData = new CellRenderData();
                    CellStyle cellStyle = new CellStyle();
                    cellStyle.setVertAlign(XWPFTableCell.XWPFVertAlign.CENTER);
                    cellRenderData.setCellStyle(cellStyle);
                    List<ParagraphRenderData> paragraphRenderDataList = new ArrayList<>();
                    ParagraphRenderData paragraphRenderData = new ParagraphRenderData();
                    ParagraphStyle paragraphStyle = new ParagraphStyle();
                    paragraphStyle.setAlign(ParagraphAlignment.CENTER);
                    paragraphRenderData.setParagraphStyle(paragraphStyle);
                    List<RenderData> renderData = new ArrayList<>();
                    TextRenderData textRenderData = new TextRenderData();
                    Style style = new Style();
                    style.setFontFamily("宋体");
                    style.setColor("000000");
                    textRenderData.setStyle(style);
                    if (i == 0) {
                        //第一行
                        textRenderData.setText("频段:" + s + "∑0" + lable);
                        renderData.add(textRenderData);
                        paragraphRenderData.setContents(renderData);
                        paragraphRenderDataList.add(paragraphRenderData);
                        cellRenderData.setParagraphs(paragraphRenderDataList);
                        cells.add(cellRenderData);
                    } else {
                        if (insOrderState.getVersion() == 1) {
                            //非电调版本(简单版)
                            if (inspectionItemSubclass.contains("电压驻波比") && i <= 2 * portRow) {
                                cc = 2 * portRow;
                                if (itemSet.add("电压驻波比")) {
                                    index.getAndIncrement();
                                }
                                if (inspectionItemSubclass.contains("同极化隔离度") && i > cc && i <= cc + portRow) {
                                    dd = cc + portRow;
                                List<InsProduct> products = insProducts.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("电压驻波比")).collect(Collectors.toList());
                                List<InsProductResult2> result2s = insProductResult2s.stream()
                                        .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                        .collect(Collectors.toList());
                                //电压驻波比所在行
                                if (j == 0) {
                                    //第一列
                                    textRenderData.setText(index + "∑1" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 1) {
                                    //第二列
                                    textRenderData.setText("电压驻波比∑2" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 2) {
                                    //第三列
                                    textRenderData.setText(products.get(0).getUnit() + "∑3" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 3) {
                                    //第四列
                                    textRenderData.setText(products.get(0).getAsk() + "∑4" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 4) {
                                    //第五列
                                    if (i % 2 == 0) {
                                        //最差值
                                        textRenderData.setText("最差值");
                                    } else {
                                        //端口
                                        textRenderData.setText("端口");
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == bb - 1) {
                                    //最后一列
                                    if (i % 2 == 0) {
                                        //结论
                                        if (products.get(0).getInsResult() == 1) {
                                            textRenderData.setText("合格");
                                        } else if (products.get(0).getInsResult() == 0) {
                                            textRenderData.setText("不合格");
                                        } else {
                                            textRenderData.setText("不判定");
                                        }
                                    } else {
                                        textRenderData.setText("/");
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else {
                                    //其余列
                                    if (i % 2 == 0) {
                                        //最差值
                                        String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", "");
                                        try {
                                            textRenderData.setText(value.split(",")[(j - 5) + (i - 1) / 2 * (Math.min(ports, 8))]);
                                        } catch (Exception e) {
                                            textRenderData.setText("");
                                        }
                                    } else {
                                        //端口
                                        try {
                                            textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) + (i / 2) * (Math.min(ports, 8))]);
                                        } catch (Exception e) {
                                            textRenderData.setText("");
                                        }
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                }
                            }
                            if (inspectionItemSubclass.contains("同极化隔离度") && i > cc && i <= cc + portRow) {
                                dd = cc + portRow;
                                if (itemSet.add("同极化隔离度")) {
                                    index.getAndIncrement();
                                }
                                List<InsProduct> products = insProducts.stream()
                                        .filter(insProduct -> insProduct.getInspectionItemSubclass().equals("同极化隔离度"))
                                        .collect(Collectors.toList());
                                List<InsProductResult2> result2s = insProductResult2s.stream()
                                        .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                        .collect(Collectors.toList());
                                //同极化隔离度所在行
                                if (j == 0) {
                                    //第一列
                                    textRenderData.setText(index + "∑1" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 1) {
                                    //第二列
                                    textRenderData.setText("同极化隔离度∑2" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 2) {
                                    //第三列
                                    textRenderData.setText(products.get(0).getUnit() + "∑3" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 3) {
                                    //第四列
                                    textRenderData.setText(products.get(0).getAsk() + "∑4" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 4) {
                                    //第五列
                                    textRenderData.setText("最差值");
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == bb - 1) {
                                    //最后一列
                                    if (products.get(0).getInsResult() == 1) {
                                        textRenderData.setText("合格");
                                    } else if (products.get(0).getInsResult() == 0) {
                                        textRenderData.setText("不合格");
                                    } else {
                                        textRenderData.setText("不判定");
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j % 2 == 0) {
                                    String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", "");
                                    try {
                                        textRenderData.setText(value.split(",")[(j - 6) / 2 + (i - cc - 1) * 4] + "∑5" + i + (j - 6));
                                    } catch (Exception e) {
                                        textRenderData.setText("");
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else {
                                    String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", "");
                                    try {
                                        textRenderData.setText(value.split(",")[(j - 5) / 2 + (i - cc - 1) * 4] + "∑5" + i + (j - 5));
                                    } catch (Exception e) {
                                        textRenderData.setText("");
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                }
                            }
                            if (inspectionItemSubclass.contains("异极化隔离度") && i > (dd == 0 ? cc : dd) && i <= (dd == 0 ? cc : dd) + portRow) {
                                ee = (dd == 0 ? cc : dd) + portRow;
                                if (itemSet.add("异极化隔离度")) {
                                    index.getAndIncrement();
                                }
                                List<InsProduct> products = insProducts.stream()
                                        .filter(insProduct -> insProduct.getInspectionItemSubclass().equals("异极化隔离度"))
                                        .collect(Collectors.toList());
                                List<InsProductResult2> result2s = insProductResult2s.stream()
                                        .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                        .collect(Collectors.toList());
                                //异极化隔离度所在行
                                if (j == 0) {
                                    //第一列
                                    textRenderData.setText(index + "∑1" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 1) {
                                    //第二列
                                    textRenderData.setText("异极化隔离度∑2" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 2) {
                                    //第三列
                                    textRenderData.setText(products.get(0).getUnit() + "∑3" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 3) {
                                    //第四列
                                    textRenderData.setText(products.get(0).getAsk() + "∑4" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 4) {
                                    //第五列
                                    textRenderData.setText("最差值");
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == bb - 1) {
                                    //最后一列
                                    if (products.get(0).getInsResult() == 1) {
                                        textRenderData.setText("合格");
                                    } else if (products.get(0).getInsResult() == 0) {
                                        textRenderData.setText("不合格");
                                    } else {
                                        textRenderData.setText("不判定");
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j % 2 == 0) {
                                    String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", "");
                                    try {
                                        textRenderData.setText(value.split(",")[(j - 6) / 2 + (i - (dd == 0 ? cc : dd) - 1) * 4] + "∑5" + i + (j - 6));
                                    } catch (Exception e) {
                                        textRenderData.setText("");
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else {
                                    String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", "");
                                    try {
                                        textRenderData.setText(value.split(",")[(j - 5) / 2 + (i - (dd == 0 ? cc : dd) - 1) * 4] + "∑5" + i + (j - 5));
                                    } catch (Exception e) {
                                        textRenderData.setText("");
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                }
                            }
                            if (inspectionItemSubclass.contains("互调") && i > (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) {
                                if (itemSet.add("互调")) {
                                    index.getAndIncrement();
                                }
                                List<InsProduct> products = insProducts.stream()
                                        .filter(insProduct -> insProduct.getInspectionItemSubclass().equals("互调"))
                                        .collect(Collectors.toList());
                                List<InsProductResult2> result2s = insProductResult2s.stream()
                                        .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                        .collect(Collectors.toList());
                                //互调所在行
                                if (j == 0) {
                                    //第一列
                                    textRenderData.setText(index + "∑1" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 1) {
                                    //第二列
                                    textRenderData.setText("互调∑2" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 2) {
                                    //第三列
                                    textRenderData.setText(products.get(0).getUnit() + "∑3" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 3) {
                                    //第四列
                                    textRenderData.setText(products.get(0).getAsk() + "∑4" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 4) {
                                    //第五列
                                    if ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) % (angles + 1) == 1) {
                                        textRenderData.setText("角度");
                                    } else {
                                        textRenderData.setText(result2s.get(0).getAngle().split(",")[(i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) - 2) % (angles + 1)]);
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == bb - 1) {
                                    //最后一列
                                    if ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) % (angles + 1) == 1) {
                                        textRenderData.setText("/");
                                    } else {
                                        if (products.get(0).getInsResult() == 1) {
                                            textRenderData.setText("合格∑8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1));
                                        } else if (products.get(0).getInsResult() == 0) {
                                            textRenderData.setText("不合格∑8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1));
                                        } else {
                                            textRenderData.setText("不判定∑8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1));
                                        }
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else {
                                    if ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) % (angles + 1) == 1) {
                                        textRenderData.setText(result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / portRow / (angles + 1)).getOften() + "∑6" + i + index);
                                    } else {
                                        String[] value = result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / portRow / (angles + 2)).getValue().split("\\],\\[");
                                        String[] split = value[(i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) - 2) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(",");
                                        try {
                                            textRenderData.setText(split[((j - 5) + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) - 1) / (angles + 1) % portRow) * (Math.min(ports, 8)))]);
                                        } catch (Exception e) {
                                            textRenderData.setText("");
                                        }
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                }
                            }
                        } else {
                            //电调版本(复杂版)
                            if (inspectionItemSubclass.contains("电压驻波比") && i <= (angles + 1) * portRow) {
                                cc = (angles + 1) * portRow;
                                if (itemSet.add("电压驻波比")) {
                                    index.getAndIncrement();
                                }
                                List<InsProduct> products = insProducts.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("电压驻波比")).collect(Collectors.toList());
                                List<InsProductResult2> result2s = insProductResult2s.stream()
                                        .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                        .collect(Collectors.toList());
                                //电压驻波比所在行
                                if (j == 0) {
                                    //第一列
                                    textRenderData.setText(index + "∑1" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 1) {
                                    //第二列
                                    textRenderData.setText("电压驻波比∑2" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 2) {
                                    //第三列
                                    textRenderData.setText(products.get(0).getUnit() + "∑3" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 3) {
                                    //第四列
                                    textRenderData.setText(products.get(0).getAsk() + "∑4" + index);
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == 4) {
                                    //第五列
                                    if (i % (angles + 1) == 1) {
                                        //端口
                                        textRenderData.setText("端口");
                                    } else {
                                        //角度
                                        textRenderData.setText(result2s.get(0).getAngle().split(",")[(i + (angles - 1)) % (angles + 1)]);
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else if (j == bb - 1) {
                                    //最后一列
                                    if (i % (angles + 1) == 1) {
                                        textRenderData.setText("/");
                                    } else {
                                        //结论
                                        if (products.get(0).getInsResult() == 1) {
                                            textRenderData.setText("合格∑8" + index + ((i + (angles - 1)) / (angles + 1) - 1));
                                        } else if (products.get(0).getInsResult() == 0) {
                                            textRenderData.setText("不合格∑8" + index + ((i + (angles - 1)) / (angles + 1) - 1));
                                        } else {
                                            textRenderData.setText("不判定∑8" + index + ((i + (angles - 1)) / (angles + 1) - 1));
                                        }
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                } else {
                                    //其余列
                                    if (i % (angles + 1) == 1) {
                                        //端口
                                        try {
                                            textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) + (i / (angles + 1)) * (Math.min(ports, 8))]);
                                        } catch (Exception e) {
                                            textRenderData.setText("");
                                        }
                                    } else {
                                        //最差值
                                        String[] value = result2s.get(0).getValue().split("\\],\\[");
                                        String[] split = value[(i + (angles - 1)) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(",");
                                        try {
                                            textRenderData.setText(split[(j - 5) + ((i + (angles - 1)) / (angles + 1) - 1) * (Math.min(ports, 8))]);
                                        } catch (Exception e) {
                                            textRenderData.setText("");
                                        }
                                    }
                                    renderData.add(textRenderData);
                                    paragraphRenderData.setContents(renderData);
                                    paragraphRenderDataList.add(paragraphRenderData);
                                    cellRenderData.setParagraphs(paragraphRenderDataList);
                                    cells.add(cellRenderData);
                                }
                            }
                            if (inspectionItemSubclass.contains("同极化隔离度")) {
                                List<InsProduct> products = insProducts.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("同极化隔离度")).collect(Collectors.toList());
                                List<InsProductResult2> result2s = insProductResult2s.stream()
                                        .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                        .collect(Collectors.toList());
                                int length = result2s.get(0).getPort().split(",").length;
                                int portRow2 = (length % (ports > 8 ? 4 : (ports + 1) / 2) == 0 ? length / (ports > 8 ? 4 : (ports + 1) / 2) : length / (ports > 8 ? 4 : (ports + 1) / 2) + 1);
                                int k = (angles + 1) * portRow2;
                                if (i > cc && i <= cc + k) {
                                    dd = cc + k;
                                    if (itemSet.add("同极化隔离度")) {
                                        index.getAndIncrement();
                                    }
                                    List<InsProduct> products = insProducts.stream()
                                            .filter(insProduct -> insProduct.getInspectionItemSubclass().equals("同极化隔离度"))
                                            .collect(Collectors.toList());
                                    List<InsProductResult2> result2s = insProductResult2s.stream()
                                            .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                            .collect(Collectors.toList());
                                    //同极化隔离度所在行
                                    if (j == 0) {
                                        //第一列
@@ -381,7 +766,13 @@
                                        cells.add(cellRenderData);
                                    } else if (j == 4) {
                                        //第五列
                                        textRenderData.setText("最差值");
                                        if ((i - cc) % (angles + 1) == 1) {
                                            //端口
                                            textRenderData.setText("端口");
                                        } else {
                                            //角度
                                            textRenderData.setText(result2s.get(0).getAngle().split(",")[(i + (angles - 1)) % (angles + 1)]);
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
@@ -389,24 +780,17 @@
                                        cells.add(cellRenderData);
                                    } else if (j == bb - 1) {
                                        //最后一列
                                        if (products.get(0).getInsResult() == 1) {
                                            textRenderData.setText("合格");
                                        } else if (products.get(0).getInsResult() == 0) {
                                            textRenderData.setText("不合格");
                                        if ((i - cc) % (angles + 1) == 1) {
                                            textRenderData.setText("/");
                                        } else {
                                            textRenderData.setText("不判定");
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j % 2 == 0) {
                                        String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", "");
                                        try {
                                            textRenderData.setText(value.split(",")[(j - 6) / 2 + (i - cc - 1) * 4] + "∑5" + i + (j - 6));
                                        } catch (Exception e) {
                                            textRenderData.setText("");
                                            //结论
                                            if (products.get(0).getInsResult() == 1) {
                                                textRenderData.setText("合格∑8" + index + ((i - cc) / (angles + 2)));
                                            } else if (products.get(0).getInsResult() == 0) {
                                                textRenderData.setText("不合格∑8" + index + ((i - cc) / (angles + 2)));
                                            } else {
                                                textRenderData.setText("不判定∑8" + index + ((i - cc) / (angles + 2)));
                                            }
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
@@ -414,11 +798,40 @@
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else {
                                        String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", "");
                                        try {
                                            textRenderData.setText(value.split(",")[(j - 5) / 2 + (i - cc - 1) * 4] + "∑5" + i + (j - 5));
                                        } catch (Exception e) {
                                            textRenderData.setText("");
                                        //其余列
                                        if ((i - cc) % (angles + 1) == 1) {
                                            //端口
                                            if (j % 2 == 0) {
                                                try {
                                                    textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 6) / 2 + ((i - cc) / (angles + 1)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "∑5" + i + (j - 6));
                                                } catch (Exception e) {
                                                    textRenderData.setText("");
                                                }
                                            } else {
                                                try {
                                                    textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) / 2 + ((i - cc) / (angles + 1)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "∑5" + i + (j - 5));
                                                } catch (Exception e) {
                                                    textRenderData.setText("");
                                                }
                                            }
                                        } else {
                                            //最差值
                                            String[] value = result2s.get(0).getValue().split("\\],\\[");
                                            String[] split = value[(i + (angles - 1)) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(",");
                                            if (j % 2 == 0) {
                                                try {
                                                    textRenderData.setText(split[(j - 6) / 2 + ((i - cc) / (angles + 2)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "∑5" + i + (j - 6));
                                                } catch (Exception e) {
                                                    textRenderData.setText("");
                                                }
                                            } else {
                                                try {
                                                    textRenderData.setText(split[(j - 5) / 2 + ((i - cc) / (angles + 2)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "∑5" + i + (j - 5));
                                                } catch (Exception e) {
                                                    textRenderData.setText("");
                                                }
                                            }
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
@@ -427,17 +840,20 @@
                                        cells.add(cellRenderData);
                                    }
                                }
                                if (inspectionItemSubclass.contains("异极化隔离度") && i > (dd == 0 ? cc : dd) && i <= (dd == 0 ? cc : dd) + portRow) {
                                    ee = (dd == 0 ? cc : dd) + portRow;
                            }
                            if (inspectionItemSubclass.contains("异极化隔离度")) {
                                List<InsProduct> products = insProducts.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("异极化隔离度")).collect(Collectors.toList());
                                List<InsProductResult2> result2s = insProductResult2s.stream()
                                        .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                        .collect(Collectors.toList());
                                int length = result2s.get(0).getPort().split(",").length;
                                int portRow2 = (length % (ports > 8 ? 4 : (ports + 1) / 2) == 0 ? length / (ports > 8 ? 4 : (ports + 1) / 2) : length / (ports > 8 ? 4 : (ports + 1) / 2) + 1);
                                int k = (angles + 1) * portRow2;
                                if (i > (dd == 0 ? cc : dd) && i <= (dd == 0 ? cc : dd) + k) {
                                    ee = (dd == 0 ? cc : dd) + k;
                                    if (itemSet.add("异极化隔离度")) {
                                        index.getAndIncrement();
                                    }
                                    List<InsProduct> products = insProducts.stream()
                                            .filter(insProduct -> insProduct.getInspectionItemSubclass().equals("异极化隔离度"))
                                            .collect(Collectors.toList());
                                    List<InsProductResult2> result2s = insProductResult2s.stream()
                                            .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                            .collect(Collectors.toList());
                                    //异极化隔离度所在行
                                    if (j == 0) {
                                        //第一列
@@ -473,191 +889,7 @@
                                        cells.add(cellRenderData);
                                    } else if (j == 4) {
                                        //第五列
                                        textRenderData.setText("最差值");
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == bb - 1) {
                                        //最后一列
                                        if (products.get(0).getInsResult() == 1) {
                                            textRenderData.setText("合格");
                                        } else if (products.get(0).getInsResult() == 0) {
                                            textRenderData.setText("不合格");
                                        } else {
                                            textRenderData.setText("不判定");
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j % 2 == 0) {
                                        String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", "");
                                        try {
                                            textRenderData.setText(value.split(",")[(j - 6) / 2 + (i - (dd == 0 ? cc : dd) - 1) * 4] + "∑5" + i + (j - 6));
                                        } catch (Exception e) {
                                            textRenderData.setText("");
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else {
                                        String value = result2s.get(0).getValue().replaceAll("[\\[\\]\"]", "");
                                        try {
                                            textRenderData.setText(value.split(",")[(j - 5) / 2 + (i - (dd == 0 ? cc : dd) - 1) * 4] + "∑5" + i + (j - 5));
                                        } catch (Exception e) {
                                            textRenderData.setText("");
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    }
                                }
                                if (inspectionItemSubclass.contains("互调") && i > (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) {
                                    if (itemSet.add("互调")) {
                                        index.getAndIncrement();
                                    }
                                    List<InsProduct> products = insProducts.stream()
                                            .filter(insProduct -> insProduct.getInspectionItemSubclass().equals("互调"))
                                            .collect(Collectors.toList());
                                    List<InsProductResult2> result2s = insProductResult2s.stream()
                                            .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                            .collect(Collectors.toList());
                                    //互调所在行
                                    if (j == 0) {
                                        //第一列
                                        textRenderData.setText(index + "∑1" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 1) {
                                        //第二列
                                        textRenderData.setText("互调∑2" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 2) {
                                        //第三列
                                        textRenderData.setText(products.get(0).getUnit() + "∑3" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 3) {
                                        //第四列
                                        textRenderData.setText(products.get(0).getAsk() + "∑4" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 4) {
                                        //第五列
                                        if ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) % (angles + 1) == 1) {
                                            textRenderData.setText("角度");
                                        } else {
                                            textRenderData.setText(result2s.get(0).getAngle().split(",")[(i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) - 2) % (angles + 1)]);
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == bb - 1) {
                                        //最后一列
                                        if ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) % (angles + 1) == 1) {
                                            textRenderData.setText("/");
                                        } else {
                                            if (products.get(0).getInsResult() == 1) {
                                                textRenderData.setText("合格∑8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1));
                                            } else if (products.get(0).getInsResult() == 0) {
                                                textRenderData.setText("不合格∑8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1));
                                            } else {
                                                textRenderData.setText("不判定∑8" + index + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) + (angles - 1)) / (angles + 1) - 1));
                                            }
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else {
                                        if ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) % (angles + 1) == 1) {
                                            textRenderData.setText(result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / portRow / (angles + 1)).getOften() + "∑6" + i + index);
                                        } else {
                                            String[] value = result2s.get((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee)) / portRow / (angles + 2)).getValue().split("\\],\\[");
                                            String[] split = value[(i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) - 2) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(",");
                                            try {
                                                textRenderData.setText(split[((j - 5) + ((i - (ee == 0 ? ((dd == 0 ? cc : dd)) : ee) - 1) / (angles + 1) % portRow) * (Math.min(ports, 8)))]);
                                            } catch (Exception e) {
                                                textRenderData.setText("");
                                            }
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    }
                                }
                            } else {
                                //电调版本(复杂版)
                                if (inspectionItemSubclass.contains("电压驻波比") && i <= (angles + 1) * portRow) {
                                    cc = (angles + 1) * portRow;
                                    if (itemSet.add("电压驻波比")) {
                                        index.getAndIncrement();
                                    }
                                    List<InsProduct> products = insProducts.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("电压驻波比")).collect(Collectors.toList());
                                    List<InsProductResult2> result2s = insProductResult2s.stream()
                                            .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                            .collect(Collectors.toList());
                                    //电压驻波比所在行
                                    if (j == 0) {
                                        //第一列
                                        textRenderData.setText(index + "∑1" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 1) {
                                        //第二列
                                        textRenderData.setText("电压驻波比∑2" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 2) {
                                        //第三列
                                        textRenderData.setText(products.get(0).getUnit() + "∑3" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 3) {
                                        //第四列
                                        textRenderData.setText(products.get(0).getAsk() + "∑4" + index);
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else if (j == 4) {
                                        //第五列
                                        if (i % (angles + 1) == 1) {
                                        if ((i - (dd == 0 ? cc : dd)) % (angles + 1) == 1) {
                                            //端口
                                            textRenderData.setText("端口");
                                        } else {
@@ -671,16 +903,16 @@
                                        cells.add(cellRenderData);
                                    } else if (j == bb - 1) {
                                        //最后一列
                                        if (i % (angles + 1) == 1) {
                                        if ((i - (dd == 0 ? cc : dd)) % (angles + 1) == 1) {
                                            textRenderData.setText("/");
                                        } else {
                                            //结论
                                            if (products.get(0).getInsResult() == 1) {
                                                textRenderData.setText("合格∑8" + index + ((i + (angles - 1)) / (angles + 1) - 1));
                                                textRenderData.setText("合格∑8" + index + ((i - (dd == 0 ? cc : dd)) / (angles + 2)));
                                            } else if (products.get(0).getInsResult() == 0) {
                                                textRenderData.setText("不合格∑8" + index + ((i + (angles - 1)) / (angles + 1) - 1));
                                                textRenderData.setText("不合格∑8" + index + ((i - (dd == 0 ? cc : dd)) / (angles + 2)));
                                            } else {
                                                textRenderData.setText("不判定∑8" + index + ((i + (angles - 1)) / (angles + 1) - 1));
                                                textRenderData.setText("不判定∑8" + index + ((i - (dd == 0 ? cc : dd)) / (angles + 2)));
                                            }
                                        }
                                        renderData.add(textRenderData);
@@ -689,234 +921,6 @@
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    } else {
                                        //其余列
                                        if (i % (angles + 1) == 1) {
                                            //端口
                                            try {
                                                textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) + (i / (angles + 1)) * (Math.min(ports, 8))]);
                                            } catch (Exception e) {
                                                textRenderData.setText("");
                                            }
                                        } else {
                                            //最差值
                                            String[] value = result2s.get(0).getValue().split("\\],\\[");
                                            String[] split = value[(i + (angles - 1)) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(",");
                                            try {
                                                textRenderData.setText(split[(j - 5) + ((i + (angles - 1)) / (angles + 1) - 1) * (Math.min(ports, 8))]);
                                            } catch (Exception e) {
                                                textRenderData.setText("");
                                            }
                                        }
                                        renderData.add(textRenderData);
                                        paragraphRenderData.setContents(renderData);
                                        paragraphRenderDataList.add(paragraphRenderData);
                                        cellRenderData.setParagraphs(paragraphRenderDataList);
                                        cells.add(cellRenderData);
                                    }
                                }
                                if (inspectionItemSubclass.contains("同极化隔离度")) {
                                    List<InsProduct> products = insProducts.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("同极化隔离度")).collect(Collectors.toList());
                                    List<InsProductResult2> result2s = insProductResult2s.stream()
                                            .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                            .collect(Collectors.toList());
                                    int length = result2s.get(0).getPort().split(",").length;
                                    int portRow2 = (length % (ports > 8 ? 4 : (ports + 1) / 2) == 0 ? length / (ports > 8 ? 4 : (ports + 1) / 2) : length / (ports > 8 ? 4 : (ports + 1) / 2) + 1);
                                    int k = (angles + 1) * portRow2;
                                    if (i > cc && i <= cc + k) {
                                        dd = cc + k;
                                        if (itemSet.add("同极化隔离度")) {
                                            index.getAndIncrement();
                                        }
                                        //同极化隔离度所在行
                                        if (j == 0) {
                                            //第一列
                                            textRenderData.setText(index + "∑1" + index);
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else if (j == 1) {
                                            //第二列
                                            textRenderData.setText("同极化隔离度∑2" + index);
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else if (j == 2) {
                                            //第三列
                                            textRenderData.setText(products.get(0).getUnit() + "∑3" + index);
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else if (j == 3) {
                                            //第四列
                                            textRenderData.setText(products.get(0).getAsk() + "∑4" + index);
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else if (j == 4) {
                                            //第五列
                                            if ((i - cc) % (angles + 1) == 1) {
                                                //端口
                                                textRenderData.setText("端口");
                                            } else {
                                                //角度
                                                textRenderData.setText(result2s.get(0).getAngle().split(",")[(i + (angles - 1)) % (angles + 1)]);
                                            }
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else if (j == bb - 1) {
                                            //最后一列
                                            if ((i - cc) % (angles + 1) == 1) {
                                                textRenderData.setText("/");
                                            } else {
                                                //结论
                                                if (products.get(0).getInsResult() == 1) {
                                                    textRenderData.setText("合格∑8" + index + ((i - cc) / (angles + 2)));
                                                } else if (products.get(0).getInsResult() == 0) {
                                                    textRenderData.setText("不合格∑8" + index + ((i - cc) / (angles + 2)));
                                                } else {
                                                    textRenderData.setText("不判定∑8" + index + ((i - cc) / (angles + 2)));
                                                }
                                            }
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else {
                                            //其余列
                                            if ((i - cc) % (angles + 1) == 1) {
                                                //端口
                                                if (j % 2 == 0) {
                                                    try {
                                                        textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 6) / 2 + ((i - cc) / (angles + 1)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "∑5" + i + (j - 6));
                                                    } catch (Exception e) {
                                                        textRenderData.setText("");
                                                    }
                                                } else {
                                                    try {
                                                        textRenderData.setText(result2s.get(0).getPort().split(",")[(j - 5) / 2 + ((i - cc) / (angles + 1)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "∑5" + i + (j - 5));
                                                    } catch (Exception e) {
                                                        textRenderData.setText("");
                                                    }
                                                }
                                            } else {
                                                //最差值
                                                String[] value = result2s.get(0).getValue().split("\\],\\[");
                                                String[] split = value[(i + (angles - 1)) % (angles + 1)].replaceAll("[\\[\\]\"]", "").split(",");
                                                if (j % 2 == 0) {
                                                    try {
                                                        textRenderData.setText(split[(j - 6) / 2 + ((i - cc) / (angles + 2)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "∑5" + i + (j - 6));
                                                    } catch (Exception e) {
                                                        textRenderData.setText("");
                                                    }
                                                } else {
                                                    try {
                                                        textRenderData.setText(split[(j - 5) / 2 + ((i - cc) / (angles + 2)) * (ports > 8 ? 4 : (ports + 1) / 2)] + "∑5" + i + (j - 5));
                                                    } catch (Exception e) {
                                                        textRenderData.setText("");
                                                    }
                                                }
                                            }
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        }
                                    }
                                }
                                if (inspectionItemSubclass.contains("异极化隔离度")) {
                                    List<InsProduct> products = insProducts.stream().filter(insProduct -> insProduct.getInspectionItemSubclass().equals("异极化隔离度")).collect(Collectors.toList());
                                    List<InsProductResult2> result2s = insProductResult2s.stream()
                                            .filter(insProductResult2 -> insProductResult2.getFrequency().equals(s) && insProductResult2.getInsProductId().equals(products.get(0).getId()))
                                            .collect(Collectors.toList());
                                    int length = result2s.get(0).getPort().split(",").length;
                                    int portRow2 = (length % (ports > 8 ? 4 : (ports + 1) / 2) == 0 ? length / (ports > 8 ? 4 : (ports + 1) / 2) : length / (ports > 8 ? 4 : (ports + 1) / 2) + 1);
                                    int k = (angles + 1) * portRow2;
                                    if (i > (dd == 0 ? cc : dd) && i <= (dd == 0 ? cc : dd) + k) {
                                        ee = (dd == 0 ? cc : dd) + k;
                                        if (itemSet.add("异极化隔离度")) {
                                            index.getAndIncrement();
                                        }
                                        //异极化隔离度所在行
                                        if (j == 0) {
                                            //第一列
                                            textRenderData.setText(index + "∑1" + index);
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else if (j == 1) {
                                            //第二列
                                            textRenderData.setText("异极化隔离度∑2" + index);
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else if (j == 2) {
                                            //第三列
                                            textRenderData.setText(products.get(0).getUnit() + "∑3" + index);
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else if (j == 3) {
                                            //第四列
                                            textRenderData.setText(products.get(0).getAsk() + "∑4" + index);
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else if (j == 4) {
                                            //第五列
                                            if ((i - (dd == 0 ? cc : dd)) % (angles + 1) == 1) {
                                                //端口
                                                textRenderData.setText("端口");
                                            } else {
                                                //角度
                                                textRenderData.setText(result2s.get(0).getAngle().split(",")[(i + (angles - 1)) % (angles + 1)]);
                                            }
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else if (j == bb - 1) {
                                            //最后一列
                                            if ((i - (dd == 0 ? cc : dd)) % (angles + 1) == 1) {
                                                textRenderData.setText("/");
                                            } else {
                                                //结论
                                                if (products.get(0).getInsResult() == 1) {
                                                    textRenderData.setText("合格∑8" + index + ((i - (dd == 0 ? cc : dd)) / (angles + 2)));
                                                } else if (products.get(0).getInsResult() == 0) {
                                                    textRenderData.setText("不合格∑8" + index + ((i - (dd == 0 ? cc : dd)) / (angles + 2)));
                                                } else {
                                                    textRenderData.setText("不判定∑8" + index + ((i - (dd == 0 ? cc : dd)) / (angles + 2)));
                                                }
                                            }
                                            renderData.add(textRenderData);
                                            paragraphRenderData.setContents(renderData);
                                            paragraphRenderDataList.add(paragraphRenderData);
                                            cellRenderData.setParagraphs(paragraphRenderDataList);
                                            cells.add(cellRenderData);
                                        } else {
                                            //其余列
                                            if ((i - (dd == 0 ? cc : dd)) % (angles + 1) == 1) {
                                                //端口
@@ -1486,8 +1490,6 @@
                tables.add(table);
                lable.getAndIncrement();
            });
        });
        ZipSecureFile.setMinInflateRatio(0.0001);
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word1.docx");
@@ -1498,14 +1500,15 @@
                    put("title", title);
                    put("tables", tables);
                }});
        String name = insOrder.getEntrustCode().replace("/", "") + "-" + title + ".docx";
        String name = insOrder.getEntrustCode().replace("/", "") + "-" +insSample.getSampleCode()+"-"+ title + ".docx";
        String url = UUID.randomUUID() + "_" + name;
        try {
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + name)));
            template.writeAndClose(Files.newOutputStream(Paths.get(wordUrl + "/" + url)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        // å¤„理合并单元格的问题
        String path = wordUrl + "/" + name;
        String path = wordUrl + "/" + url;
        try {
            ZipSecureFile.setMinInflateRatio(0.0001);
            FileInputStream stream = new FileInputStream(path);
@@ -1581,27 +1584,27 @@
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        InsOrderFile insOrderFile = new InsOrderFile();
        insOrderFile.setInsOrderId(insOrderState.getInsOrderId());
        insOrderFile.setInsSampleId(insOrderState.getInsSampleId());
        insOrderFile.setFileName(name);
        insOrderFile.setType(2);
        insOrderFile.setFileUrl(name);
        insOrderFile.setFileUrl(url);
        insOrderFile.setSonLaboratory("电路试验");
        insOrderFileMapper.insert(insOrderFile);
    }
    //生成总报告
    public void generateReport(Integer orderId, List<InsReportDto1> insReportDto1s) {
    public void generateReport(Integer orderId, InsReportDto1 insReportDto1) {
        LocalDateTime now = LocalDateTime.now();
        InsOrder insOrder = insOrderMapper.selectById(orderId);
        //委托部门 departLims
        String departLims = userMapper.selectDepartLims(insOrder.getPrepareUser());
        //samples是过滤掉没有检验项目的样品
        List<SampleProductDto> samples = insSampleMapper.selectSampleProductListByOrderId(orderId);
        String sampleCode = samples.get(0).getSampleCode();
        SampleProductDto insSample = insSampleMapper.selectSampleProductListByOrderId(insReportDto1.getSampleId());
        String sampleCode = insSample.getSampleCode();
        InsReport insReport = new InsReport();
        insReport.setCode(insOrder.getEntrustCode().replace("WT", "TXJC"));
        insReport.setCode(giveCode.giveCode("TXJC-", "ins_report", "-", "yyMMdd"));
        insReport.setInsSampleId(insSample.getId());
        insReport.setInsOrderId(orderId);
        Set<String> standardMethod = new HashSet<>();
        Set<String> deviceSet = new HashSet<>();
@@ -1612,7 +1615,7 @@
        AtomicReference<Integer> productSize2 = new AtomicReference<>(0);
        AtomicReference<Integer> productSize3 = new AtomicReference<>(0);
        String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
        samples.forEach(s -> {
        SampleProductDto s=insSample;
            models.add(s.getModel());
            standardMethod.addAll(standardMethodListMapper.selectList(Wrappers.<StandardMethodList>lambdaQuery()
                    .in(StandardMethodList::getId, Arrays.stream(s.getStandardMethodListId().replaceAll("[\\[\\]]", "").split(","))
@@ -1649,13 +1652,13 @@
                        .collect(Collectors.toSet());
                labToDeviceMap.put(entry.getKey(), productIds);
            }
            for (InsReportDto1 insReportDto1 : insReportDto1s) {
                String laboratory = insReportDto1.getLaboratory();
            for (InsReportDto2 insReportDto2 : insReportDto1.getInsReportDto2s()) {
                String laboratory = insReportDto2.getLaboratory();
                if (!labToDeviceMap.containsKey(laboratory)) {
                    continue;
                }
                Set<Integer> productIds = labToDeviceMap.get(laboratory);
                Integer num = insReportDto1.getNum();
                Integer num = insReportDto2.getNum();
                //普通试验结果表
                List<InsProductResult> insProductResults = insProductResultMapper.selectList(
                        Wrappers.<InsProductResult>lambdaQuery()
@@ -1684,7 +1687,7 @@
                    }
                }
            }
        });
        /*检验情况一览表*/
        List<Map<String, String>> tables = new ArrayList<>();
@@ -1693,7 +1696,7 @@
        List<Map<String, Object>> tables4 = new ArrayList<>();
        Integer indexs = 1;
        //判断是否有电路试验,环境试验
        List<String> strings = insReportDto1s.stream().map(InsReportDto1::getLaboratory).distinct().collect(Collectors.toList());
        List<String> strings = insReportDto1.getInsReportDto2s().stream().map(InsReportDto2::getLaboratory).distinct().collect(Collectors.toList());
        if (strings.contains("近场") || strings.contains("远场")) {
            Map<String, String> table = new HashMap<>();
            table.put("indexs", indexs + "");
@@ -1704,6 +1707,7 @@
            /*辐射的试验表*/
            List<InsOrderFile> insOrderFiles = insOrderFileMapper.selectList(Wrappers.<InsOrderFile>lambdaQuery()
                    .eq(InsOrderFile::getInsOrderId, orderId)
                    .eq(InsOrderFile::getInsSampleId, insReportDto1.getSampleId())
                    .like(InsOrderFile::getFileName, "解析的辐射站点报告")
                    .and(wrapper -> wrapper
                            .eq(InsOrderFile::getSonLaboratory, "远场")
@@ -1807,8 +1811,7 @@
            strings.remove("电路试验");
            strings.remove("近场");
            strings.remove("远场");
            List<Integer> productIdes = samples.stream().flatMap(sampleProductDto ->
                    sampleProductDto.getInsProduct().stream().map(InsProduct::getId)).collect(Collectors.toList());
            List<Integer> productIdes = insSample.getInsProduct().stream().map(InsProduct::getId).collect(Collectors.toList());
            List<Integer> collect = insProductResult2Mapper.selectList(Wrappers.<InsProductResult2>lambdaQuery()
                    .in(InsProductResult2::getInsProductId, productIdes))
                    .stream().map(InsProductResult2::getResult).distinct().collect(Collectors.toList());
@@ -1843,9 +1846,9 @@
                indexs += 1;
                /*创建环境试验条件表2*(项目数+1)*/
                List<InsProduct> products = samples.stream().flatMap(sampleProductDto -> sampleProductDto.getInsProduct().stream()
                List<InsProduct> products =  insSample.getInsProduct().stream()
                        .filter(insProduct -> !insProduct.getInspectionItem().equals("电路试验"))
                        .filter(insProduct -> !insProduct.getInspectionItem().equals("辐射试验")))
                        .filter(insProduct -> !insProduct.getInspectionItem().equals("辐射试验"))
                        .map(insProduct -> {
                            InsProduct product = new InsProduct();
                            product.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());
@@ -1957,13 +1960,12 @@
                indexs += 1;
            }
            /*勾选的电路试验表*/
            List<InsSample> insSamples = insSampleMapper.selectSample(orderId);
            for (InsReportDto1 insReportDto1 : insReportDto1s) {
                InsOrderUser insOrderUser = insOrderUserMapper.selectById(insReportDto1.getInsOrderUsersId());
            for (InsReportDto2 insReportDto2 : insReportDto1.getInsReportDto2s()) {
                InsOrderUser insOrderUser = insOrderUserMapper.selectById(insReportDto2.getInsOrderUsersId());
                InsOrderState orderState = insOrderStateMapper.selectById(insOrderUser.getInsOrderStateId());
                if (orderState.getLaboratory().equals("电路试验")) {
                    orderState.setNum(insOrderUser.getNum());
                    getWord1(insOrderUser.getTerm(), orderState, insSamples, tables2);
                    getWord1(insOrderUser.getTerm(), orderState, tables2);
                }
            }
        }
@@ -1979,9 +1981,9 @@
                tables.add(table2);
                /*创建环境试验条件表2*(项目数+1)*/
                List<InsProduct> products = samples.stream().flatMap(sampleProductDto -> sampleProductDto.getInsProduct().stream()
                List<InsProduct> products = insSample.getInsProduct().stream()
                        .filter(insProduct -> !insProduct.getInspectionItem().equals("电路试验"))
                        .filter(insProduct -> !insProduct.getInspectionItem().equals("辐射试验")))
                        .filter(insProduct -> !insProduct.getInspectionItem().equals("辐射试验"))
                        .map(insProduct -> {
                            InsProduct product = new InsProduct();
                            product.setInspectionItemSubclass(insProduct.getInspectionItemSubclass());
@@ -2085,8 +2087,8 @@
        ZipSecureFile.setMinInflateRatio(0.0001);
        InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx");
        StringBuilder standardMethod2 = new StringBuilder();
        for (String s : standardMethod) {
            standardMethod2.append(";\n").append(s);
        for (String s1 : standardMethod) {
            standardMethod2.append(";\n").append(s1);
        }
        standardMethod2.append(";\n").append("GB/T 9410-2008 ã€Šç§»åŠ¨é€šä¿¡å¤©çº¿é€šç”¨æŠ€æœ¯è§„èŒƒã€‹");
        standardMethod2.replace(0, 1, "");
@@ -2096,8 +2098,8 @@
        }
        Map<String, String> codeStr = new HashMap<>();
        codeStr.put("报告编号", insReport.getCode());
        codeStr.put("样品名称", insOrder.getSample());
        codeStr.put("规格型号", samples.get(0).getModel());
        codeStr.put("样品名称", insSample.getSample());
        codeStr.put("规格型号", insSample.getModel());
        codeStr.put("发放日期", now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        String codePath;
        try {
@@ -2119,7 +2121,7 @@
        List<Map<String, String>> finalDeviceList = deviceList;
        List<Map<String, String>> sampleList = insSampleMapper.selectSampleList(orderId);
        Integer userId = insSampleUserMapper.selectOne(Wrappers.<InsSampleUser>lambdaQuery()
                .eq(InsSampleUser::getInsSampleId, orderId).last("limit 1")).getUserId();
                .eq(InsSampleUser::getInsSampleId, insReportDto1.getSampleId()).last("limit 1")).getUserId();
        String signatureUrl;
        try {
            signatureUrl = userMapper.selectById(userId).getSignatureUrl();
@@ -2151,11 +2153,12 @@
            insOrder.setPhone("/");
        }
        //检验项目的环境
        InsProduct insProduct = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().eq(InsProduct::getState, 1).eq(InsProduct::getInsSampleId, samples.get(0).getId())).get(0);
        InsProduct insProduct = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                .eq(InsProduct::getState, 1)
                .eq(InsProduct::getInsSampleId, insReportDto1.getSampleId())).get(0);
        String environment = "";
        environment = (ObjectUtils.isNotEmpty(insProduct.getTemperature()) ? insProduct.getTemperature() + "℃ " : "") + (ObjectUtils.isNotEmpty(insProduct.getHumidity()) ? insProduct.getHumidity() + "%" : "");
        String finalEnvironment = environment;
        List<SampleProductDto> finalSamples = samples;
        String title3 = "";
        if (tables3.size() > 0) {
            title3 = "辐射方向图参数";
@@ -2169,7 +2172,7 @@
                    put("sampleCode", sampleCode);
                    put("environment", finalEnvironment);
                    put("custom", custom);
                    put("sampleSize", finalSamples.size());
                    put("sampleSize", "1");
                    put("standardMethod", (standardMethod2.toString().equals("null") ? "" : standardMethod2));
                    put("deviceList", finalDeviceList);
                    put("tables", tables);
@@ -2323,11 +2326,12 @@
    //电路报告用于总报告的方法
    private void getWord1(String term, InsOrderState insOrderState, List<InsSample> insSamples, List<Map<String, Object>> tables2) {
    private void getWord1(String term, InsOrderState insOrderState,List<Map<String, Object>> tables2) {
        AtomicInteger lable = new AtomicInteger(1);
        AtomicInteger index = new AtomicInteger();
        String title = term + "电路参数";
        insSamples.forEach(insSample -> {
        InsSample insSample = insSampleMapper.selectById(insOrderState.getInsSampleId());
            //查询项目
            List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
                    .eq(InsProduct::getInsSampleId, insSample.getId())
@@ -3715,7 +3719,6 @@
                tables2.add(table2);
                lable.getAndIncrement();
            });
        });
    }
    // æ°´å¹³åˆå¹¶å•元格
inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanTaskSwitchVo.java
@@ -11,6 +11,7 @@
    @ValueTableShow(value = 1,name = "委托编号")
    private String entrustCode;
    @ValueTableShow(value = 2,name = "检验对象")
    private String sampleType;
@@ -36,5 +37,7 @@
    private Integer orderUserId;
    private Integer sampleId;
    private Integer verifyUser;
}
inspect-server/src/main/java/com/yuanchu/mom/vo/InsOrderPlanVO.java
@@ -52,6 +52,8 @@
    private Integer orderUserId;
    private Integer sampleId;
    private Integer verifyUser;
    private Integer orderStateId;
inspect-server/src/main/resources/mapper/InsOrderFileMapper.xml
@@ -5,6 +5,7 @@
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.InsOrderFile">
        <id column="id" property="id"/>
        <result column="ins_order_id" property="insOrderId"/>
        <result property="insSampleId" column="ins_sample_id" />
        <result column="type" property="type"/>
        <result column="file_url" property="fileUrl"/>
        <result column="file_name" property="fileName"/>
@@ -24,6 +25,10 @@
            and (son_laboratory=#{sonLaboratory}
            or son_laboratory is null)
        </if>
        <if test="sampleId!=null and sampleId!=''">
            and (ins_sample_id=#{sampleId}
            or ins_sample_id is null)
        </if>
        ) A
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
inspect-server/src/main/resources/mapper/InsOrderStateMapper.xml
@@ -6,6 +6,7 @@
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.InsOrderState">
        <id property="id" column="idd" jdbcType="INTEGER"/>
        <result property="insOrderId" column="ins_order_id" jdbcType="INTEGER"/>
        <result property="insSampleId" column="ins_sample_id" jdbcType="INTEGER"/>
        <result property="laboratory" column="laboratory" jdbcType="VARCHAR"/>
        <result property="insState" column="ins_state" jdbcType="INTEGER"/>
        <result property="sort" column="sort" jdbcType="INTEGER"/>
@@ -28,10 +29,11 @@
        <result column="tell" property="tell"/>
    </resultMap>
    <select id="getInsOrderStateCount" resultMap="BaseResultMap">
        select  ios.id idd,laboratory,version, iou.*,name submitUserName
        select ios.id idd, laboratory, version, iou.*, name submitUserName
        from ins_order_state ios
                 left join ins_order_user iou on ios.id = iou.ins_order_state_id
            left join user on submit_user=user.id
                 left join user on submit_user = user.id
        where ios.ins_order_id = #{id}
          and ios.ins_sample_id = #{sampleId}
    </select>
</mapper>
inspect-server/src/main/resources/mapper/InsProductMapper.xml
@@ -102,8 +102,7 @@
        select COUNT(1)
        from ins_product ip
                 left join ins_sample isa on ip.ins_sample_id = isa.id
                 left join ins_order io on isa.ins_order_id = io.id
        where io.id = #{orderId}
        where isa.id = #{sampleId}
          and (ip.ins_result is null or ip.ins_result = 2)
          and ip.state = 1
    </select>
inspect-server/src/main/resources/mapper/InsReportMapper.xml
@@ -3,47 +3,46 @@
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanchu.mom.mapper.InsReportMapper">
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.InsReport">
            <id property="id" column="id" jdbcType="INTEGER"/>
            <result property="insOrderId" column="ins_order_id" jdbcType="INTEGER"/>
            <result property="url" column="url" jdbcType="VARCHAR"/>
            <result property="urlS" column="url_s" jdbcType="VARCHAR"/>
            <result property="isRatify" column="is_ratify" jdbcType="INTEGER"/>
            <result property="isExamine" column="is_examine" jdbcType="INTEGER"/>
            <result property="ratifyUserId" column="ratify_user_id" jdbcType="INTEGER"/>
            <result property="examineUserId" column="examine_user_id" jdbcType="INTEGER"/>
            <result property="createUser" column="create_user" jdbcType="INTEGER"/>
            <result property="updateUser" column="update_user" jdbcType="INTEGER"/>
            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
        <id property="id" column="id" jdbcType="INTEGER"/>
        <result property="insOrderId" column="ins_order_id" jdbcType="INTEGER"/>
        <result property="insSampleId" column="ins_sample_id" jdbcType="INTEGER"/>
        <result property="url" column="url" jdbcType="VARCHAR"/>
        <result property="urlS" column="url_s" jdbcType="VARCHAR"/>
        <result property="isRatify" column="is_ratify" jdbcType="INTEGER"/>
        <result property="isExamine" column="is_examine" jdbcType="INTEGER"/>
        <result property="ratifyUserId" column="ratify_user_id" jdbcType="INTEGER"/>
        <result property="examineUserId" column="examine_user_id" jdbcType="INTEGER"/>
        <result property="createUser" column="create_user" jdbcType="INTEGER"/>
        <result property="updateUser" column="update_user" jdbcType="INTEGER"/>
        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
    </resultMap>
    <select id="pageInsReport" resultType="com.yuanchu.mom.dto.ReportPageDto">
        select *
        from (
        select
        ir.*,io.entrust_code,u.name write_user_name,u1.name ratify_user,u2.name examine_user,io.laboratory,l.id labId
        ir.*,io.entrust_code,sample_code,u.name write_user_name,u1.name ratify_user,u2.name
        examine_user,io.laboratory,l.id labId
        from ins_report ir
        left join ins_order io on io.id = ir.ins_order_id
        left join ins_sample isa on isa.id = ir.ins_sample_id
        left join user u on u.id = ir.write_user_id
        left join user u1 on u1.id = ir.ratify_user_id
        left join user u2 on u2.id = ir.examine_user_id
        left join laboratory l on io.laboratory=laboratory_name
        where 1=1
        <if test="laboratory!=null and laboratory!=''">
           and  laboratory=#{laboratory}
        </if>
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="getLaboratoryByName" resultType="java.lang.String">
        select s.address from seal s
        left join laboratory l on s.lab_id = l.id
        select s.address
        from seal s
                 left join laboratory l on s.lab_id = l.id
        where l.laboratory_name = #{name}
        and s.type = '报告类型'
          and s.type = '报告类型'
        order by s.create_time desc
        limit 1
    </select>
inspect-server/src/main/resources/mapper/InsSampleMapper.xml
@@ -34,13 +34,16 @@
        verify_user,
        ios.id orderStateId,
        ios.create_time,
        (SELECT ins_time FROM ins_order_state WHERE ins_order_id = a.id AND laboratory = a.son_laboratory ORDER BY ins_time DESC LIMIT 1) AS ins_time ,
        (SELECT ins_time FROM ins_order_state WHERE ins_order_id = a.id AND laboratory = a.son_laboratory and
        ins_order_state.ins_sample_id=a.sampleId ORDER BY ins_time DESC LIMIT 1) AS ins_time ,
        iou.submit_time ,
        ios.sort,
        sort_time,
        version,
        ios.num-1 num1
        FROM
        ins_order_state ios
        LEFT JOIN
        (
        SELECT
        io.id,
@@ -48,8 +51,9 @@
        io.type,
        io.appointed,
        io.send_time,
        group_concat(distinct isa.sample,' ') sample,
        group_concat(distinct isa.sample_code,' ') sampleCode,
        isa.id sampleId,
        isa.sample sample,
        isa.sample_code sampleCode,
        userName,
        checkName,
        ip.son_laboratory,
@@ -64,7 +68,7 @@
        and u.state=0
        GROUP BY ins_sample_id
        ORDER BY ins_sample_id
        ) isu ON isu.ins_sample_id = io.id
        ) isu ON isu.ins_sample_id = isa.id
        LEFT JOIN (
        SELECT ins_sample_id,uu.name checkName
        FROM ins_sample_user u LEFT JOIN user uu ON u.user_id = uu.id
@@ -72,7 +76,7 @@
        and u.state=1
        GROUP BY ins_sample_id
        ORDER BY ins_sample_id
        )isu2 ON isu2.ins_sample_id = io.id
        )isu2 ON isu2.ins_sample_id = isa.id
        LEFT JOIN ins_product ip ON ip.ins_sample_id = isa.id
        WHERE io.state = 1 and send_time is not null
        <if test="userName !=null and userName!=''">
@@ -84,7 +88,7 @@
        ip.son_laboratory,
        io.id
        ) a
        LEFT JOIN ins_order_state ios ON ios.ins_order_id = a.id AND ios.laboratory = a.son_laboratory
        ON ios.ins_order_id = a.id AND ios.laboratory = a.son_laboratory and ios.ins_sample_id=a.sampleId
        LEFT JOIN ins_order_user iou ON ios.id = iou.ins_order_state_id and ios.num=iou.num
        ORDER BY
        ios.sort,
@@ -106,8 +110,10 @@
    <select id="inspectionOrderDetailsTaskSwitching" resultType="com.yuanchu.mom.vo.InsOrderPlanTaskSwitchVo">
        select * from(
        SELECT
        a.*,ios.ins_state,ios.verify_tell,isu2.order_user_id,<!--(ios.verify_user = #{userId})--> verify_user
        a.*,ios.ins_state,ios.verify_tell,isu2.order_user_id,verify_user
        FROM
        ins_order_state ios
        LEFT JOIN
        (
        SELECT
        io.id,
@@ -115,8 +121,9 @@
        io.type,
        io.appointed,
        io.send_time,
        group_concat(distinct isa.sample,' ') sampleType,
        group_concat(distinct isa.sample_code,' ') sampleCode,
        isa.id sampleId,
        isa.sample sampleType,
        isa.sample_code sampleCode,
        isu.user_id,
        user.name userName,
        ip.son_laboratory,
@@ -125,7 +132,7 @@
        FROM
        ins_order io
        LEFT JOIN ins_sample isa ON isa.ins_order_id = io.id
        LEFT JOIN ( <!--SELECT * FROM ins_sample_user GROUP BY ins_sample_id, user_id -->
        LEFT JOIN (
        SELECT *
        FROM ins_sample_user u
        WHERE son_laboratory=#{sonLaboratory} and (ins_sample_id, id) IN (
@@ -135,12 +142,11 @@
        GROUP BY ins_sample_id
        )
        ORDER BY ins_sample_id, id
        ) isu ON isu.ins_sample_id = io.id
        ) isu ON isu.ins_sample_id = isa.id
        LEFT JOIN ins_product ip ON ip.ins_sample_id = isa.id
        LEFT JOIN user ON isu.user_id = user.id
        WHERE
        io.state = 1
        -- # AND io.ins_state != 5
        and send_time is not null
        <if test="userId !=null and userId!=''">
            and (isu.user_id = #{userId} OR isu.user_id is NULL )
@@ -150,21 +156,21 @@
        ip.son_laboratory,
        io.id
        ) a
        LEFT JOIN ins_order_state ios ON ios.ins_order_id = a.id AND ios.laboratory = a.son_laboratory
        left join (SELECT td.user_id order_user_id, td.ins_sample_id FROM ins_sample_user td,(SELECT max(id) id FROM
          ON ios.ins_order_id = a.id AND ios.laboratory = a.son_laboratory and a.sampleId=ios.ins_sample_id
        left join
        (SELECT td.user_id order_user_id, td.ins_sample_id FROM ins_sample_user td,(SELECT max(id) id FROM
        ins_sample_user where son_laboratory=#{sonLaboratory} GROUP BY ins_sample_id) md where td.id = md.id
        <if test="userId !=null and userId!=''">
            and user_id = #{userId} OR user_id is NULL
        </if>
        OR user_id is NULL
        ) isu2 on
        isu2.ins_sample_id = a.id
        isu2.ins_sample_id = a.sampleId
        where ins_state is not null
        <if test="laboratory != null and laboratory != ''">
            and a.laboratory=#{laboratory}
        </if>
        ORDER BY
        <!--a.user_id DESC,-->
        a.type DESC,
        a.id
        ) b
@@ -215,7 +221,7 @@
               ip.method_s
        from ins_sample isa
                 left join ins_product ip on isa.id = ip.ins_sample_id
        where isa.ins_order_id = #{id}
        where isa.id = #{id}
          and state = 1
          and isa.id in (select id1
                         from (select is2.id id1, ip.id
@@ -266,7 +272,7 @@
               `last_value`,
               ip.ins_result    ip_ins_result,
               state,
               ins_sample_id,
               ios.ins_sample_id,
               ip.create_user   ip_create_user,
               ip.update_user   ip_update_user,
               ip.create_time   ip_create_time,
@@ -292,11 +298,11 @@
               ip.temperature,
               ip.humidity
        from ins_sample isa
                 left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id
                 left join ins_order_state ios on isa.id = ios.ins_sample_id
                 left join ins_product ip on isa.id = ip.ins_sample_id
                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
        where isa.ins_order_id = #{id}
        where isa.id = #{sampleId}
          and state = 1
          and ip.son_laboratory = #{laboratory}
          and ios.laboratory = #{laboratory}
@@ -336,7 +342,7 @@
               `last_value`,
               ip.ins_result    ip_ins_result,
               state,
               ins_sample_id,
               ios.ins_sample_id,
               ip.create_user   ip_create_user,
               ip.update_user   ip_update_user,
               ip.create_time   ip_create_time,
@@ -362,11 +368,11 @@
               ip.temperature,
               ip.humidity
        from ins_sample isa
                 left join ins_order_state ios on isa.ins_order_id = ios.ins_order_id
                 left join ins_order_state ios on isa.id = ios.ins_sample_id
                 left join ins_product ip on isa.id = ip.ins_sample_id
                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
        where isa.ins_order_id = #{id}
        where isa.id = #{sampleId}
          and state = 1
          and ip.son_laboratory = #{laboratory}
          and ios.laboratory = #{laboratory}
@@ -591,7 +597,7 @@
               `last_value`,
               ip.ins_result    ip_ins_result,
               state,
               ins_sample_id,
               ios.ins_sample_id,
               ip.create_user   ip_create_user,
               ip.update_user   ip_update_user,
               ip.create_time   ip_create_time,
@@ -616,10 +622,10 @@
               ip.dic
        from ins_product ip
                 left join ins_sample isa on ip.ins_sample_id = isa.id
                 left join ins_order_state ios on ios.ins_order_id = isa.ins_order_id
                 left join ins_order_state ios on ios.ins_sample_id = isa.id
                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
        where ins_sample_id = #{id}
        where ios.ins_sample_id = #{id}
          and state = 1
          and ip.son_laboratory = #{laboratory}
          and ip.standard_method_list_id is not null
@@ -659,7 +665,7 @@
               `last_value`,
               ip.ins_result    ip_ins_result,
               state,
               ins_sample_id,
               ios.ins_sample_id,
               ip.create_user   ip_create_user,
               ip.update_user   ip_update_user,
               ip.create_time   ip_create_time,
@@ -684,10 +690,10 @@
               ip.dic
        from ins_product ip
                 left join ins_sample isa on ip.ins_sample_id = isa.id
                 left join ins_order_state ios on ios.ins_order_id = isa.ins_order_id
                 left join ins_order_state ios on ios.ins_sample_id = isa.id
                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
        where ins_sample_id = #{id}
        where ios.ins_sample_id = #{id}
          and state = 1
          and ip.son_laboratory = #{laboratory}
          and ip.standard_method_list_id is not null
@@ -725,7 +731,7 @@
               `last_value`,
               ip.ins_result    ip_ins_result,
               state,
               ins_sample_id,
               ios.ins_sample_id,
               ip.create_user   ip_create_user,
               ip.update_user   ip_update_user,
               ip.create_time   ip_create_time,
@@ -750,10 +756,10 @@
               ip.dic
        from ins_product ip
                 left join ins_sample isa on ip.ins_sample_id = isa.id
                 left join ins_order_state ios on ios.ins_order_id = isa.ins_order_id
                 left join ins_order_state ios on ios.ins_sample_id = isa.id
                 left join ins_product_result ipr on ip.id = ipr.ins_product_id
                 left join ins_product_result_2 ipr2 on ip.id = ipr2.ins_product_id
        where ins_sample_id = #{id}
        where ios.ins_sample_id = #{id}
          and state = 1
          and ip.son_laboratory = #{laboratory}
          and ip.standard_method_list_id is not null
@@ -858,8 +864,8 @@
        <result property="insState" column="ins_state" jdbcType="INTEGER"/>
        <result property="joinNum" column="join_num" jdbcType="INTEGER"/>
        <result property="remark" column="remark" jdbcType="VARCHAR"/>
        <result property="issueTime" column="issue_time" />
        <result property="issueName" column="issueName" />
        <result property="issueTime" column="issue_time"/>
        <result property="issueName" column="issueName"/>
        <result property="createUser" column="create_user" jdbcType="INTEGER"/>
        <result property="updateUser" column="update_user" jdbcType="INTEGER"/>
        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
@@ -941,7 +947,7 @@
    </select>
    <select id="selectInsSample" resultType="com.yuanchu.mom.pojo.InsSample">
        select isa.*,
        case when entrust_code is null then out_entrust_code else entrust_code end as  entrust_code
        case when entrust_code is null then out_entrust_code else entrust_code end as entrust_code
        from ins_sample isa
        left join ins_order io on isa.ins_order_id = io.id
        where ins_order_id in
@@ -956,9 +962,5 @@
        where son_laboratory = '电路试验'
          and state = 1
          and ins_order_id = #{insOrderId}
    </select>
    <select id="selectList1" resultType="com.yuanchu.mom.dto.SampleProductDto">
        select * from ins_sample where ins_order_id=#{id
}
    </select>
</mapper>