package com.glxp.api.controller.basic; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.annotation.CusRedissonAnnotation; 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.RedissonCacheKey; import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.basic.BasicSkProjectEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.exception.JsonException; import com.glxp.api.req.basic.*; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.BasicSkProjectResponse; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.auth.AuthAdminService; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.basic.BasicSkProjectService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.basic.impl.BasicDestinyRelService; import com.glxp.api.util.BeanCopyUtils; import com.glxp.api.util.StringUtils; 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.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @RestController public class BasicDestinyRelController { @Resource BasicSkProjectService basicSkProjectService; @Resource private CustomerService customerService; @Resource private UdiRelevanceService udiRelevanceService; @Resource private AuthAdminService authAdminService; @Resource private BasicDestinyRelService basicDestinyRelService; @GetMapping("/udiwms/basic/destiny/model/filter") public BaseResponse filterModeldestiny(BasicSkProjectRequest basicSkProjectRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } List basicSkProjectResponses = basicSkProjectService.filterList(basicSkProjectRequest); if (CollectionUtil.isNotEmpty(basicSkProjectResponses)){ List pId = basicSkProjectResponses.stream().map(BasicSkProjectResponse::getId).collect(Collectors.toList()); Map priceMap = basicDestinyRelService.sumPriceByRedIds(pId); basicSkProjectResponses.forEach( x -> { BigDecimal price = priceMap.get(x.getId()); x.setPrice(String.valueOf(price)); }); } PageInfo pageInfo = new PageInfo<>(basicSkProjectResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(basicSkProjectResponses); return ResultVOUtils.success(pageSimpleResponse); } @PostMapping("/udiwms/basic/destiny/model/addModeldestiny") public BaseResponse addModeldestiny(@RequestBody BasicSkProjectEntity basicSkProjectEntity) { //判断名字和编号不能重复 QueryWrapper ew = new QueryWrapper<>(); ew.eq("name", basicSkProjectEntity.getName()); // ew.eq("type", 2); long count = basicSkProjectService.count(ew); if (count > 0) { return ResultVOUtils.error(999, "名称已存在!"); } ew.clear(); ew.eq("code", basicSkProjectEntity.getCode()); // ew.eq("type", 2); count = basicSkProjectService.count(ew); if (count > 0) { return ResultVOUtils.error(999, "编号已存在!"); } AuthAdmin authAdmin = customerService.getUserBean(); basicSkProjectEntity.setStatus(1);//草稿 basicSkProjectEntity.setId(IdUtil.getSnowflakeNextId()); basicSkProjectEntity.setCreateTime(new Date()); basicSkProjectEntity.setUpdateTime(new Date()); basicSkProjectEntity.setCreateUser(authAdmin.getId() + ""); basicSkProjectEntity.setUpdateUser(authAdmin.getId() + ""); Boolean falg = basicSkProjectService.save(basicSkProjectEntity); if (!falg) { return ResultVOUtils.error(999, "新增失败!"); } return ResultVOUtils.success(); } @PostMapping("/udiwms/basic/destiny/model/editModeldestiny") public BaseResponse editModeldestiny(@RequestBody BasicSkProjectEntity basicSkProjectEntity) { //判断名字和编号不能重复 QueryWrapper ew = new QueryWrapper<>(); ew.eq("name", basicSkProjectEntity.getName()); // ew.eq("type", 2); BasicSkProjectEntity thrProductsEntity1 = basicSkProjectService.getOne(ew); if (thrProductsEntity1 != null && !thrProductsEntity1.getId().equals(basicSkProjectEntity.getId())) { return ResultVOUtils.error(999, "名称已存在!"); } ew.clear(); ew.eq("code", basicSkProjectEntity.getCode()); // ew.eq("type", 2); thrProductsEntity1 = basicSkProjectService.getOne(ew); if (thrProductsEntity1 != null && !thrProductsEntity1.getId().equals(basicSkProjectEntity.getId())) { return ResultVOUtils.error(999, "编号已存在!"); } AuthAdmin authAdmin = customerService.getUserBean(); basicSkProjectEntity.setUpdateTime(new Date()); basicSkProjectEntity.setUpdateUser(authAdmin.getId() + ""); Boolean falg = basicSkProjectService.updateById(basicSkProjectEntity); if (!falg) { return ResultVOUtils.error(999, "编辑失败!"); } return ResultVOUtils.success(); } @PostMapping("/udiwms/basic/destiny/model/delectModeldestiny") public BaseResponse delectModeldestiny(@RequestBody BasicSkProjectEntity basicSkProjectEntity) { Boolean falg = basicSkProjectService.removeById(basicSkProjectEntity.getId() + ""); if (!falg) { return ResultVOUtils.error(999, "删除失败!"); } return ResultVOUtils.success(); } //查询产品信息 @AuthRuleAnnotation("") @GetMapping("/udiwms/basic/destiny/model/product/filter") public BaseResponse filterDestinyProduct(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 idList = null; if (companyProductRelevanceRequest.getId() != null) idList = basicDestinyRelService.filterDestinyRelIds(Long.valueOf(companyProductRelevanceRequest.getId())); List basicInstrumentMaintainRelevanceResponses = null; FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); BeanCopyUtils.copy(companyProductRelevanceRequest, filterUdiRelRequest); if (CollUtil.isNotEmpty(idList)) { filterUdiRelRequest.setIds(idList); } basicInstrumentMaintainRelevanceResponses = basicDestinyRelService.filterUdiJoinSup(filterUdiRelRequest); PageInfo pageInfo; pageInfo = new PageInfo<>(basicInstrumentMaintainRelevanceResponses); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(basicInstrumentMaintainRelevanceResponses); return ResultVOUtils.success(pageSimpleResponse); } 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("ADMINID"); AuthAdmin authAdmin = authAdminService.findById(Long.parseLong(userId)); return authAdmin.getCustomerId() + ""; } @PostMapping("/udiwms/basic/destiny/model/addModeldestinyProduct") public BaseResponse addModeldestinyProduct(@RequestBody BasicDestinyRelRequest basicDestinyRelRequest) { Boolean falg = basicDestinyRelService.addModeldestinyProduct(basicDestinyRelRequest); if (!falg) { return ResultVOUtils.error(999, "选入失败!"); } return ResultVOUtils.success(); } @GetMapping("/udiwms/basic/destiny/model/filterDestinyDelect") public BaseResponse filterDestinyDelect(FilterUdiRelRequest filterUdiRelRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } List thrProductsEntities = new ArrayList<>(); //查询详情id过滤 List idList = basicDestinyRelService.filterDestinyRelIds(Long.valueOf(filterUdiRelRequest.getId())); if (idList != null && idList.size() > 0) { filterUdiRelRequest.setDestinyId(filterUdiRelRequest.getId() + ""); filterUdiRelRequest.setIds(idList); filterUdiRelRequest.setDiType(1); thrProductsEntities = basicDestinyRelService.filterDestinyProducts(filterUdiRelRequest); int i = 0; for (UdiRelevanceResponse thrProductsEntity : thrProductsEntities) { thrProductsEntity.setIndex(i); i++; } } PageInfo pageInfo = new PageInfo<>(thrProductsEntities); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); pageSimpleResponse.setTotal(pageInfo.getTotal()); pageSimpleResponse.setList(thrProductsEntities); return ResultVOUtils.success(pageSimpleResponse); } @GetMapping("/udiwms/basic/destiny/model/delectModeldestinyProduct") public BaseResponse delectModeldestinyProduct(BasicDestinyRelRequest basicDestinyRelRequest) { Boolean falg = basicDestinyRelService.delectModeldestinyProduct(basicDestinyRelRequest); if (!falg) { return ResultVOUtils.error(999, "删除失败!"); } return ResultVOUtils.success(); } @PostMapping("/udiwms/basic/destiny/model/uploadModeldestinyProduct") public BaseResponse uploadModeldestinyProduct(@RequestBody BasicDestinyRelRequest basicDestinyRelRequest) { Boolean falg = basicDestinyRelService.uploadModeldestinyProduct(basicDestinyRelRequest); if (!falg) { return ResultVOUtils.error(999, "更新失败!"); } return ResultVOUtils.success(); } @CusRedissonAnnotation(cacheName = RedissonCacheKey.DL_SICKER, key = {"#dlThirdDestinyRequest.thirdSys"}, waitTime = 3, timeOutMsg = "后台正在下载,请勿重复提交") @PostMapping("/udiwms/basic/destiny/project/download") public BaseResponse dlProject(@RequestBody DlThirdDestinyRequest dlThirdDestinyRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); } ThreadUtil.execAsync(() -> { basicDestinyRelService.dlThirdDestiny(dlThirdDestinyRequest); }); return ResultVOUtils.success("后台已开始下载,请稍后刷新查看!"); } @PostMapping("/udiwms/basic/destiny/model/submitSkSkProject") public BaseResponse submitSkSkProject(@RequestBody BasicSkProjectEntity basicSkProjectEntity) { Long id = basicSkProjectEntity.getId(); if (id == null){ return ResultVOUtils.error(999, "提交失败,id不可以为空!"); } Boolean falgf = basicSkProjectService.generateProduct(id); if (!falgf) { return ResultVOUtils.error(999, "生成产品失败!"); } AuthAdmin authAdmin = customerService.getUserBean(); basicSkProjectEntity.setStatus(3);//审核通过 basicSkProjectEntity.setUpdateTime(new Date()); basicSkProjectEntity.setUpdateUser(authAdmin.getId() + ""); Boolean falg = basicSkProjectService.updateById(basicSkProjectEntity); if (!falg) { return ResultVOUtils.error(999, "编辑失败!"); } return ResultVOUtils.success(); } }