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

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();
}
}