package com.glxp.api.controller.purchase; 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.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.purchase.SupCertEntity; import com.glxp.api.entity.purchase.SupCertSetEntity; import com.glxp.api.entity.purchase.SupCompanyEntity; import com.glxp.api.entity.purchase.SupManufacturerEntity; import com.glxp.api.exception.JsonException; import com.glxp.api.req.purchase.FilterCertSetsRequest; import com.glxp.api.req.purchase.FilterSupCertRequest; import com.glxp.api.req.purchase.FilterSupManufacturerRequest; import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.service.auth.AuthAdminService; import com.glxp.api.service.purchase.SupCertService; import com.glxp.api.service.purchase.SupCertSetService; import com.glxp.api.service.purchase.SupCompanyService; import com.glxp.api.service.purchase.SupManufacturerService; import com.glxp.api.service.system.CompanyService; 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.Date; import java.util.List; import java.util.ListIterator; @RestController public class SupManufacturerController { @Resource private AuthAdminService authAdminService; @Resource private SupManufacturerService supManufacturerService; @Resource private SupCertService supCertService; @Resource private SupCompanyService supCompanyService; @Resource SupCertSetService supCertSetService; @Resource private CompanyService companyService; @AuthRuleAnnotation("") @GetMapping("/sup/manufacturer/getCompanyInfo") public BaseResponse getCompanyInfo(FilterSupManufacturerRequest filterSupManufacturerRequest) { SupManufacturerEntity supManufacturerEntity = supManufacturerService.findCompany(filterSupManufacturerRequest.getId()); if (supManufacturerEntity != null) { return ResultVOUtils.success(supManufacturerEntity); } return ResultVOUtils.error(500, "企业信息为空"); } @AuthRuleAnnotation("") @GetMapping("/sup/manufacturer/getCompanyList") public BaseResponse getCompanyList(FilterSupManufacturerRequest filterSupManufacturerRequest) { List companyEntities = supManufacturerService.getCompany(filterSupManufacturerRequest); PageInfo pageInfo = new PageInfo<>(companyEntities); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(companyEntities); return ResultVOUtils.success(pageSimpleResponse); } @AuthRuleAnnotation("") @GetMapping("/sup/manufacturer/getCompanyBySup") public BaseResponse getCompanyBySup(FilterSupManufacturerRequest filterSupManufacturerRequest) { // filterSupManufacturerRequest.setCustomerId(getCustomerId()); List companyEntities = supManufacturerService.getCompany(filterSupManufacturerRequest); PageInfo pageInfo = new PageInfo<>(companyEntities); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(companyEntities); return ResultVOUtils.success(pageSimpleResponse); } @AuthRuleAnnotation("") @PostMapping("/sup/manufacturer/addCompany") public BaseResponse addCompany(@RequestBody SupManufacturerEntity supManufacturerEntity) { //判断用户名和社会信用代码不能重复 FilterSupManufacturerRequest filterSupManufacturerRequest=new FilterSupManufacturerRequest(); filterSupManufacturerRequest.setCompanyName(supManufacturerEntity.getCompanyName()); filterSupManufacturerRequest.setCustomerId(getCustomerId()); List companyEntities = supManufacturerService.getCompanyByNameAndCode(filterSupManufacturerRequest); if(companyEntities.size()>0){ return ResultVOUtils.error(999,"企业名称不能重复!"); } filterSupManufacturerRequest=new FilterSupManufacturerRequest(); filterSupManufacturerRequest.setCustomerId(getCustomerId()); filterSupManufacturerRequest.setCreditCode(supManufacturerEntity.getCreditCode()); companyEntities = supManufacturerService.getCompanyByNameAndCode(filterSupManufacturerRequest); if(companyEntities.size()>0){ return ResultVOUtils.error(999,"统一社会信用代码不能重复!"); } //提交审核 if (supManufacturerEntity.getAuditStatus() == ConstantStatus.AUDIT_CHANGE || supManufacturerEntity.getAuditStatus() == ConstantStatus.AUDIT_UN) { //判断是否上级供应商是否审核通过 SupCompanyEntity supCompanyEntity = supCompanyService.findCompany(supManufacturerEntity.getCustomerId()); if (supCompanyEntity.getAuditStatus() != ConstantStatus.AUDIT_PASS ) { return ResultVOUtils.error(500, "所属配送企业资质未通过审核,暂时无法提交!"); } //验证证书是否齐全 FilterCertSetsRequest filterCertSetsRequest = new FilterCertSetsRequest(); filterCertSetsRequest.setType(ConstantStatus.CERT_MANUFACTURER); filterCertSetsRequest.setNeed(0); List supCertSetEntities = supCertSetService.filterCertSets(filterCertSetsRequest); List supCertEntityList = supCertService.findAll(supManufacturerEntity.getCustomerId(), supManufacturerEntity.getManufacturerId()); //判断存在有草稿的未提交的就不能通过 for(SupCertEntity obj:supCertEntityList){ if (obj.getAuditStatus() == 0.) { return ResultVOUtils.error(999,"资质证书存在草稿不能提交!"); } } ListIterator iterable = supCertSetEntities.listIterator(); while (iterable.hasNext()) { SupCertSetEntity supCertSetEntity = iterable.next(); if (( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 2 && StrUtil.trimToEmpty(supManufacturerEntity.getCompanyType()).equals("2")) || ( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 1 && StrUtil.trimToEmpty(supManufacturerEntity.getCompanyType()).equals("2")) || ( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 1 && supManufacturerEntity.getCompanyType().equals("1")) || ( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 3 && supManufacturerEntity.getCompanyType().equals("1"))) { for (SupCertEntity supCertEntity : supCertEntityList) { if (supCertEntity.getName().equals(supCertSetEntity.getName())) { if (StrUtil.isNotEmpty(supCertEntity.getFilePath())) { iterable.remove(); break; } } } } else { iterable.remove(); } } String errMsg = ""; if (supCertSetEntities.size() > 0) { for (SupCertSetEntity supCertSetEntity : supCertSetEntities) { errMsg = errMsg + "," + supCertSetEntity.getName(); } return ResultVOUtils.error(500, errMsg.substring(1) + "等证书未上传,无法提交审核!"); } } supManufacturerEntity.setCreateTime(new Date()); supManufacturerEntity.setUpdateTime(new Date()); boolean b = supManufacturerService.insertCompany(supManufacturerEntity); if (b) { return ResultVOUtils.success("添加成功"); } else { return ResultVOUtils.error(ResultEnum.NOT_NETWORK); } } @AuthRuleAnnotation("") @PostMapping("/sup/manufacturer/modifyCompany") public BaseResponse modifyCompany(@RequestBody SupManufacturerEntity supManufacturerEntity) { if (StrUtil.isEmpty(supManufacturerEntity.getManufacturerId()) || StrUtil.isEmpty(supManufacturerEntity.getCustomerId())) { return ResultVOUtils.error(500, "参数错误!"); } //判断用户名和社会信用代码不能重复 FilterSupManufacturerRequest filterSupManufacturerRequest=new FilterSupManufacturerRequest(); filterSupManufacturerRequest.setCompanyName(supManufacturerEntity.getCompanyName()); filterSupManufacturerRequest.setCustomerId(getCustomerId()); List companyEntities = supManufacturerService.getCompanyByNameAndCode(filterSupManufacturerRequest); if(companyEntities.size()>0){ return ResultVOUtils.error(999,"企业名称不能重复!"); } filterSupManufacturerRequest=new FilterSupManufacturerRequest(); filterSupManufacturerRequest.setCustomerId(getCustomerId()); filterSupManufacturerRequest.setCreditCode(supManufacturerEntity.getCreditCode()); companyEntities = supManufacturerService.getCompanyByNameAndCode(filterSupManufacturerRequest); if(companyEntities.size()>0){ return ResultVOUtils.error(999,"统一社会信用代码不能重复!"); } //提交审核 if (supManufacturerEntity.getAuditStatus() == ConstantStatus.AUDIT_CHANGE || supManufacturerEntity.getAuditStatus() == ConstantStatus.AUDIT_UN) { //判断是否上级供应商是否审核通过 SupCompanyEntity supCompanyEntity = supCompanyService.findCompany(supManufacturerEntity.getCustomerId()); if (supCompanyEntity.getAuditStatus() == ConstantStatus.AUDIT_UN || supCompanyEntity.getAuditStatus() == ConstantStatus.AUDIT_DRAFT) { return ResultVOUtils.error(500, "所属配送企业资质未通过审核,暂时无法提交!"); } //验证证书是否齐全 FilterCertSetsRequest filterCertSetsRequest = new FilterCertSetsRequest(); filterCertSetsRequest.setType(ConstantStatus.CERT_MANUFACTURER); filterCertSetsRequest.setNeed(0); List supCertSetEntities = supCertSetService.filterCertSets(filterCertSetsRequest); List supCertEntityList = supCertService.findAll(supManufacturerEntity.getCustomerId(), supManufacturerEntity.getManufacturerId()); //判断存在有草稿的未提交的就不能通过 for(SupCertEntity obj:supCertEntityList){ if (obj.getAuditStatus() == 0.) { return ResultVOUtils.error(999,"资质证书存在草稿不能提交!"); } } ListIterator iterable = supCertSetEntities.listIterator(); while (iterable.hasNext()) { SupCertSetEntity supCertSetEntity = iterable.next(); if (( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 2 && StrUtil.trimToEmpty(supManufacturerEntity.getCompanyType()).equals("2")) || ( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 1 && StrUtil.trimToEmpty(supManufacturerEntity.getCompanyType()).equals("2")) || ( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 1 && supManufacturerEntity.getCompanyType().equals("1")) || ( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 3 && supManufacturerEntity.getCompanyType().equals("1"))) { for (SupCertEntity supCertEntity : supCertEntityList) { if (supCertEntity.getName().equals(supCertSetEntity.getName())) { if (StrUtil.isNotEmpty(supCertEntity.getFilePath())) { iterable.remove(); break; } } } } else { iterable.remove(); } } String errMsg = ""; if (supCertSetEntities.size() > 0) { for (SupCertSetEntity supCertSetEntity : supCertSetEntities) { errMsg = errMsg + "," + supCertSetEntity.getName(); } return ResultVOUtils.error(500, errMsg.substring(1) + "等证书未上传,无法提交审核!"); } } supManufacturerEntity.setUpdateTime(new Date()); SupManufacturerEntity originEntity = supManufacturerService.findManufacturer(supManufacturerEntity.getManufacturerId()); boolean b = supManufacturerService.modifyCompany(supManufacturerEntity); //修改证书对应的供应商ID,生产企业ID supCertService.updateManufacturerId(originEntity.getCustomerId(), supManufacturerEntity.getCustomerId(), originEntity.getManufacturerId(), supManufacturerEntity.getManufacturerId()); if (b) { return ResultVOUtils.success("修改成功"); } else { return ResultVOUtils.error(ResultEnum.NOT_NETWORK); } } @AuthRuleAnnotation("") @PostMapping("/udiwms/sup/manufacturer/audit") public BaseResponse auditMmanufacturer(@RequestBody SupManufacturerEntity supManufacturerEntity) { if (StrUtil.isEmpty(supManufacturerEntity.getManufacturerId()) || StrUtil.isEmpty(supManufacturerEntity.getCustomerId())) { return ResultVOUtils.error(500, "参数错误!"); } if(supManufacturerEntity.getAuditStatus()==1 || supManufacturerEntity.getAuditStatus()==4){ //查询上传的资质证书 FilterSupCertRequest filterSupCertRequest = new FilterSupCertRequest(); filterSupCertRequest.setCustomerId(supManufacturerEntity.getCustomerId()); filterSupCertRequest.setManufacturerIdFk(supManufacturerEntity.getManufacturerId()); filterSupCertRequest.setType(ConstantStatus.CERT_MANUFACTURER); List supCertEntityList = supCertService.filterCompanyCert(filterSupCertRequest); //查询必须上传的资质证书 FilterCertSetsRequest filterCertSetsRequest = new FilterCertSetsRequest(); filterCertSetsRequest.setType(ConstantStatus.CERT_MANUFACTURER); List supCertSetEntities = supCertSetService.filterCertSets(filterCertSetsRequest); //判断有没有存在必须上传而没有上传的证书 ListIterator iterable = supCertSetEntities.listIterator(); while (iterable.hasNext()) { SupCertSetEntity supCertSetEntity = iterable.next(); if (( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 2 && StrUtil.trimToEmpty(supManufacturerEntity.getCompanyType()).equals("2")) || ( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 1 && StrUtil.trimToEmpty(supManufacturerEntity.getCompanyType()).equals("2")) || ( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 1 && supManufacturerEntity.getCompanyType().equals("1")) || ( supCertSetEntity.getForeign() != null && supCertSetEntity.getForeign() == 3 && supManufacturerEntity.getCompanyType().equals("1"))) { for (SupCertEntity supCertEntity : supCertEntityList) { if (supCertEntity.getName().equals(supCertSetEntity.getName())) { if (StrUtil.isNotEmpty(supCertEntity.getFilePath())) { iterable.remove(); break; } } } } else { iterable.remove(); } } String errMsg = ""; if (supCertSetEntities.size() > 0) { return ResultVOUtils.error(500, "必传证书不齐全!"); } } // 查询是否包含审核未通过的证书 if (supManufacturerEntity.getAuditStatus() == ConstantStatus.AUDIT_PASS || supManufacturerEntity.getAuditStatus() == ConstantStatus.AUDIT_CHANGE_PASS) { FilterSupCertRequest filterSupCertRequest = new FilterSupCertRequest(); filterSupCertRequest.setAuditStatus(24); filterSupCertRequest.setCustomerId(supManufacturerEntity.getCustomerId()); filterSupCertRequest.setManufacturerIdFk(supManufacturerEntity.getManufacturerId()); filterSupCertRequest.setType(ConstantStatus.CERT_MANUFACTURER); List supCertEntityList = supCertService.filterCompanyCert(filterSupCertRequest); if (CollUtil.isNotEmpty(supCertEntityList)) { for (SupCertEntity supCertEntity : supCertEntityList) { supCertEntity.setAuditStatus(ConstantStatus.AUDIT_PASS); supCertService.updateCompanyCert(supCertEntity); } // return ResultVOUtils.error(500, "审核失败,剩余" + supCertEntityList.size() + "个证书还未审核或审核未通过!"); } } supManufacturerEntity.setUpdateTime(new Date()); SupManufacturerEntity originEntity = supManufacturerService.findCompany(supManufacturerEntity.getId()); boolean b = supManufacturerService.modifyCompany(supManufacturerEntity); //修改证书对应的供应商ID,生产企业ID supCertService.updateManufacturerId(originEntity.getCustomerId(), supManufacturerEntity.getCustomerId(), originEntity.getManufacturerId(), supManufacturerEntity.getManufacturerId()); if (b) { return ResultVOUtils.success("修改成功"); } else { return ResultVOUtils.error(ResultEnum.NOT_NETWORK); } } @AuthRuleAnnotation("") @GetMapping("/sup/manufacturer/basic/delete") public BaseResponse deleteContact(DeleteRequest deleteRequest) { boolean b = supManufacturerService.deleteById(deleteRequest.getId()); if (b) return ResultVOUtils.success("删除成功"); else { return ResultVOUtils.error(500, "删除失败"); } } 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() + ""; } }