package com.glxp.api.controller.basic; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.annotation.Log; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.BusinessType; import com.glxp.api.controller.BaseController; import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.basic.BasicCorpEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.basic.UdiRlSupEntity; import com.glxp.api.entity.purchase.PurApplyDetailEntity; import com.glxp.api.exception.JsonException; import com.glxp.api.http.sync.SpGetHttpClient; import com.glxp.api.req.basic.*; import com.glxp.api.req.system.CompanyRequest; import com.glxp.api.req.system.DeleteCompanyFileRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.basic.UdiRlSupResponse; import com.glxp.api.service.auth.AuthAdminService; import com.glxp.api.service.basic.*; import com.glxp.api.service.purchase.PurApplyDetailService; import com.glxp.api.service.system.CompanyService; import com.glxp.api.util.BeanCopyUtils; import com.glxp.api.util.SupplementVailUtil; import com.glxp.api.util.udi.FilterUdiUtils; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * 供应商关联耗材字典信息 */ @RestController public class UdiRlSupController extends BaseController { @Resource private AuthAdminService authAdminService; @Resource private UdiRlSupService udiRlSupService; @Resource private CompanyProductsRelService companyProductsRelService; @Resource private BasicCorpService basicUnitMaintainService; @Resource private UdiRelevanceService udiRelevanceService; @Resource private CompanyService companyService; @Resource private CompanyProductRelevanceService companyProductRelevanceService; @Resource private SupplementVailUtil supplementVailUtil; @Resource private UdiProductService udiProductService; @Resource private PurApplyDetailService purApplyDetailService; @Resource SpGetHttpClient spGetHttpClient; @AuthRuleAnnotation("") @GetMapping("/sale/info/company/product/relevance/filter") public BaseResponse filterCompanyProductRelevance(CompanyProductRelevanceRequest companyProductRelevanceRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getCustomerId())) { String customerId = getCustomerId(); if (customerId.equals("110")) { companyProductRelevanceRequest.setCustomerId(null); } } companyProductRelevanceRequest.setIsDisable(false); if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getUdiCode())) { UdiEntity udiEntity = FilterUdiUtils.getUdi(companyProductRelevanceRequest.getUdiCode()); if (udiEntity != null) { companyProductRelevanceRequest.setNameCode(udiEntity.getUdi()); companyProductRelevanceRequest.setUnionCode(udiEntity.getUdi()); } } //如果输入DI标识,精确找到不同层级对应的产品信息 if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getUnionCode())) { FilterUdiRelRequest filterUdiInfoRequest = new FilterUdiRelRequest(); filterUdiInfoRequest.setNameCode(companyProductRelevanceRequest.getUnionCode()); List temps = udiRelevanceService.filterUdiGp(filterUdiInfoRequest); if (temps != null && temps.size() > 0) { companyProductRelevanceRequest.setOriginUuid(temps.get(0).getOriginUuid()); companyProductRelevanceRequest.setNameCode(filterUdiInfoRequest.getNameCode()); companyProductRelevanceRequest.setUnionCode(null); } } else { //只查找主标识产品信息 companyProductRelevanceRequest.setDiType(1); } List basicInstrumentMaintainRelevanceResponses = null; basicInstrumentMaintainRelevanceResponses = udiRlSupService.filterUdiGp(companyProductRelevanceRequest); PageInfo pageInfo; pageInfo = new PageInfo<>(basicInstrumentMaintainRelevanceResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(basicInstrumentMaintainRelevanceResponses); return ResultVOUtils.success(pageSimpleResponse); } @AuthRuleAnnotation("") @GetMapping("/sale/info/company/product/plan/relevance/filter") public BaseResponse filterCompanyProductPlanRelevance(CompanyProductRelevanceRequest companyProductRelevanceRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getCustomerId())) { String customerId = getCustomerId(); if (customerId.equals("110")) { companyProductRelevanceRequest.setCustomerId(null); } } companyProductRelevanceRequest.setIsDisable(false); if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getUdiCode())) { UdiEntity udiEntity = FilterUdiUtils.getUdi(companyProductRelevanceRequest.getUdiCode()); if (udiEntity != null) { companyProductRelevanceRequest.setNameCode(udiEntity.getUdi()); companyProductRelevanceRequest.setUnionCode(udiEntity.getUdi()); } } //如果输入DI标识,精确找到不同层级对应的产品信息 if (StrUtil.isNotEmpty(companyProductRelevanceRequest.getUnionCode())) { FilterUdiRelRequest filterUdiInfoRequest = new FilterUdiRelRequest(); filterUdiInfoRequest.setNameCode(companyProductRelevanceRequest.getUnionCode()); List temps = udiRelevanceService.filterUdiGp(filterUdiInfoRequest); if (temps != null && temps.size() > 0) { companyProductRelevanceRequest.setOriginUuid(temps.get(0).getOriginUuid()); companyProductRelevanceRequest.setNameCode(filterUdiInfoRequest.getNameCode()); companyProductRelevanceRequest.setUnionCode(null); } } else { //只查找主标识产品信息 companyProductRelevanceRequest.setDiType(1); } //查询详情id过滤 List purApplyDetailEntityList = purApplyDetailService.findByOrderId(companyProductRelevanceRequest.getId()); List idList = purApplyDetailEntityList.stream().map(PurApplyDetailEntity::getProductId).collect(Collectors.toList()); List basicInstrumentMaintainRelevanceResponses = null; FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); BeanCopyUtils.copy(companyProductRelevanceRequest, filterUdiRelRequest); filterUdiRelRequest.setIds(idList); basicInstrumentMaintainRelevanceResponses = udiRelevanceService.filterUdiJoinSup(filterUdiRelRequest); PageInfo pageInfo; pageInfo = new PageInfo<>(basicInstrumentMaintainRelevanceResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(basicInstrumentMaintainRelevanceResponses); return ResultVOUtils.success(pageSimpleResponse); } @AuthRuleAnnotation("") @GetMapping("/sale/info/company/product/corp/filter") public BaseResponse filterRlCorp(FilterCompanyProductRelevanceRequest filterCompanyProductRelevanceRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } if (StrUtil.isEmpty(filterCompanyProductRelevanceRequest.getUdiRlIdFk())) { return ResultVOUtils.error(500, "请先选择产品!"); } List companyProductRelevanceEntities = udiRlSupService.filterCompanyProductRelevance(filterCompanyProductRelevanceRequest); if (!companyProductRelevanceEntities.isEmpty()) { List erpIds = new ArrayList<>(); for (UdiRlSupEntity udiRlSupEntity : companyProductRelevanceEntities) { //过滤,如果默认已经有供应商了,则查出对应供应商即可 if (StrUtil.isNotEmpty(filterCompanyProductRelevanceRequest.getUnitFk())) { if (udiRlSupEntity.getUnitFk().equals(filterCompanyProductRelevanceRequest.getUnitFk())) { erpIds.add(udiRlSupEntity.getUnitFk()); } } else { erpIds.add(udiRlSupEntity.getUnitFk()); } } if (CollUtil.isEmpty(erpIds)) { return ResultVOUtils.error(500, "该产品未关联供应商"); } List basicUnitMaintainEntities = basicUnitMaintainService.batchSelectByErpIdsAndName(erpIds, filterCompanyProductRelevanceRequest.getKey()); return ResultVOUtils.success(basicUnitMaintainEntities); } return ResultVOUtils.error(500, "该产品未关联供应商!"); } @AuthRuleAnnotation("") @GetMapping("/spms/info/company/product/filterAll") public BaseResponse filterAll(FilterCompanyProductRelevanceRequest filterCompanyProductRelevanceRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } List companyProductRelevanceEntities = udiRlSupService.filterCompanyProductRelevance(filterCompanyProductRelevanceRequest); PageInfo pageInfo; pageInfo = new PageInfo<>(companyProductRelevanceEntities); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(companyProductRelevanceEntities); return ResultVOUtils.success(pageSimpleResponse); } @AuthRuleAnnotation("") @GetMapping("/sale/info/companyProductRelevance") public BaseResponse getCompanyProductRelevanceInfo(CompanyRequest companyRequest) { UdiRlSupEntity udiRlSupEntity = udiRlSupService.findCompanyProductRelevance(companyRequest.getCustomerId()); if (udiRlSupEntity != null) { return ResultVOUtils.success(udiRlSupEntity); } return ResultVOUtils.error(500, "空"); } @AuthRuleAnnotation("") @GetMapping("/sale/info/getCompanyProductRelevance") public BaseResponse getCompanyProductRelevance(FilterCompanyProductRelevanceRequest filterCompanyProductRelevanceRequest) { // filterCompanyProductRelevanceRequest.setCustomerId(getCustomerId()); List companyProductRelevanceEntities = udiRlSupService.getCompanyProductRelevance(filterCompanyProductRelevanceRequest); PageInfo pageInfo = new PageInfo<>(companyProductRelevanceEntities); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(companyProductRelevanceEntities); return ResultVOUtils.success(pageSimpleResponse); } @AuthRuleAnnotation("") @PostMapping("/sale/info/insertCompanyProductRelevance") @Log(title = "单据管理", businessType = BusinessType.INSERT) public BaseResponse insertCompanyProductRelevance(@RequestBody UdiRlSupEntity udiRlSupEntity) { if (udiRlSupService.findCompanyProductRelevanceByProductUuid(udiRlSupEntity) != null) { return ResultVOUtils.error(ResultEnum.DATA_REPEAT); } udiRlSupEntity.setUnitFk(null); udiRlSupEntity.setCreateTime(new Date()); udiRlSupEntity.setUpdateTime(new Date()); udiRlSupEntity.setAuditStatus("3"); boolean b = udiRlSupService.insertCompanyProductRelevance(udiRlSupEntity); return ResultVOUtils.success("成功"); } @AuthRuleAnnotation("") @PostMapping("/sale/info/insertFilter") @Log(title = "单据管理", businessType = BusinessType.INSERT) public BaseResponse insertFilter(@RequestBody UdiInfoExportRequest udiInfoExportRequest) { if (StrUtil.isEmpty(udiInfoExportRequest.getUnitFk())) { return ResultVOUtils.error(500, "未选择供应商!"); } //查询本企业有没有选择该产品有选择不能选择 CompanyProductRelevanceRequest companyProductRelevanceRequest = new CompanyProductRelevanceRequest(); // companyProductRelevanceRequest.setCustomerId(udiInfoExportRequest.getCustomerId() + ""); companyProductRelevanceRequest.setCustomerId(udiInfoExportRequest.getUnitFk() + ""); // List basicInstrumentMaintainRelevanceResponses = null; List basicInstrumentMaintainRelevanceResponses = null; companyProductRelevanceRequest.setDiType(1); // basicInstrumentMaintainRelevanceResponses = companyProductRelevanceService.filterUdiGp(companyProductRelevanceRequest); basicInstrumentMaintainRelevanceResponses = udiRlSupService.filterUdiGp(companyProductRelevanceRequest); String rlidStr = udiInfoExportRequest.getRlIds().get(0); for (UdiRlSupResponse obj : basicInstrumentMaintainRelevanceResponses) { String rlid = String.valueOf(obj.getRlId()); if (rlid.equals(rlidStr)) { return ResultVOUtils.error(999, "该企业已选择该产品,请勿重复选择!"); } } companyProductsRelService.insertCompanyProducts(udiInfoExportRequest); UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); udiRelevanceEntity.setId(Long.parseLong(rlidStr)); udiRelevanceEntity.setLockStatus(1); udiRelevanceService.updateUdiRelevance(udiRelevanceEntity); return ResultVOUtils.success("选入成功!"); } @AuthRuleAnnotation("") @PostMapping("/sale/info/updateCompanyProductRelevance") @Log(title = "供应商字典管理", businessType = BusinessType.UPDATE) public BaseResponse updateCompanyProductRelevance(@RequestBody UdiRlSupEntity udiRlSupEntity) { udiRlSupEntity.setUpdateTime(new Date()); int b = udiRlSupService.updateCompanyProductRelevance(udiRlSupEntity); return ResultVOUtils.success("修改成功"); } @PostMapping("/sale/info/deleteCompanyProductRelevance") @Log(title = "供应商字典管理", businessType = BusinessType.DELETE) public BaseResponse deleteCompanyProductRelevance(@RequestBody DeleteCompanyFileRequest deleteCompanyFileRequest) { boolean b = udiRlSupService.deleteById(deleteCompanyFileRequest.getId()); //调用同步删除的方法 BasicDataRequest basicDataRequest = new BasicDataRequest(); basicDataRequest.setDeleteCompanyFileRequest(deleteCompanyFileRequest); basicDataRequest.setKey("BASIC_MANAGE"); Long userId = getUserId(); spGetHttpClient.deleteBasicData(basicDataRequest,userId+""); return ResultVOUtils.success("成功"); } public String getCustomerId() { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (attributes == null) { throw new JsonException(ResultEnum.NOT_NETWORK); } HttpServletRequest request = attributes.getRequest(); String userId = request.getHeader("ADMIN_ID"); AuthAdmin authAdmin = authAdminService.findById(Long.parseLong(userId)); return authAdmin.getCustomerId() + ""; } }