|  |  | 
 |  |  | import doumeemes.dao.ext.MaterialExtMapper; | 
 |  |  | import doumeemes.dao.ext.dto.SalaryParamDTO; | 
 |  |  | import doumeemes.dao.ext.dto.SalaryParamImportDTO; | 
 |  |  | import doumeemes.dao.ext.vo.DepartmentExtListVO; | 
 |  |  | import doumeemes.service.business.DepartmentService; | 
 |  |  | import doumeemes.service.business.SalaryParamService; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
 |  |  | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; | 
 |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import doumeemes.service.ext.DepartmentExtService; | 
 |  |  | import org.apache.shiro.SecurityUtils; | 
 |  |  | import org.springframework.beans.BeanUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.context.annotation.Lazy; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.util.CollectionUtils; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private DepartmentMapper departmentMapper; | 
 |  |  |     @Lazy | 
 |  |  |     @Autowired | 
 |  |  |     private DepartmentExtService departmentExtService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private MaterialMapper materialMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private MaterialDistributeMapper materialDistributeMapper; | 
 |  |  |  | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public Integer create(SalaryParam salaryParam) { | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |  | 
 |  |  |         DepartmentExtListVO department =departmentExtService.getModelById(principal.getCompany().getId(),salaryParam.getDepartId()); | 
 |  |  |         Integer comDepartId = departmentExtService.getComDepartId(department); | 
 |  |  |         SalaryParam insert = new SalaryParam(); | 
 |  |  |         insert.setRootDepartId(principal.getRootDepartment().getId()); | 
 |  |  |         insert.setDepartId(salaryParam.getDepartId()); | 
 |  |  | //        insert.setDepartId(comDepartId); | 
 |  |  |         insert.setProcedureId(salaryParam.getProcedureId()); | 
 |  |  |         insert.setMaterialId(salaryParam.getMaterialId()); | 
 |  |  |         insert.setDeleted((byte) Constants.ZERO); | 
 |  |  |         insert.setType(salaryParam.getType()); | 
 |  |  |         if(findOne(insert) != null){ | 
 |  |  |             throw  new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"同一个物料在相同工序不能重复配置哦!"); | 
 |  |  |         } | 
 |  |  | 
 |  |  |         LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |         SalaryParamDTO model = pageWrap.getModel(); | 
 |  |  |         model.setRootDepartId(principal.getRootDepartment().getId()); | 
 |  |  | //        model.setDepartId(principal.getComDepartment().getId()); | 
 |  |  | //        model.setDepartId(principal.getCurComDepartment().getId()); | 
 |  |  |         IPage<SalaryParamVO> salaryParamVOIPage = salaryParamMapper.selectPage(page, model); | 
 |  |  |         if (!CollectionUtils.isEmpty(salaryParamVOIPage.getRecords())){ | 
 |  |  |             salaryParamVOIPage.getRecords().forEach(s->s.setSalary(s.getSalary().divide(new BigDecimal(100)))); | 
 |  |  | 
 |  |  |  | 
 |  |  |         for (int i = 0; i < plansList.size(); i++) { | 
 |  |  |             SalaryParamImportDTO salaryParamImportDTO = plansList.get(i); | 
 |  |  |  | 
 |  |  |             QueryWrapper<Department> wrapper = new QueryWrapper<>(); | 
 |  |  |             wrapper.lambda() | 
 |  |  |                     .eq(Department::getName,salaryParamImportDTO.getDepartName()) | 
 |  |  |                     .eq(Department::getType,Constants.DEPART_TYPE.factory) | 
 |  |  |                     .last("limit 1"); | 
 |  |  |             Department department = departmentMapper.selectOne(wrapper); | 
 |  |  |             if (Objects.isNull(department)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "导入数据内容【公司名称】有误!"); | 
 |  |  | // | 
 |  |  | //            QueryWrapper<Department> wrapper = new QueryWrapper<>(); | 
 |  |  | //            wrapper.lambda() | 
 |  |  | //                    .eq(Department::getName,salaryParamImportDTO.getDepartName()) | 
 |  |  | //                    .eq(Department::getType,Constants.DEPART_TYPE.factory) | 
 |  |  | //                    .eq(Department::getDeleted,Constants.ZERO) | 
 |  |  | //                    .last("limit 1"); | 
 |  |  |             Department dparam = new Department(); | 
 |  |  |             dparam.setName(salaryParamImportDTO.getDepartName()); | 
 |  |  |             dparam.setDeleted(Constants.ZERO); | 
 |  |  |             dparam.setType(Constants.DEPART_TYPE.factory); | 
 |  |  |             dparam = departmentExtService.findOne(dparam); | 
 |  |  |             if (Objects.isNull(dparam)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "导入数据内容【工厂组织】有误!"); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             DepartmentExtListVO department = new DepartmentExtListVO(); | 
 |  |  |             department.setId(dparam.getId()); | 
 |  |  |             department.setType(dparam.getType()); | 
 |  |  |             department.setParentId(dparam.getParentId()); | 
 |  |  |             department.setRootId(dparam.getRootId()); | 
 |  |  |             department.setCompanyId(dparam.getCompanyId()); | 
 |  |  |             Integer comDepartId = departmentExtService.getComDepartId(department); | 
 |  |  |             QueryWrapper<Material> materialWrapper = new QueryWrapper<>(); | 
 |  |  |             materialWrapper.lambda() | 
 |  |  |                     .eq(Material::getCode,salaryParamImportDTO.getMaterialCode()) | 
 |  |  |                     .eq(Material::getRootDepartId,department.getRootId()) | 
 |  |  |                     .eq(Material::getRootDepartId,dparam.getRootId()) | 
 |  |  |                     .eq(Material::getDeleted,Constants.ZERO) | 
 |  |  |                     .last("limit 1"); | 
 |  |  |             Material material = materialMapper.selectOne(materialWrapper); | 
 |  |  |  | 
 |  |  |             if (Objects.isNull(material)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "导入数据内容【产品编码】有误!"); | 
 |  |  |             } | 
 |  |  |             QueryWrapper<MaterialDistribute>  materialDistribute = new QueryWrapper<>(); | 
 |  |  |             materialDistribute.lambda() | 
 |  |  |                                 .eq(MaterialDistribute::getDeleted,Constants.ZERO) | 
 |  |  |                                 .eq(MaterialDistribute::getMaterialId,material.getId()) | 
 |  |  |                                 .eq(MaterialDistribute::getRootDepartId,department.getRootId()) | 
 |  |  |                                 .eq(MaterialDistribute::getDepartId,department.getParentId()); | 
 |  |  |             MaterialDistribute materialDistribute1 = materialDistributeMapper.selectOne(materialDistribute); | 
 |  |  | //            if (Objects.nonNull(material) && !Objects.equals(material.getName(),salaryParamImportDTO.getMaterialName())){ | 
 |  |  | //                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "导入数据内容【产品名称】有误!"); | 
 |  |  | //            } | 
 |  |  |             if (Objects.nonNull(material) && !Objects.equals(material.getName(),salaryParamImportDTO.getMaterialName())){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "导入数据内容【产品名称】有误!"); | 
 |  |  |             } | 
 |  |  |             QueryWrapper<MaterialDistribute> materialDistributeQueryWrapper = new QueryWrapper<>(); | 
 |  |  |             materialDistributeQueryWrapper.lambda() | 
 |  |  |                     .eq(MaterialDistribute::getMaterialId,material.getId()) | 
 |  |  |                     .eq(MaterialDistribute::getRootDepartId,department.getRootId()) | 
 |  |  |                     .eq(MaterialDistribute::getDepartId, comDepartId) | 
 |  |  |                     .eq(MaterialDistribute::getDeleted,Constants.ZERO) | 
 |  |  |                     .last("limit 1"); | 
 |  |  |             MaterialDistribute materialDistribute = materialDistributeMapper.selectOne(materialDistributeQueryWrapper); | 
 |  |  |             if (Objects.isNull(materialDistribute)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "导入数据内容【产品编码】有误!"); | 
 |  |  |             } | 
 |  |  |             QueryWrapper<Procedures> proceduresWrapper = new QueryWrapper<>(); | 
 |  |  |             proceduresWrapper.lambda() | 
 |  |  |                     .eq(Procedures::getName,salaryParamImportDTO.getProcedureName()) | 
 |  |  | 
 |  |  |             } | 
 |  |  |             SalaryParam salaryParam = new SalaryParam(); | 
 |  |  |             salaryParam.setRootDepartId(department.getRootId()); | 
 |  |  |             salaryParam.setDepartId(department.getId()); | 
 |  |  |             salaryParam.setDepartId(dparam.getId()); | 
 |  |  |             salaryParam.setProcedureId(procedures.getId()); | 
 |  |  |             salaryParam.setMaterialId(materialDistribute1.getId()); | 
 |  |  |             salaryParam.setMaterialId(materialDistribute.getId()); | 
 |  |  |             salaryParam.setSalary(salaryParamImportDTO.getSalary()); | 
 |  |  |             salaryParam.setNum(new BigDecimal(salaryParamImportDTO.getNum())); | 
 |  |  |             salaryParam.setTimes(getIntegerTimes(salaryParamImportDTO.getTimesName())); | 
 |  |  | 
 |  |  |             }).orElse(0); | 
 |  |  |             salaryParam.setUnqualified(unqualified); | 
 |  |  |  | 
 |  |  |             Integer type = Optional.ofNullable(salaryParamImportDTO.getUnqualified()).map(s -> { | 
 |  |  |             Integer type = Optional.ofNullable(salaryParamImportDTO.getType()).map(s -> { | 
 |  |  |                 if ("计件".equals(s)) { | 
 |  |  |                     return 0; | 
 |  |  |                 } else { |