| | |
| | | package com.ruoyi.basic.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.*; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.basic.dto.*; |
| | | import com.ruoyi.basic.enums.StandardProductListChcekTypeEnums; |
| | | import com.ruoyi.basic.mapper.*; |
| | | import com.ruoyi.basic.pojo.*; |
| | | import com.ruoyi.basic.service.StandardMethodListService; |
| | | import com.ruoyi.basic.service.StandardMethodService; |
| | | import com.ruoyi.basic.service.StandardProductListSupplierAskService; |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.QueryWrappers; |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.basic.dto.CopyStandardProductListDto; |
| | | import com.ruoyi.basic.dto.InsSampleReceiveDto; |
| | | import com.ruoyi.basic.dto.ProductDto; |
| | | import com.ruoyi.basic.dto.ResetTreeDragDTO; |
| | | import com.ruoyi.basic.service.StandardProductListService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.apache.catalina.security.SecurityUtil; |
| | | import org.aspectj.weaver.ast.Var; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | @Autowired |
| | | private StructureItemParameterMapper structureItemParameterMapper; |
| | | |
| | | @Autowired |
| | | private ModelMapper modelMapper; |
| | | |
| | | @Autowired |
| | | private StandardProductListBackupRelMapper standardProductListBackupRelMapper; |
| | | |
| | | @Autowired |
| | | private StandardProductListUpdateRecordMapper standardProductListUpdateRecordMapper; |
| | | |
| | | @Autowired |
| | | private StandardProductListUpdateRecordRelMapper standardProductListUpdateRecordRelMapper; |
| | | |
| | | @Autowired |
| | | private StandardProductListSupplierAskService standardProductListSupplierAskService; |
| | | |
| | | @Autowired |
| | | private StandardProductListSupplierAskBackupRelMapper standardProductListSupplierAskBackupRelMapper; |
| | | |
| | | @Autowired |
| | | private StandardMethodMapper standardMethodMapper; |
| | | |
| | | |
| | | @Override |
| | | public int upStandardProductList(StandardProductList list) { |
| | | // 根据id 查询到原始值 |
| | | StandardProductList standardProductList = standardProductListMapper.selectById(list.getId()); |
| | | if(ObjectUtils.isEmpty(standardProductList)){ |
| | | throw new RuntimeException("更新失败,未查找到检查项"); |
| | | } |
| | | // 判断当前状态 如果是审核中 |
| | | if(StandardProductListChcekTypeEnums.CHECK_ING.getCode().equals(list.getCheckStatus())){ |
| | | throw new RuntimeException("审核中不支持修改"); |
| | | } |
| | | // 判断检验项是否为是否委托要求 是的话不需要做备份和状态修改直接更新 |
| | | StructureItemParameter structureItemParameter = structureItemParameterMapper.selectById(standardProductList.getStructureItemParameterId()); |
| | | if(!ObjectUtils.isEmpty(structureItemParameter) && "1".equals(structureItemParameter.getDelegateRequestFlag())){ |
| | | return standardProductListMapper.updateById(list); |
| | | } |
| | | // 判断是否为生效的修改如果是不做备份 |
| | | if(null != list.getState()){ |
| | | return standardProductListMapper.updateById(list); |
| | | } |
| | | // 查询最新的一次关联备份 如果存在说明未审核完继续修改了。不做数据处理。 |
| | | StandardProductListBackupRel standardProductListBackupRel = standardProductListBackupRelMapper.selectById(list.getId()); |
| | | if(ObjectUtils.isEmpty(standardProductListBackupRel)){ |
| | | StandardProductListBackupRel productListBackupRel = new StandardProductListBackupRel(); |
| | | BeanUtils.copyProperties(standardProductList, productListBackupRel); |
| | | standardProductListBackupRelMapper.insert(productListBackupRel); |
| | | } |
| | | // 关联商家备份 |
| | | StandardProductListSupplierAsk standardProductListSupplierAsk = new StandardProductListSupplierAsk(); |
| | | standardProductListSupplierAsk.setProductListId(list.getId()); |
| | | standardProductListSupplierAskService.backupSupplierAsk(standardProductListSupplierAsk); |
| | | // 修改状态 |
| | | list.setCheckStatus(StandardProductListChcekTypeEnums.WAIT_CHECK.getCode()); |
| | | return standardProductListMapper.updateById(list); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<StandardProductList> selectStandardProductList(InsSampleReceiveDto insSample) { |
| | | // 是否没有产品 |
| | | boolean isNoSample = false; |
| | | // String[] models = insSample.getModel().split("-(?=[^-]*$)");//拆分最后一个【-】 |
| | | String model = insSample.getModel(); |
| | | String modelNum = insSample.getModelNum(); |
| | | List<StandardProductList> list = standardProductListMapper.selectDetail(insSample.getStandardMethodListId(), 1, model, insSample.getIsCableTag()); |
| | | if (list.size() == 0) { |
| | | if (Objects.equals(insSample.getFactory(), "") || insSample.getFactory() == null) { |
| | | return null; |
| | | } |
| | | String[] split = insSample.getFactory().split(" - "); |
| | | split[3] = split[3].replace("- ", ""); |
| | | String tree = split[0] + " - " + split[1] + " - " + split[2] + " - " + split[3] + " - null"; |
| | | list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree, insSample.getIsCableTag()); |
| | | if (list.size() == 0) { |
| | | String tree1 = split[0] + " - " + split[1] + " - " + split[2] + " - null - " + split[3]; |
| | | list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree1, insSample.getIsCableTag()); |
| | | |
| | | // 只有对象的一层 |
| | | if (list.size() == 0) { |
| | | String tree2 = split[0] + " - " + split[1] + " - " + split[2] + " - null - null"; |
| | | list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree2, insSample.getIsCableTag()); |
| | | // 样品直接赋值样品分类 |
| | | list.forEach(standardProductList -> standardProductList.setSample(standardProductList.getSampleType())); |
| | | isNoSample = true; |
| | | } |
| | | } |
| | | // 查询检查项目 |
| | | StandardProductListDto standardProductListDto = new StandardProductListDto(); |
| | | standardProductListDto.setTree(insSample.getFactory()); |
| | | standardProductListDto.setStandardMethodListIds(insSample.getStandardMethodListIds()); |
| | | standardProductListDto.setState(insSample.getState()); |
| | | List<StandardProductList> list = new ArrayList<>(); |
| | | if(CollectionUtils.isEmpty(standardProductListDto.getStandardMethodListIds())) { |
| | | return list; |
| | | } |
| | | String[] split1 = insSample.getFactory().split(" - "); |
| | | if (!isNoSample) { |
| | | //判断长度 |
| | | if (split1.length > 4) { |
| | | if (ObjectUtils.isNotEmpty(split1[3])) { |
| | | list = list.stream().filter(list1 -> Objects.nonNull(list1.getSample()) && Objects.equals(list1.getSample(), split1[3])).collect(Collectors.toList()); |
| | | } else if (split1[3].equals("")) { |
| | | list = list.stream().filter(list1 -> Objects.nonNull(list1.getSampleType()) && Objects.equals(list1.getSampleType(), split1[2])).collect(Collectors.toList()); |
| | | } |
| | | } |
| | | } |
| | | list = standardProductListMapper.standardProductListNoPage(standardProductListDto); |
| | | list = list.stream().filter(a -> { |
| | | try { |
| | | if (a.getSection() != null && !Objects.equals(a.getSection(), "")) { |
| | |
| | | String sampleType = ""; |
| | | String sample = ""; |
| | | String model = ""; |
| | | StringBuilder checkItemQueryTree = new StringBuilder(); // 检查项查询 只拼接 检查对象-产品 |
| | | |
| | | // 返回结果 |
| | | Map<String, Object> map = new HashMap<>(); |
| | |
| | | if(trees == null && trees.length < 4){ |
| | | return map; |
| | | } |
| | | StringBuilder queryTreeBuilder = new StringBuilder(); |
| | | // 车间层级多一层级 |
| | | if(existWorkShopFlag){ |
| | | switch (trees.length) { |
| | | case 7: |
| | | queryTreeBuilder.append("[").append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\",\"").append(trees[6]).append("\"").append("]"); |
| | | sampleType = trees[4]; |
| | | sample = trees[5]; |
| | | model = trees[6]; |
| | | checkItemQueryTree.append("[").append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\"").append("]"); |
| | | break; |
| | | case 6: |
| | | queryTreeBuilder.append("[").append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\"").append("]"); |
| | | sampleType = trees[4]; |
| | | sample = trees[5]; |
| | | checkItemQueryTree.append("[").append("\"").append(trees[4]).append("\",\"").append(trees[5]).append("\"").append("]"); |
| | | break; |
| | | case 5: |
| | | queryTreeBuilder.append("[").append("\"").append(trees[4]).append("\"").append("]"); |
| | | sampleType = trees[4]; |
| | | checkItemQueryTree.append("[").append("\"").append(trees[4]).append("\"").append("]"); |
| | | break; |
| | | } |
| | | }else { |
| | | switch (trees.length) { |
| | | case 6: |
| | | queryTreeBuilder.append("[").append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\",\"").append(trees[5]).append("\"").append("]"); |
| | | sampleType = trees[3]; |
| | | sample = trees[4]; |
| | | model = trees[5]; |
| | | checkItemQueryTree.append("[").append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\"").append("]"); |
| | | break; |
| | | case 5: |
| | | queryTreeBuilder.append("[").append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\"").append("]"); |
| | | sampleType = trees[3]; |
| | | sample = trees[4]; |
| | | checkItemQueryTree.append("[").append("\"").append(trees[3]).append("\",\"").append(trees[4]).append("\"").append("]"); |
| | | break; |
| | | case 4: |
| | | queryTreeBuilder.append("[").append("\"").append(trees[3]).append("\"").append("]"); |
| | | sampleType = trees[3]; |
| | | checkItemQueryTree.append("[").append("\"").append(trees[3]).append("\"").append("]"); |
| | | break; |
| | | } |
| | | } |
| | | if(StringUtils.isEmpty(queryTreeBuilder.toString())){ |
| | | if(StringUtils.isEmpty(checkItemQueryTree.toString())){ |
| | | return map; |
| | | } |
| | | // 根据检验对象/产品/型号查询检验项 |
| | | List<StructureItemParameter> structureItemParameterList = structureItemParameterMapper.selectItemParameterBySample(queryTreeBuilder.toString()); |
| | | // 判断是否为委托要求标准 |
| | | StandardMethod standardMethod = standardMethodMapper.selectById(id); |
| | | if(ObjectUtils.isEmpty(standardMethod)){ |
| | | return map; |
| | | } |
| | | StructureItemParameterDto structureItemParameterDto = new StructureItemParameterDto(); |
| | | if(standardMethod.getName().equals("委托要求")){ |
| | | structureItemParameterDto.setDelegateRequestFlag("1"); |
| | | }else { |
| | | structureItemParameterDto.setDelegateRequestFlag("0"); |
| | | } |
| | | structureItemParameterDto.setTree(checkItemQueryTree.toString()); |
| | | |
| | | // 根据检验对象/产品查询检验项 |
| | | List<StructureItemParameter> structureItemParameterList = structureItemParameterMapper.selectItemParameterBySample(structureItemParameterDto); |
| | | // 如果是产品的检查项为空向上推 |
| | | if(CollectionUtils.isEmpty(structureItemParameterList)){ |
| | | String query = "[\"" + sampleType + "\"]"; |
| | | structureItemParameterDto.setTree(query); |
| | | structureItemParameterList = structureItemParameterMapper.selectItemParameterBySample(structureItemParameterDto); |
| | | } |
| | | // 查询标准库已绑定检查项目 |
| | | List<StandardProductList> standardProductList = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery() |
| | | .eq(StandardProductList::getStandardMethodListId, id) |
| | | .like(StandardProductList::getTree, tree) |
| | | .orderByAsc(StandardProductList::getSort)); |
| | | |
| | | |
| | | // 封装参数 |
| | | List<StandardProductList> batchInsertStandardProductListArray = new ArrayList<>(); |
| | |
| | | addStandProductList.setStructureItemParameterId(structureItemParameter.getId()); |
| | | |
| | | } |
| | | addStandProductList.setId(null); |
| | | addStandProductList.setId(addStandProductList.getId() != null ? addStandProductList.getId() : IdWorker.getId()); |
| | | batchInsertStandardProductListArray.add(addStandProductList); |
| | | |
| | | } |
| | | |
| | | // 排序处理 已有顺序按照原顺序 没有顺序的按照检验项的id升序,默认排在最后 |
| | | batchInsertStandardProductListArray.sort(Comparator.comparing((StandardProductList item) -> item.getSort() != null ? item.getSort() : Integer.MAX_VALUE) |
| | | .thenComparing(StandardProductList::getStructureItemParameterId)); |
| | | |
| | | // 删除原绑定数据 |
| | | standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate() |
| | | .eq(StandardProductList::getStandardMethodListId, id) |
| | | .eq(StandardProductList::getTree, tree)); |
| | | .eq(StandardProductList::getStandardMethodListId, id) |
| | | .eq(StandardProductList::getTree, tree)); |
| | | |
| | | for (int i = 0; i < batchInsertStandardProductListArray.size(); i++) { |
| | | StandardProductList productList = batchInsertStandardProductListArray.get(i); |
| | |
| | | */ |
| | | @Override |
| | | public boolean updateSection(StandardProductList list) { |
| | | // 根据id 查询到原始值 |
| | | StandardProductList standardProductList = standardProductListMapper.selectById(list.getId()); |
| | | if(ObjectUtils.isEmpty(standardProductList)){ |
| | | throw new RuntimeException("更新失败,未查找到检查项"); |
| | | } |
| | | // 判断当前状态 如果是审核中 |
| | | if(StandardProductListChcekTypeEnums.CHECK_ING.getCode().equals(list.getCheckStatus())){ |
| | | throw new RuntimeException("审核中不支持修改"); |
| | | } |
| | | // 查询最新的一次关联备份 如果存在说明未审核完继续修改了。不做数据处理。 |
| | | StandardProductListBackupRel standardProductListBackupRel = standardProductListBackupRelMapper.selectById(list.getId()); |
| | | if(ObjectUtils.isEmpty(standardProductListBackupRel)){ |
| | | StandardProductListBackupRel productListBackupRel = new StandardProductListBackupRel(); |
| | | BeanUtils.copyProperties(standardProductList, productListBackupRel); |
| | | standardProductListBackupRelMapper.insert(productListBackupRel); |
| | | } |
| | | // 关联商家备份 |
| | | StandardProductListSupplierAsk standardProductListSupplierAsk = new StandardProductListSupplierAsk(); |
| | | standardProductListSupplierAsk.setProductListId(list.getId()); |
| | | standardProductListSupplierAskService.backupSupplierAsk(standardProductListSupplierAsk); |
| | | // 修改状态 |
| | | list.setCheckStatus(StandardProductListChcekTypeEnums.WAIT_CHECK.getCode()); |
| | | standardProductListMapper.updateSection(list); |
| | | return true; |
| | | } |
| | |
| | | this.updateBatchById(productLists); |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 标准树下检验项提交 |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void productListSubmit(StandardProductListUpdateRecord standardProductListUpdateRecord) { |
| | | // 查询所有待审核的数据 |
| | | QueryWrapper<StandardProductList> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("check_status",StandardProductListChcekTypeEnums.WAIT_CHECK.getCode()); |
| | | List<StandardProductList> unCheckStandardProductListArray = standardProductListMapper.selectList(queryWrapper); |
| | | if(CollectionUtils.isEmpty(unCheckStandardProductListArray)){ |
| | | throw new RuntimeException("暂无修改数据"); |
| | | } |
| | | List<Long> standardProductListIds = new ArrayList<>(); |
| | | // 插入修改记录 |
| | | standardProductListUpdateRecordMapper.insert(standardProductListUpdateRecord); |
| | | // 插入修改记录关联表 |
| | | List<StandardProductListUpdateRecordRel> standardProductListUpdateRecordRelList = new ArrayList<>(); |
| | | for (StandardProductList standardProductList : unCheckStandardProductListArray) { |
| | | StandardProductListUpdateRecordRel standardProductListUpdateRecordRel = new StandardProductListUpdateRecordRel(); |
| | | BeanUtils.copyProperties(standardProductList, standardProductListUpdateRecordRel); |
| | | standardProductListUpdateRecordRel.setId(null); |
| | | standardProductListUpdateRecordRel.setStandardProductListId(standardProductList.getId()); |
| | | standardProductListUpdateRecordRel.setStandardProductListUpdateRecordId(standardProductListUpdateRecord.getId()); |
| | | standardProductListUpdateRecordRelList.add(standardProductListUpdateRecordRel); |
| | | standardProductListUpdateRecordRelMapper.insert(standardProductListUpdateRecordRel); |
| | | standardProductListIds.add(standardProductList.getId()); |
| | | } |
| | | |
| | | // 修改标准树下检查项状态为审核中 |
| | | standardProductListMapper.updateProductListCheckStatus(standardProductListIds,StandardProductListChcekTypeEnums.CHECK_ING.getCode()); |
| | | } |
| | | |
| | | /** |
| | | * 标准树下检验项审核 |
| | | * @param standardProductListUpdateRecord |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void productListCheck(StandardProductListUpdateRecord standardProductListUpdateRecord) { |
| | | // 查询所有审核中的数据 |
| | | QueryWrapper<StandardProductList> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("check_status",StandardProductListChcekTypeEnums.CHECK_ING.getCode()); |
| | | List<StandardProductList> standardProductListArray = standardProductListMapper.selectList(queryWrapper); |
| | | if(CollectionUtils.isEmpty(standardProductListArray)){ |
| | | return; |
| | | } |
| | | List<Long> standardProductListIds = new ArrayList<>(); |
| | | for (StandardProductList standardProductList : standardProductListArray) { |
| | | standardProductListIds.add(standardProductList.getId()); |
| | | } |
| | | // 审核通过 |
| | | if(StandardProductListChcekTypeEnums.PASS_CHECK.getCode().equals(standardProductListUpdateRecord.getCheckStatus())){ |
| | | // 修改状态 |
| | | standardProductListMapper.updateProductListCheckStatus(standardProductListIds,StandardProductListChcekTypeEnums.PASS_CHECK.getCode()); |
| | | } |
| | | // 审核未通过 |
| | | if(StandardProductListChcekTypeEnums.NO_PASS_CHECK.getCode().equals(standardProductListUpdateRecord.getCheckStatus())){ |
| | | // 查询所有标准树下的检验项目备份数据 |
| | | List<StandardProductListBackupRel> standardProductListBackupRelList = standardProductListBackupRelMapper.selectBatchIds(standardProductListIds); |
| | | // 回滚标准树下的检验项目数据 |
| | | for (StandardProductListBackupRel standardProductListBackupRel : standardProductListBackupRelList) { |
| | | StandardProductList standardProductList = new StandardProductList(); |
| | | BeanUtils.copyProperties(standardProductListBackupRel, standardProductList); |
| | | standardProductListMapper.updateById(standardProductList); |
| | | } |
| | | // 回滚检验项目厂家密度绑定表数据 |
| | | QueryWrapper<StandardProductListSupplierAskBackupRel> supplierAskBackupRelQueryWrapper = new QueryWrapper<>(); |
| | | supplierAskBackupRelQueryWrapper.in("product_list_id",standardProductListIds); |
| | | List<StandardProductListSupplierAskBackupRel> standardProductListSupplierAskBackupRelList = standardProductListSupplierAskBackupRelMapper.selectList(supplierAskBackupRelQueryWrapper); |
| | | if(!CollectionUtils.isEmpty(standardProductListSupplierAskBackupRelList)){ |
| | | QueryWrapper<StandardProductListSupplierAsk> deleteWrapper = new QueryWrapper<>(); |
| | | deleteWrapper.in("product_list_id",standardProductListIds); |
| | | standardProductListSupplierAskMapper.delete(deleteWrapper); |
| | | ArrayList<StandardProductListSupplierAsk> supplierAskRollBackList = new ArrayList<>(); |
| | | for (StandardProductListSupplierAskBackupRel standardProductListSupplierAskBackupRel : standardProductListSupplierAskBackupRelList) { |
| | | StandardProductListSupplierAsk standardProductListSupplierAsk = new StandardProductListSupplierAsk(); |
| | | BeanUtils.copyProperties(standardProductListSupplierAskBackupRel, standardProductListSupplierAsk); |
| | | supplierAskRollBackList.add(standardProductListSupplierAsk); |
| | | } |
| | | standardProductListSupplierAskMapper.batchInsertSupplierAsk(supplierAskRollBackList); |
| | | } |
| | | |
| | | } |
| | | // 删除标准树下的检验项目备份数据 |
| | | standardProductListBackupRelMapper.deleteBatchIds(standardProductListIds); |
| | | // 删除绑定厂家备份数据 |
| | | standardProductListSupplierAskBackupRelMapper.batchDeleteByProductIds(standardProductListIds); |
| | | standardProductListUpdateRecordMapper.updateById(standardProductListUpdateRecord); |
| | | } |
| | | |
| | | /** |
| | | * 查询标准库是否存在审核中状态 |
| | | * |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean existCheckingRecord() { |
| | | QueryWrapper<StandardProductListUpdateRecord> queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("check_status",StandardProductListChcekTypeEnums.CHECK_ING.getCode()); |
| | | List<StandardProductListUpdateRecord> standardProductListUpdateRecordList = standardProductListUpdateRecordMapper.selectList(queryWrapper); |
| | | if(CollectionUtils.isEmpty(standardProductListUpdateRecordList)){ |
| | | return false; |
| | | }else { |
| | | return true; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |