//package com.ruoyi.inspect.service.impl; // //import cn.hutool.core.collection.CollUtil; //import cn.hutool.core.util.ObjectUtil; //import cn.hutool.core.util.StrUtil; //import cn.hutool.json.JSONUtil; //import com.alibaba.excel.EasyExcel; //import com.alibaba.excel.ExcelWriter; //import com.alibaba.excel.write.metadata.WriteSheet; //import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; //import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy; //import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; //import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; //import com.baomidou.mybatisplus.core.metadata.IPage; //import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; //import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; //import com.baomidou.mybatisplus.core.toolkit.Wrappers; //import com.baomidou.mybatisplus.extension.plugins.pagination.Page; //import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; //import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper; //import com.ruoyi.basic.mapper.StandardProductListMapper; //import com.ruoyi.basic.pojo.IfsInventoryQuantity; //import com.ruoyi.basic.pojo.StandardProductList; //import com.ruoyi.basic.pojo.StructureTestObject; //import com.ruoyi.common.constant.InsOrderTypeConstants; //import com.ruoyi.common.core.domain.entity.User; //import com.ruoyi.common.numgen.NumberGenerator; //import com.ruoyi.common.utils.*; //import com.ruoyi.framework.exception.ErrorException; //import com.ruoyi.inspect.dto.*; //import com.ruoyi.inspect.mapper.*; //import com.ruoyi.inspect.pojo.*; //import com.ruoyi.inspect.service.InsOrderService; //import com.ruoyi.inspect.service.InsProductService; //import com.ruoyi.inspect.service.InsSampleService; //import com.ruoyi.inspect.vo.InsOrderPrintingVo; //import com.ruoyi.inspect.vo.SampleDefectsFatherVo; //import com.ruoyi.system.mapper.CustomMapper; //import com.ruoyi.system.mapper.UserMapper; //import lombok.AllArgsConstructor; //import org.apache.commons.lang3.StringUtils; //import org.springframework.beans.BeanUtils; //import org.springframework.stereotype.Service; //import org.springframework.transaction.annotation.Transactional; // //import javax.servlet.http.HttpServletResponse; //import java.io.IOException; //import java.math.BigDecimal; //import java.net.URLEncoder; //import java.time.LocalDate; //import java.time.LocalDateTime; //import java.time.Month; //import java.time.format.DateTimeFormatter; //import java.util.*; //import java.util.concurrent.atomic.AtomicInteger; //import java.util.stream.Collectors; // ///** // * @author gaoaoy // * @description 针对表【ins_order(检验下单)】的数据库操作Service实现 // * @createDate 2024-03-12 16:17:55 // */ //@Service //@AllArgsConstructor //public class InsOrderServiceImpl extends ServiceImpl // implements InsOrderService { // // private InsOrderMapper insOrderMapper; // private InsSampleService insSampleService; // private InsSampleMapper insSampleMapper; // private InsProductService insProductService; // private InsProductMapper insProductMapper; // private InsProductUserMapper insProductUserMapper; // private InsSampleUserMapper insSampleUserMapper; // private InsOrderStateMapper insOrderStateMapper; // private UserMapper userMapper; // private IfsInventoryQuantityMapper ifsInventoryQuantityMapper; // private CustomMapper customMapper; // private final NumberGenerator numberGenerator; // private InsReportMapper insReportMapper; // private InsUnqualifiedRetestProductMapper insUnqualifiedRetestProductMapper; // private IfsApiUtils ifsApiUtils; // private SpotCheckQuarterItemMapper spotCheckQuarterItemMapper; // private StandardProductListMapper standardProductListMapper; // // // // //获取检验下单数据 // @Override // public IPage selectInsOrderParameter(IPage page, SampleOrderDto sampleOrderDto) { // //todo: 只看我判断全部,个人,组织的权限 // String laboratory = null; // // 判断是否是全部 // String isOrderAll = null; // if (sampleOrderDto.getState() != null && sampleOrderDto.getState() == -2) { // isOrderAll = "1"; // sampleOrderDto.setState(null); // } // IPage sampleOrderDtoIPage = insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll); // return insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll); // } // // // @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(StringUtils.isNotEmpty(appointed) ? LocalDate.parse(appointed) : null); // insOrder.setSendTime(LocalDateTime.now()); // insOrderMapper.updateById(insOrder); // List insSamples = insSampleMapper.selectList(Wrappers.lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId)); // List ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList()); // List insProducts = insProductMapper.selectList(Wrappers.lambdaQuery() // .in(InsProduct::getInsSampleId, ids) // .eq(InsProduct::getState, 1) // .select(InsProduct::getSonLaboratory).groupBy(InsProduct::getSonLaboratory)); // for (InsProduct insProduct : insProducts) { // InsOrderState insOrderState = new InsOrderState(); // insOrderState.setInsOrderId(orderId); // try { // insOrderState.setLaboratory(insProduct.getSonLaboratory()); // } catch (NullPointerException e) { // throw new ErrorException("该检验单有未维护实验室的检验项目"); // } // insOrderState.setInsState(0); // 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); // } // // // 判断订单有没有绑定抽样计划 // InsOrder order = insOrderMapper.selectById(orderId); // if (order.getQuarterItemId() != null) { // // 需要添加下发时间到抽样时间, 取样人员就是检测人 // SpotCheckQuarterItem spotCheckQuarterItem = spotCheckQuarterItemMapper.selectById(order.getQuarterItemId()); // spotCheckQuarterItem.setSpotCheckTime(order.getSendTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); // User user = userMapper.selectById(userId); // spotCheckQuarterItem.setSamplingUser(user.getName()); // spotCheckQuarterItemMapper.updateById(spotCheckQuarterItem); // } // return 1; // } // // @Override // @Transactional(rollbackFor = Exception.class) // public int addInsOrder(List list, InsOrder insOrder, List> pairing) { // // todo: 下单判断抽样计划的唯一性 // if (insOrder.getQuarterItemId() != null) { // Long quarterItemCount = insOrderMapper.selectCount(Wrappers.lambdaQuery() // .eq(InsOrder::getQuarterItemId, insOrder.getQuarterItemId()) // .notIn(InsOrder::getState, -1 ,2 ,3)); // if (quarterItemCount > 0) { // throw new ErrorException("该抽样计划已被绑定过"); // } // } // // insOrder.setState(0); // // LocalDate appointed = insOrder.getAppointed(); // // insOrderMapper.insert(insOrder); // 主表 // // list.forEach(a -> { // a.setId(null); // a.setInsOrderId(insOrder.getId()); // insSampleMapper.insert(a); // if (ObjectUtil.isNotEmpty(a.getInsProduct())) { // // 判断是否填写待检项数量 // if (a.getQuantity() != null) { // List ip2 = new ArrayList<>(); // for (Integer i = 1; i <= a.getQuantity(); i++) { // // 重新拷贝 创建新对象 // AtomicInteger atomicInteger = new AtomicInteger(i); // List insProducts = a.getInsProduct().stream().map(insProduct -> { // insProduct.setRawMaterialTag(String.valueOf(atomicInteger.get())); // InsProduct product = new InsProduct(); // BeanUtils.copyProperties(insProduct, product); // return product; // }).collect(Collectors.toList()); // // ip2.addAll(insProducts); // } // addInsProductMethod(a.getId(), ip2); // } else { // addInsProductMethod(a.getId(), a.getInsProduct()); // } // } // // 判断是否有电缆配置 // if (ObjectUtil.isNotEmpty(a.getInsulating())) { // // 判断是否有辅助线芯 // if (ObjectUtil.isNotEmpty(a.getAuxiliaryWireCore())) { // if (a.getAuxiliaryWireCore().getInsProduct().stream().filter(insProduct -> insProduct.getState() == 1).count() != // a.getInsulating().getInsProduct().stream().filter(insProduct -> insProduct.getState() == 1).count()) { // throw new ErrorException("电缆配置辅助线芯检验项数量不统一, 请检查"); // } // } // List ip2 = new ArrayList<>(); // for (String s : a.getInsulating().getNum()) { // // 重新拷贝 创建新对象 // List insProducts = a.getInsulating().getInsProduct().stream().map(insProduct -> { // insProduct.setCableTag(s); // InsProduct product = new InsProduct(); // BeanUtils.copyProperties(insProduct, product); // return product; // }).collect(Collectors.toList()); // ip2.addAll(insProducts); // } // for (InsProduct product : ip2) { // product.setStandardMethodListId(a.getInsulating().getStandardMethodListId()); // } // addInsProductMethod(a.getId(), ip2); // } // // 判断是否有辅助线芯 // if (ObjectUtil.isNotEmpty(a.getAuxiliaryWireCore())) { // List ip2 = new ArrayList<>(); // for (String s : a.getAuxiliaryWireCore().getNum()) { // // 重新拷贝 创建新对象 // List insProducts = a.getAuxiliaryWireCore().getInsProduct().stream().map(insProduct -> { // insProduct.setCableTag(s); // InsProduct product = new InsProduct(); // BeanUtils.copyProperties(insProduct, product); // return product; // }).collect(Collectors.toList()); // ip2.addAll(insProducts); // } // for (InsProduct product : ip2) { // product.setStandardMethodListId(a.getAuxiliaryWireCore().getStandardMethodListId()); // } // addInsProductMethod(a.getId(), ip2); // } // // 子样品配置 // if (ObjectUtil.isNotEmpty(a.getChildSampleList())) { // for (SampleProductDto b : a.getChildSampleList()) { // for (int i = 0; i < b.getNum(); i++) { // b.setId(null); // b.setInsOrderId(insOrder.getId()); // b.setParentId(a.getId()); // insSampleMapper.insert(b); // if (ObjectUtil.isNotEmpty(b.getInsProduct())) { // addInsProductMethod(b.getId(), b.getInsProduct()); // } // } // } // } // }); // //是否为原材料下单 // if (insOrder.getTypeSource() != null && insOrder.getTypeSource().equals(1)) { // // 原材料下单: 委托人就是报检人, 生产单位就是供应商单位 // IfsInventoryQuantity ifsInventoryQuantity = ifsInventoryQuantityMapper.selectById(insOrder.getIfsInventoryId()); // Integer declareUserId = ifsInventoryQuantity.getDeclareUserId(); // User user = userMapper.selectById(declareUserId); // if (user == null) { // throw new ErrorException("缺少报检人信息"); // } // // 供应商名称 // insOrder.setProduction(ifsInventoryQuantity.getSupplierName()); // insOrder.setProductionEn(""); // // 委托人名称 // insOrder.setPrepareUserId(user.getId()); // insOrder.setPrepareUser(user.getName()); // insOrder.setPrepareUserEn(user.getNameEn()); // insOrder.setPhone(user.getPhone()); // insOrder.setState(1); // Long count1 = insOrderMapper.selectCount(Wrappers.lambdaQuery() // .eq(InsOrder::getIfsInventoryId, insOrder.getIfsInventoryId()) // .ne(InsOrder::getState, -1) // .eq(InsOrder::getOrderType, InsOrderTypeConstants.ENTER_THE_FACTORY) // .ne(InsOrder::getId, insOrder.getId())); // // 判断之前是否有进厂检验 // if (count1 == 0) { // ifsInventoryQuantityMapper.update(null, new LambdaUpdateWrapper().set(IfsInventoryQuantity::getState, 1) // .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId())); // } // // // 判断结束状态修改合格状态 // if (ifsInventoryQuantity.getIsFinish().equals(0)) { // ifsInventoryQuantityMapper.update(null, Wrappers.lambdaUpdate() // .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId()) // .set(IfsInventoryQuantity::getInspectStatus, 0)); // } // // upInsOrderOfState(insOrder); // upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "原材料"); // // // // 根据零件号判断是否是辅材 // boolean isRaw = false; // StructureTestObject productObject = insOrderMapper.selectProductByPartNo(ifsInventoryQuantity.getPartNo()); // // 查询产品 // if (productObject != null && StrUtil.isNotBlank(productObject.getObjectType()) && productObject.getObjectType().equals("1")) { // isRaw = true; // } else { // // 查询对象 // StructureTestObject testObject = insOrderMapper.selectByPartNo(ifsInventoryQuantity.getPartNo()); // if (testObject != null && StrUtil.isNotBlank(testObject.getObjectType()) && testObject.getObjectType().equals("1")) { // isRaw = true; // } // } // // if (isRaw) { // // 获取当前季度的开始时间和结束时间 // LocalDateTime now = LocalDateTime.now(); // // 获取当前月份 // int month = now.getMonthValue(); // // 确定当前季度的开始月份 // int startMonth = (month - 1) / 3 * 3 + 1; // // 构造季度的开始时间 // LocalDateTime startOfQuarter = LocalDateTime.of(now.getYear(), Month.of(startMonth), 1, 0, 0); // // 计算下一个季度的开始时间 // LocalDateTime startOfNextQuarter = startOfQuarter.plusMonths(3); // // 计算当前季度的结束时间 // LocalDateTime endOfQuarter = startOfNextQuarter.minusSeconds(1); // // // 根据下单的规格型号判断是否为季度首次出现 // Integer count = ifsInventoryQuantityMapper.selectIsFirst(insOrder.getPartDetail(), // ifsInventoryQuantity.getSupplierName(), // startOfNextQuarter, // endOfQuarter); // // if(count == 0) { // ifsInventoryQuantity.setIsFirst(1); // ifsInventoryQuantityMapper.update(null, Wrappers.lambdaUpdate() // .eq(IfsInventoryQuantity::getId, insOrder.getIfsInventoryId()) // .set(IfsInventoryQuantity::getIsFirst, 1)); // } // } // } // return insOrder.getId(); // } // // /** // * 添加检验项 // * @param sampleId // * @param productList // */ // private void addInsProductMethod(Integer sampleId, List productList) { // for (InsProduct product : productList) { // if (product.getState() == 1) { // product.setId(null); // product.setCreateTime(null); // product.setCreateUser(null); // product.setUpdateTime(null); // product.setUpdateUser(null); // product.setInsSampleId(sampleId); // if (product.getInspectionItemSubclass() == null) { // product.setInspectionItemSubclass(""); // } // if (StringUtils.isBlank(product.getAsk()) || StringUtils.isBlank(product.getTell())) { // throw new ErrorException("有检验项的要求值或要求描述为空, 请先去标准库配置要求值或要求描述"); // } // insProductMapper.insert(product); // } // } // } // // // @Override // public Map getInsOrder(Integer id) { // Map map = new HashMap<>(); // InsOrder insOrder = insOrderMapper.selectById(id); // List list; // // 判断是否是进厂报告免检 // if (insOrder.getIsExemption().equals(1)) { // list = insSampleMapper.selectExemptionByOrderId(id); // } else { // list = insSampleMapper.selectSampleProductListByOrderId2(id); // } // Map map1 = insSampleMapper.selectInsOrder(id); // map.put("insOrder", insOrder); // map.put("sampleProduct", list); // map.put("insOrderTemplate", map1); // return map; // } // // @Override // public int upInsOrderOfState(InsOrder insOrder) { // insOrder.setExamineTime(LocalDateTime.now()); // if (insOrder.getState() == 1) { // //审核通过才会生成委托编号 // // todo: 检验类型编号 // InsOrder order = this.getById(insOrder.getId()); // String code = ""; // switch (order.getOrderType()) { // case InsOrderTypeConstants.SPOT_CHECK: // code = "C"; // break; // case InsOrderTypeConstants.CUSTOMER_ORDERED: // code = "W"; // break; // case InsOrderTypeConstants.ENTER_THE_FACTORY: // case InsOrderTypeConstants.QUARTERLY_TEST: // code = "Y"; // break; // } // // 生成编号 // String no = numberGenerator.generateNumberWithPrefix(3, // "JCZX/ZB-" + code + LimsDateUtil.resetDate(LocalDateTime.now()), // InsOrder::getEntrustCode); // // 判断是否是季度检验, 是季度检验取消原材料季度检验下单 // if (InsOrderTypeConstants.QUARTERLY_TEST.equals(order.getOrderType())) { // ifsInventoryQuantityMapper.update(null, Wrappers.lambdaUpdate() // .eq(IfsInventoryQuantity::getId, order.getIfsInventoryId()) // .set(IfsInventoryQuantity::getIsQuarter, 0)); // // // 查询是否有过进厂检验, 有获取里面的编号 // InsOrder order1 = insOrderMapper.selectOne(Wrappers.lambdaQuery() // .eq(InsOrder::getIfsInventoryId, order.getIfsInventoryId()) // .ne(InsOrder::getState, -1) // .eq(InsOrder::getOrderType, InsOrderTypeConstants.ENTER_THE_FACTORY)); // if (order1 != null) { // no = order1.getEntrustCode(); // } // } // // int count = 1; // // 查询样品表 // List insSamples = insSampleMapper.selectList(Wrappers.lambdaQuery() // .eq(InsSample::getInsOrderId, insOrder.getId())); // for (InsSample insSample : insSamples) { // if (StringUtils.isBlank(insSample.getSampleCode())) { // // 如果只有一个样品就不需要拼接数字 // if (insSamples.size() != 1) { // insSample.setSampleCode(no + "-" + count); // count++; // } else { // insSample.setSampleCode(no); // } // } // } // insSampleService.updateBatchById(insSamples); // // insOrder.setEntrustCode(no); // } // return insOrderMapper.updateById(insOrder); // } // // @Override // public Map getInsOrderAndSample(Integer id, String laboratory) { // Map map = new HashMap<>(); // InsOrder insOrder = insOrderMapper.selectById(id); // List list = insSampleMapper.getInsOrderAndSample(id, laboratory); // for (SampleProductDto sampleProductDto : list) { // List ids = sampleProductDto.getInsProduct().stream().map(InsProduct::getId).collect(Collectors.toList()); // List insProductUsers = insProductUserMapper.selectList(Wrappers.lambdaQuery() // .in(InsProductUser::getInsProductId, ids)); // if (CollectionUtils.isNotEmpty(insProductUsers)) { // List 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); // //查询所有记录模版去重 // List> list2 = insOrderMapper.selectReportModelByOrderId(id, laboratory); // map.put("reportModel", list2); // return map; // } // // @Override // public IPage selectSampleAndProductByOrderId(IPage page, SampleProductDto2 sampleProductDto) { // IPage productDto2IPage = insOrderMapper.selectSampleAndProductByOrderId(page, // QueryWrappers.queryWrappers(sampleProductDto) // .orderByAsc("sample_code") // .orderByAsc("cable_tag") // .orderByAsc("sort"), // sampleProductDto.getId()); // return productDto2IPage; // } // // @Override // public IPage costStatistics(IPage page, CostStatisticsDto costStatisticsDto) { // String dates = costStatisticsDto.getDates(); // String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); // costStatisticsDto.setDates(null); // // //todo:仅看自己 // // IPage dtoIPage = insOrderMapper.selectCostStatistics(page, QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59")); // List collect = dtoIPage.getRecords().stream().map(dto -> { // Set uniqueTags = new HashSet<>(); // if (dto.getInspectionItem().contains(",")) { // for (String s : dto.getInspectionItem().split(",")) { // uniqueTags.add(s.split("@")[0]); // } // } else { // uniqueTags.add(dto.getInspectionItem().split("@")[0]); // } // dto.setInspectionItem(uniqueTags.toString()); // return dto; // }).collect(Collectors.toList()); // dtoIPage.setRecords(collect); // return dtoIPage; // } // // @Override // public Map costStatistics2(CostStatisticsDto costStatisticsDto) { // Map map = new HashMap<>(); // String dates = costStatisticsDto.getDates(); // String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); // costStatisticsDto.setDates(null); // List costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59")); // double totalPrice = costStatisticsDtos.stream() // .filter(dto -> dto.getPrice() != null) // 过滤掉价格为 null 的对象 // .mapToDouble(value -> value.getPrice().doubleValue() * value.getNum()) // .sum(); // map.put("total", totalPrice); // return map; // } // // @Override // public Map selectSampleDefects(Page page, String inspectionItems, String orderNumber) { // List sampleDefectsFatherVos = insOrderMapper.selectSampleDefects(page, inspectionItems, orderNumber); // Map map = new HashMap<>(); // map.put("records", sampleDefectsFatherVos); // Long aLong = insOrderMapper.getCount(inspectionItems, orderNumber); // map.put("total", aLong); // return map; // } // // @Override // public int updateStatus(Integer id) { // return insOrderMapper.updateStatus(id); // } // // // @Override // public void export(CostStatisticsDto costStatisticsDto, HttpServletResponse response) throws IOException { // //查询导出的费用统计数据 // String dates = costStatisticsDto.getDates(); // String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(","); // costStatisticsDto.setDates(null); // List costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59")); // costStatisticsDtos = costStatisticsDtos.stream().map(dto -> { // Set uniqueTags = new HashSet<>(); // if (dto.getInspectionItem().contains(",")) { // for (String s : dto.getInspectionItem().split(",")) { // uniqueTags.add(s.split("@")[0]); // } // } else { // uniqueTags.add(dto.getInspectionItem().split("@")[0]); // } // dto.setInspectionItem(uniqueTags.toString()); // return dto; // }).collect(Collectors.toList()); // // response.setContentType("application/vnd.ms-excel"); // response.setCharacterEncoding("UTF-8"); // // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 // String fileName = URLEncoder.encode("样品费用统计导出", "UTF-8"); // response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); // Map> groupByCompany = // costStatisticsDtos.stream().filter(e -> StrUtil.isNotEmpty(e.getCompany())) // .collect(Collectors.groupingBy(CostStatisticsDto::getCompany)); // try { // // 新建ExcelWriter // // 新建ExcelWriter // ExcelWriter excelWriter = // EasyExcel.write(response.getOutputStream()) // .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25)) // .build(); // for (Map.Entry> companyDataEntry : groupByCompany.entrySet()) { // String sheetName = companyDataEntry.getKey(); // List dataList = companyDataEntry.getValue(); // WriteSheet mainSheet = EasyExcel.writerSheet(sheetName) // .head(CostStatisticsDto.class) // .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25)) // .build(); // excelWriter.write(dataList, mainSheet); // } // // 关闭流 // excelWriter.finish(); // } catch (IOException e) { // throw new RuntimeException("导出失败"); // } // } // // /** // * 获取ifs库存信息 // * @param // * @return // */ // @Override // public void getIfsOrder() { // HashMap map = new HashMap<>(); // map.put("LOCATION_NO","1302"); // map.put("STATE_DB","To be Inspected"); // List> inventory = ifsApiUtils.getInventory(JSONUtil.toJsonStr(map)); // if(inventory.size() == 0) { // return; // } // // 进行保存 // for (Map map1 : inventory) { // DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 时间格式化 // IfsInventoryQuantity ifsInventoryQuantity = new IfsInventoryQuantity(); // ifsInventoryQuantity.setContract(map1.get("CONTRACT") == null ? "" : map1.get("CONTRACT").toString()); // 域 // ifsInventoryQuantity.setPartNo(map1.get("PART_NO") == null ? "" : map1.get("PART_NO").toString() ); // 零件号 // ifsInventoryQuantity.setPartDesc(map1.get("PART_DESC") == null ? "" : map1.get("PART_DESC").toString()); // 零件描述 // ifsInventoryQuantity.setOrderNo(map1.get("ORDER_NO") == null ? "" : map1.get("ORDER_NO").toString()); // 订单号 // ifsInventoryQuantity.setLineNo(map1.get("LINE_NO") == null ? "" : map1.get("LINE_NO").toString()); // 行号 // ifsInventoryQuantity.setReleaseNo(map1.get("RELEASE_NO") == null ? "" : map1.get("RELEASE_NO").toString()); // 下达号 // ifsInventoryQuantity.setReceiptNo(Integer.parseInt(map1.get("RECEIPT_NO") == null ? "" : map1.get("RECEIPT_NO").toString())); // 接收号 // ifsInventoryQuantity.setStatus(map1.get("STATE") == null ? "" : map1.get("STATE").toString()); // 状态描述 // ifsInventoryQuantity.setStatusDb(map1.get("STATE_DB") == null ? "" : map1.get("STATE_DB").toString()); // 状态 // if(map1.get("QTY_ARRIVED") != null) { // ifsInventoryQuantity.setQtyArrived(new BigDecimal(map1.get("QTY_ARRIVED").toString())); // 抵达的采购数量 // } // if(map1.get("QTY_INSPECTED") != null) { // ifsInventoryQuantity.setQtyInspected(new BigDecimal(map1.get("QTY_INSPECTED").toString())); // 已检验的购买数量 // } // if(map1.get("QTY_TO_INSPECT") != null) { // ifsInventoryQuantity.setQtyToInspect(new BigDecimal(map1.get("QTY_TO_INSPECT").toString())); // 要检验的采购数量 // } // if(map1.get("INV_QTY_IN_STORE") != null) { // ifsInventoryQuantity.setInvQtyInStore(new BigDecimal(map1.get("INV_QTY_IN_STORE").toString())); // 抵达的库存数量 // } // if(map1.get("PUR_QTY_IN_STORE") != null) { // ifsInventoryQuantity.setPurQtyInStore(new BigDecimal( map1.get("PUR_QTY_IN_STORE").toString())); // 抵达的采购数量 // // } // ifsInventoryQuantity.setSupplierId(map1.get("SUPPLIER_ID") == null ? "" : map1.get("SUPPLIER_ID").toString()); // 供应商ID // ifsInventoryQuantity.setSupplierName(map1.get("SUPPLIER_NAME") == null ? "" : map1.get("SUPPLIER_NAME").toString()); // 供应商名称 // ifsInventoryQuantity.setConfigurationId(map1.get("CONFIGURATION_ID") == null ? "" : map1.get("CONFIGURATION_ID").toString()); // 配置标识 // ifsInventoryQuantity.setLotBatchNo(map1.get("LOT_BATCH_NO") == null ? "" : map1.get("LOT_BATCH_NO").toString()); // 批次号 // ifsInventoryQuantity.setUpdateBatchNo(map1.get("LOT_BATCH_NO") == null ? "" : map1.get("LOT_BATCH_NO").toString()); // 批次号 // ifsInventoryQuantity.setWaivDevRejNo(map1.get("WAIV_DEV_REJ_NO") == null ? "" : map1.get("WAIV_DEV_REJ_NO").toString()); // WDR号 // ifsInventoryQuantity.setActivitySeq(map1.get("ACTIVITY_SEQ") == null ? null : Integer.parseInt(map1.get("ACTIVITY_SEQ").toString())); // 活动序列 // ifsInventoryQuantity.setSerialNo(map1.get("SERIAL_NO") == null ? "" : map1.get("SERIAL_NO").toString()); // 序列号 // ifsInventoryQuantity.setLocationNo(map1.get("LOCATION_NO") == null ? "" : map1.get("LOCATION_NO").toString()); // 库位号 // ifsInventoryQuantity.setEngChgLevel(map1.get("ENG_CHG_LEVEL") == null ? "" : map1.get("ENG_CHG_LEVEL").toString()); // 版本号 // ifsInventoryQuantity.setReceiver(map1.get("RECEIVER") == null ? "" : map1.get("RECEIVER").toString()); // 接收人 // ifsInventoryQuantity.setReceiverName(map1.get("RECEIVER_NAME") == null ? "" : map1.get("RECEIVER_NAME").toString()); // 接收人名称 // ifsInventoryQuantity.setBuyerCode(map1.get("BUYER_CODE") == null ? "" : map1.get("BUYER_CODE").toString()); // 采购员 // ifsInventoryQuantity.setBuyerName(map1.get("BUYER_NAME") == null ? "" : map1.get("BUYER_NAME").toString()); // 采购员名称 // // if(map1.get("ARRIVE_DATE") != null) { // ifsInventoryQuantity.setArriveDate(LocalDateTime.parse(map1.get("ARRIVE_DATE").toString(),dateTimeFormatter)); // 实际到货日期 // } // if(map1.get("DELIVERY_DATE") != null) { // ifsInventoryQuantity.setDeliveryDate(LocalDateTime.parse(map1.get("DELIVERY_DATE").toString(),dateTimeFormatter)); // 实际交货日期 // } // if(map1.get("PRODUCT_DATE") != null) { // ifsInventoryQuantity.setProductDate(LocalDateTime.parse(map1.get("PRODUCT_DATE").toString(),dateTimeFormatter)); // 生产日期 // // } // if(map1.get("INVALID_DATE") != null) { // ifsInventoryQuantity.setInvalidDate(LocalDateTime.parse(map1.get("INVALID_DATE").toString(),dateTimeFormatter)); // 失效日期 // } // if(map1.get("APPROVED_DATE") != null) { // ifsInventoryQuantity.setApprovedDate(LocalDateTime.parse(map1.get("APPROVED_DATE").toString(),dateTimeFormatter)); // 审批日期 // } // ifsInventoryQuantity.setReqCeater(map1.get("REQ_CEATER") == null ? "" : map1.get("REQ_CEATER").toString()); // 采购申请创建人 // ifsInventoryQuantity.setReqCeaterName(map1.get("REQ_CEATER_NAME") == null ? "" : map1.get("REQ_CEATER_NAME").toString()); // 采购申请创建人名称 // ifsInventoryQuantity.setLineRemarks(map1.get("LINE_REMARKS") == null ? "" : map1.get("LINE_REMARKS").toString()); // 采购订单行备注 // ifsInventoryQuantity.setBuyUnitMeas(map1.get("BUY_UNIT_MEAS") == null ? "" : map1.get("BUY_UNIT_MEAS").toString()); // 采购单位 // ifsInventoryQuantity.setReceiverDate(LocalDateTime.now()); // 接收日期 // ifsInventoryQuantity.setIsSource(1); // ifsInventoryQuantity.setState(0); // // IfsInventoryQuantity one = ifsInventoryQuantityMapper.selectOne(new LambdaQueryWrapper() // .eq(IfsInventoryQuantity::getOrderNo, ifsInventoryQuantity.getOrderNo()) // .eq(IfsInventoryQuantity::getLineNo, ifsInventoryQuantity.getLineNo()) // .eq(IfsInventoryQuantity::getReleaseNo, ifsInventoryQuantity.getReleaseNo()) // .eq(IfsInventoryQuantity::getReceiptNo, ifsInventoryQuantity.getReceiptNo()) // .eq(IfsInventoryQuantity::getLocationNo, ifsInventoryQuantity.getLocationNo()) // .eq(IfsInventoryQuantity::getLotBatchNo, ifsInventoryQuantity.getLotBatchNo()) // .eq(IfsInventoryQuantity::getSerialNo, ifsInventoryQuantity.getSerialNo()) // .eq(IfsInventoryQuantity::getEngChgLevel, ifsInventoryQuantity.getEngChgLevel()) // .eq(IfsInventoryQuantity::getWaivDevRejNo, ifsInventoryQuantity.getWaivDevRejNo()) // .eq(IfsInventoryQuantity::getActivitySeq, ifsInventoryQuantity.getActivitySeq()) // ); // if(Objects.isNull(one)) { // // ifsInventoryQuantity.setIsFirst(0); // // 查询产业链检测数据 // String industryChainAttrFields = IndustryChainUtils.getIndustryChainAttrFields(ifsInventoryQuantity.getOrderNo(), // ifsInventoryQuantity.getLineNo(), // ifsInventoryQuantity.getReleaseNo()); // ifsInventoryQuantity.setIndustryChain(industryChainAttrFields); // // ifsInventoryQuantityMapper.insert(ifsInventoryQuantity); // } // } // } // // /** // * id是原材料的id // * // * 修改订单单号 // * @param insOrder // */ // @Override // @Transactional(rollbackFor = Exception.class) // public void updateEntrustCode(InsOrder insOrder) { // // 判断当前订单是否生成了报告, 生成了报告不能修改单号 // List insOrders = insOrderMapper.selectList(Wrappers.lambdaQuery() // .eq(InsOrder::getIfsInventoryId, insOrder.getId()) // .ne(InsOrder::getState, -1)); // List insOrderIds = insOrders.stream().map(InsOrder::getId).collect(Collectors.toList()); // Long count = insReportMapper.selectCount(Wrappers.lambdaQuery() // .in(InsReport::getInsOrderId, insOrderIds)); // if (count > 0 ) { // throw new ErrorException("当前订单已经生成了报告不能修改编号"); // } // // // Long count1 = insOrderMapper.selectCount(Wrappers.lambdaQuery() // .eq(InsOrder::getEntrustCode, insOrder.getEntrustCode()) // .ne(InsOrder::getIfsInventoryId, insOrder.getId()) // .ne(InsOrder::getInsState, -1)); // if (count1 > 0) { // throw new ErrorException("该编号重复"); // } // // //修改报告的编号 // insOrderMapper.update(null, Wrappers.lambdaUpdate() // .eq(InsOrder::getIfsInventoryId, insOrder.getId()) // .set(InsOrder::getEntrustCode, insOrder.getEntrustCode())); // // // 修改样品的编号 // // 查询所有的样品 // List insSamples = insSampleMapper.selectList(Wrappers.lambdaQuery() // .in(InsSample::getInsOrderId, insOrderIds)); // for (InsSample insSample : insSamples) { // String sampleCode = insSample.getSampleCode(); // String updateCode = insOrder.getEntrustCode(); // // 查找最后一个'-'的位置 // int lastDashIndex = sampleCode.lastIndexOf('-'); // if (lastDashIndex != -1) { // int secondLastDashIndex = sampleCode.lastIndexOf('-', lastDashIndex - 1); // // 处理最后一个'-'前的部分 // if (secondLastDashIndex != -1) { // // 处理最后一个'-'及之后的部分 // String afterLastDash = sampleCode.substring(lastDashIndex); // // updateCode = updateCode + afterLastDash; // } // } // insSampleMapper.update(null, Wrappers.lambdaUpdate() // .eq(InsSample::getId, insSample.getId()) // .set(InsSample::getSampleCode, updateCode)); // // } // } // // @Override // public List getRetestResult(Integer insProductId) { // return insUnqualifiedRetestProductMapper.selectList(Wrappers.lambdaQuery() // .eq(InsUnqualifiedRetestProduct::getInsProductId, insProductId)); // } // // /** // * 修改采购订单接收状态, 避免回滚 // * @param id // */ // @Transactional // public void updateIfsInventoryQuantity(Integer id) { // ifsInventoryQuantityMapper.update(null, Wrappers.lambdaUpdate() // .set(IfsInventoryQuantity::getIsRegister, 1) // .eq(IfsInventoryQuantity::getId, id)); // } // // /** // * 新增铜单丝下单 // * @param list // * @param insOrder // * @return // */ // @Override // public int addRawCopperOrder(List list, CopperInsOrderDto insOrder) { // insOrder.setState(1); // insOrder.setTypeSource(1); // // LocalDate appointed = insOrder.getAppointed(); // // insOrderMapper.insert(insOrder); // 主表 // // list.forEach(a -> { // a.setId(null); // a.setInsOrderId(insOrder.getId()); // insSampleMapper.insert(a); // if (ObjectUtil.isNotEmpty(a.getInsProduct())) { // // 判断是否填写待检项数量 // if (a.getQuantity() != null) { // List ip2 = new ArrayList<>(); // for (Integer i = 1; i <= a.getQuantity(); i++) { // // 重新拷贝 创建新对象 // AtomicInteger atomicInteger = new AtomicInteger(i); // List insProducts = a.getInsProduct().stream().map(insProduct -> { // insProduct.setRawMaterialTag(String.valueOf(atomicInteger.get())); // InsProduct product = new InsProduct(); // BeanUtils.copyProperties(insProduct, product); // return product; // }).collect(Collectors.toList()); // // ip2.addAll(insProducts); // } // addInsProductMethod(a.getId(), ip2); // } else { // addInsProductMethod(a.getId(), a.getInsProduct()); // } // } // if (ObjectUtil.isNotEmpty(a.getChildSampleList())) { // for (SampleProductDto b : a.getChildSampleList()) { // for (int i = 0; i < b.getNum(); i++) { // b.setId(null); // b.setInsOrderId(insOrder.getId()); // b.setParentId(a.getId()); // insSampleMapper.insert(b); // if (ObjectUtil.isNotEmpty(b.getInsProduct())) { // addInsProductMethod(b.getId(), b.getInsProduct()); // } // } // } // } // }); // // // 添加原材料信息 // IfsInventoryQuantity ifsInventoryQuantity = new IfsInventoryQuantity(); // // 基本信息 // ifsInventoryQuantity.setIsSource(0); // ifsInventoryQuantity.setIsInspect(1); // ifsInventoryQuantity.setState(1); // ifsInventoryQuantity.setIsFinish(0); // ifsInventoryQuantity.setIsCopper(1); // ifsInventoryQuantity.setIsQuarter(0); // ifsInventoryQuantity.setInspectStatus(0); // // ifsInventoryQuantity.setQtyArrived(insOrder.getQtyArrived()); // ifsInventoryQuantity.setBuyUnitMeas(insOrder.getBuyUnitMeas()); // ifsInventoryQuantity.setSupplierName(insOrder.getSupplierName()); // ifsInventoryQuantity.setUpdateBatchNo(insOrder.getUpdateBatchNo()); // ifsInventoryQuantity.setDeclareDate(insOrder.getDeclareDate()); // // ifsInventoryQuantityMapper.insert(ifsInventoryQuantity); // // // insOrder.setIfsInventoryId(ifsInventoryQuantity.getId()); // insOrder.setState(1); // // // upInsOrderOfState(insOrder); // upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "原材料"); // // return insOrder.getId(); // } // // /** // * 修改委托下单编号 // * @param insOrder // */ // @Override // public void updateOrderEntrustCode(InsOrder insOrder) { // // 判断当前订单是否生成了报告, 生成了报告不能修改单号 // Long count = insReportMapper.selectCount(Wrappers.lambdaQuery() // .eq(InsReport::getInsOrderId, insOrder.getId())); // if (count > 0 ) { // throw new ErrorException("当前订单已经生成了报告不能修改编号"); // } // // Long count1 = insOrderMapper.selectCount(Wrappers.lambdaQuery() // .eq(InsOrder::getEntrustCode, insOrder.getEntrustCode())); // if (count1 > 0) { // throw new ErrorException("该编号重复"); // } // // //修改报告的编号 // insOrderMapper.update(null, Wrappers.lambdaUpdate() // .eq(InsOrder::getId, insOrder.getId()) // .set(InsOrder::getEntrustCode, insOrder.getEntrustCode())); // // // 修改样品的编号 // // 查询所有的样品 // List insSamples = insSampleMapper.selectList(Wrappers.lambdaQuery() // .eq(InsSample::getInsOrderId, insOrder.getId())); // for (InsSample insSample : insSamples) { // String sampleCode = insSample.getSampleCode(); // String updateCode = insOrder.getEntrustCode(); // // 查找最后一个'-'的位置 // int lastDashIndex = sampleCode.lastIndexOf('-'); // if (lastDashIndex != -1) { // int secondLastDashIndex = sampleCode.lastIndexOf('-', lastDashIndex - 1); // // 处理最后一个'-'前的部分 // if (secondLastDashIndex != -1) { // // 处理最后一个'-'及之后的部分 // String afterLastDash = sampleCode.substring(lastDashIndex); // // updateCode = updateCode + afterLastDash; // } // } // insSampleMapper.update(null, Wrappers.lambdaUpdate() // .eq(InsSample::getId, insSample.getId()) // .set(InsSample::getSampleCode, updateCode)); // // } // } // // /** // * 修改检验下单内容 // * @param insOrderUpdateDto // * @return // */ // @Override // @Transactional(rollbackFor = Exception.class) // public Boolean updateInsOrder(InsOrderUpdateDto insOrderUpdateDto) { // // 修改订单 // insOrderUpdateDto.getInsOrder().setState(0); // insOrderUpdateDto.getInsOrder().setTell(""); // insOrderMapper.updateById(insOrderUpdateDto.getInsOrder()); // // // 修改检验项 // for (SampleProductDto sampleProductDto : insOrderUpdateDto.getSampleProduct()) { // insProductService.updateBatchById(sampleProductDto.getInsProduct()); // } // // return true; // } // // /** // * 成品标签打印 // * @param ids // * @return // */ // @Override // public List labelOrderPrinting(List ids) { // return insOrderMapper.labelOrderPrinting(ids); // } // // /** // * 根据样品id查询检验项树 // * @param insSampleId // * @return // */ // @Override // public List getProductTreeBySampleId(Integer insSampleId) { // // 查询第一个检验项获取检验项树 // InsProduct insProduct = insProductMapper.selectOne(Wrappers.lambdaQuery() // .eq(InsProduct::getInsSampleId, insSampleId) // .last("limit 1")); // String tree = insProduct.getFactory() + " - " + // insProduct.getLaboratory() + " - " + // insProduct.getSampleType() + " - " + // insProduct.getSample() + " - " + // insProduct.getModel(); // // 查询标准树 // List standardProductLists = standardProductListMapper.selectList(Wrappers.lambdaQuery() // .eq(StandardProductList::getStandardMethodListId, insProduct.getStandardMethodListId()) // .eq(StandardProductList::getTree, tree)); // for (StandardProductList standardProductList : standardProductLists) { // standardProductList.setId(null); // } // // return standardProductLists; // } // // /** // * 添加遗漏的检验项 // * @param omitOrderProductDto // * @return // */ // @Override // public boolean addOmitOrderProduct(OmitOrderProductDto omitOrderProductDto) { // if (omitOrderProductDto.getInsSampleId() == null) { // throw new ErrorException("缺少样品Id"); // } // for (InsProduct product : omitOrderProductDto.getInsProductBindingList()) { // if (product.getState() == 1) { // product.setId(null); // product.setCreateTime(null); // product.setCreateUser(null); // product.setUpdateTime(null); // product.setUpdateUser(null); // product.setInsSampleId(omitOrderProductDto.getInsSampleId()); // if (StringUtils.isBlank(product.getCableTag())) { // product.setCableTag(null); // } // if (product.getInspectionItemSubclass() == null) { // product.setInspectionItemSubclass(""); // } // if (StringUtils.isBlank(product.getAsk()) || StringUtils.isBlank(product.getTell())) { // throw new ErrorException("有检验项的要求值或要求描述为空, 请填写要求值或要求描述"); // } // insProductMapper.insert(product); // } // } // // return true; // } // // /** // * 成品检验单导出 // * @param sampleOrderDto // * @param response // */ // @Override // public void rawAllInsOrderExport(SampleOrderDto sampleOrderDto, HttpServletResponse response) { // //判断全部,个人,组织的权限 // //todo:仅看我获取当前人所属实验室id // String laboratory = null; // // 判断是否是全部 // String isOrderAll = null; // if (sampleOrderDto.getState() != null && sampleOrderDto.getState() == -2) { // isOrderAll = "1"; // sampleOrderDto.setState(null); // } // List sampleOrderDtoList = insOrderMapper.rawAllInsOrderExport(QueryWrappers.queryWrappers(sampleOrderDto), laboratory, isOrderAll); // // // 判断是否是不合格, 不合格查询不合格项 // for (SampleOrderDto orderDto : sampleOrderDtoList) { // if (orderDto.getInsResult() != null && orderDto.getInsResult() == 0){ // // 查询不合格项 // List unqualifiedList = insProductMapper.selectUnqualifiedList(orderDto.getId()); // orderDto.setUnqualifiedItem(CollUtil.join(unqualifiedList, ",")); // } // orderDto.setCreateTimeString(orderDto.getCreateTime() == null ? "" : orderDto.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); // // } // // response.setContentType("application/vnd.ms-excel"); // response.setCharacterEncoding("UTF-8"); // try { // // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 // String fileName = URLEncoder.encode("委托检测信息导出", "UTF-8"); // response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); // //新建ExcelWriter // ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build(); // //获取sheet0对象 // WriteSheet mainSheet = EasyExcel.writerSheet(0, "委托检测信息导出").head(SampleOrderDto.class).build(); // // //向sheet0写入数据 传入空list这样只导出表头 // excelWriter.write(sampleOrderDtoList, mainSheet); // //关闭流 // excelWriter.finish(); // } catch (IOException e) { // throw new RuntimeException("导出失败"); // } // } // //} // // // //