| | |
| | | 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.BasicTreeEnums; |
| | | import com.ruoyi.basic.enums.StandardProductListChcekTypeEnums; |
| | | import com.ruoyi.basic.enums.StandardProductListOperationTypeEnums; |
| | | 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.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 StandardProductListUpdateRecordMapper standardProductListUpdateRecordMapper; |
| | | |
| | | @Autowired |
| | | private StandardProductListUpdateRecordRelMapper standardProductListUpdateRecordRelMapper; |
| | | |
| | | @Autowired |
| | | private StandardProductListSupplierAskService standardProductListSupplierAskService; |
| | | |
| | | @Autowired |
| | | private StandardProductListSupplierAskBackupRelMapper standardProductListSupplierAskBackupRelMapper; |
| | | |
| | | @Autowired |
| | | private StandardMethodMapper standardMethodMapper; |
| | | |
| | | |
| | | @Override |
| | | public int upStandardProductList(StandardProductList list) { |
| | |
| | | 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)){ |
| | |
| | | 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(), "")) { |
| | |
| | | if(StringUtils.isEmpty(checkItemQueryTree.toString())){ |
| | | return map; |
| | | } |
| | | // 判断是否为委托要求标准 |
| | | 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(checkItemQueryTree.toString()); |
| | | List<StructureItemParameter> structureItemParameterList = structureItemParameterMapper.selectItemParameterBySample(structureItemParameterDto); |
| | | // 如果是产品的检查项为空向上推 |
| | | if(CollectionUtils.isEmpty(structureItemParameterList)){ |
| | | String query = "[\"" + sampleType + "\"]"; |
| | | structureItemParameterList = structureItemParameterMapper.selectItemParameterBySample(query); |
| | | structureItemParameterDto.setTree(query); |
| | | structureItemParameterList = structureItemParameterMapper.selectItemParameterBySample(structureItemParameterDto); |
| | | } |
| | | |
| | | // 查询标准库已绑定检查项目 |
| | | List<StandardProductList> standardProductList = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery() |
| | | .eq(StandardProductList::getStandardMethodListId, id) |
| | |
| | | */ |
| | | @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; |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 标准树下检验项处理 |
| | | * @param standardProductListDto |
| | | * 标准树下检验项提交 |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void productListOperate(StandardProductListDto standardProductListDto) { |
| | | StandardProductList standardProductList = new StandardProductList(); |
| | | standardProductList.setId(standardProductListDto.getId()); |
| | | StandardProductListUpdateRecord standardProductListUpdateRecord = new StandardProductListUpdateRecord(); |
| | | // 审核通过 |
| | | if(StandardProductListOperationTypeEnums.PASS_CHECK_OP.getCode().equals(standardProductListDto.getOperationStatus())){ |
| | | // 删除备份数据 |
| | | standardProductListBackupRelMapper.deleteById(standardProductListDto.getId()); |
| | | standardProductList.setCheckStatus(StandardProductListChcekTypeEnums.PASS_CHECK.getCode()); |
| | | // 审核不通过 |
| | | }else if(StandardProductListOperationTypeEnums.NO_PASS_CHECK_OP.getCode().equals(standardProductListDto.getOperationStatus())) { |
| | | // 还原数据 |
| | | StandardProductListBackupRel standardProductListBackupRel = standardProductListBackupRelMapper.selectById(standardProductListDto.getId()); |
| | | if(ObjectUtils.isEmpty(standardProductListBackupRel)){ |
| | | throw new RuntimeException("备份数据查找失败"); |
| | | } |
| | | BeanUtils.copyProperties(standardProductListBackupRel, standardProductList); |
| | | standardProductList.setCheckStatus(StandardProductListChcekTypeEnums.NO_PASS_CHECK.getCode()); |
| | | // 提交 |
| | | }else if(StandardProductListOperationTypeEnums.SUBMIT_OP.getCode().equals(standardProductListDto.getOperationStatus())) { |
| | | standardProductListUpdateRecord.setOperationType(StandardProductListOperationTypeEnums.PASS_CHECK_OP.getCode()); |
| | | standardProductList.setCheckStatus(StandardProductListChcekTypeEnums.CHECK_ING.getCode()); |
| | | } else { |
| | | throw new RuntimeException("操作有误"); |
| | | 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("暂无修改数据"); |
| | | } |
| | | // 新增操作记录 |
| | | standardProductListUpdateRecord.setStandardProductListId(standardProductListDto.getId()); |
| | | standardProductListUpdateRecord.setOperationType(standardProductListDto.getOperationStatus()); |
| | | List<Long> standardProductListIds = new ArrayList<>(); |
| | | // 插入修改记录 |
| | | standardProductListUpdateRecordMapper.insert(standardProductListUpdateRecord); |
| | | // 修改审核状态 |
| | | standardProductList.setCheckStatus(standardProductListDto.getOperationStatus()); |
| | | standardProductListMapper.updateById(standardProductList); |
| | | // 插入修改记录关联表 |
| | | 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 page |
| | | * @param record |
| | | * 标准树下检验项审核 |
| | | * @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 IPage<StandardProductListUpdateRecord> standardProductListRecordPage(Page page, StandardProductListUpdateRecord record) { |
| | | return standardProductListUpdateRecordMapper.standardProductListRecordPage(page,QueryWrappers.queryWrappers(record)); |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |