You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-wms-java/src/main/java/com/glxp/api/controller/basic/BasicDestinyRelController.java

328 lines
15 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<BasicSkProjectResponse> basicSkProjectResponses = basicSkProjectService.filterList(basicSkProjectRequest);
if (CollectionUtil.isNotEmpty(basicSkProjectResponses)){
List<Long> pId = basicSkProjectResponses.stream().map(BasicSkProjectResponse::getId).collect(Collectors.toList());
Map<Long,BigDecimal> priceMap = basicDestinyRelService.sumPriceByRedIds(pId);
basicSkProjectResponses.forEach( x -> {
BigDecimal price = priceMap.get(x.getId());
x.setPrice(String.valueOf(price));
});
}
PageInfo<BasicSkProjectResponse> pageInfo = new PageInfo<>(basicSkProjectResponses);
PageSimpleResponse<BasicSkProjectResponse> 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<BasicSkProjectEntity> 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<BasicSkProjectEntity> 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<UdiRelevanceResponse> 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<Long> idList = null;
if (companyProductRelevanceRequest.getId() != null)
idList = basicDestinyRelService.filterDestinyRelIds(Long.valueOf(companyProductRelevanceRequest.getId()));
List<UdiRelevanceResponse> basicInstrumentMaintainRelevanceResponses = null;
FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest();
BeanCopyUtils.copy(companyProductRelevanceRequest, filterUdiRelRequest);
if (CollUtil.isNotEmpty(idList)) {
filterUdiRelRequest.setIds(idList);
}
basicInstrumentMaintainRelevanceResponses = basicDestinyRelService.filterUdiJoinSup(filterUdiRelRequest);
PageInfo<UdiRelevanceResponse> pageInfo;
pageInfo = new PageInfo<>(basicInstrumentMaintainRelevanceResponses);
PageSimpleResponse<UdiRelevanceResponse> 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<UdiRelevanceResponse> thrProductsEntities = new ArrayList<>();
//查询详情id过滤
List<Long> 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<UdiRelevanceResponse> pageInfo = new PageInfo<>(thrProductsEntities);
PageSimpleResponse<UdiRelevanceResponse> 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();
}
}