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-spms-java/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java

467 lines
24 KiB
Java

2 years ago
package com.glxp.api.controller.basic;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
2 years ago
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.AuthRuleAnnotation;
2 years ago
import com.glxp.api.annotation.Log;
2 years ago
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.AsyncDiDlHelper;
2 years ago
import com.glxp.api.constant.BusinessType;
2 years ago
import com.glxp.api.constant.ConstantStatus;
2 years ago
import com.glxp.api.entity.basic.CompanyProductRelevanceEntity;
2 years ago
import com.glxp.api.entity.basic.ProductInfoEntity;
import com.glxp.api.entity.basic.UdiProductEntity;
import com.glxp.api.entity.basic.UdiRelevanceEntity;
2 years ago
import com.glxp.api.entity.system.CompanyEntity;
2 years ago
import com.glxp.api.entity.thrsys.ThrProductsEntity;
import com.glxp.api.entity.thrsys.ThrSystemEntity;
import com.glxp.api.http.NmpaUdiClient;
import com.glxp.api.req.basic.UdiCombineRequest;
import com.glxp.api.req.basic.ProductInfoFilterRequest;
import com.glxp.api.req.basic.RemoveUdiRelRequest;
import com.glxp.api.req.thrsys.FilterBasicThirdSysRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.service.auth.CustomerService;
2 years ago
import com.glxp.api.service.basic.*;
import com.glxp.api.service.system.CompanyService;
2 years ago
import com.glxp.api.service.thrsys.ThrDataService;
import com.glxp.api.service.thrsys.ThrSystemService;
import com.glxp.api.util.CustomUtil;
import com.glxp.api.util.udi.UdiInfoUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
2 years ago
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 javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*
*/
@RestController
public class UdiContrastController {
@Resource
NmpaUdiClient udiDlHttpClient;
@Resource
UdiRelevanceService udiRelevanceService;
@Resource
UdiProductService udiProductService;
@Resource
private ThrSystemService thrSystemService;
@Resource
UdiContrastService udiContrastService;
@Resource
CustomerService customerService;
@Resource
ProductInfoService productInfoService;
@Resource
ThrDataService thrDataService;
2 years ago
@Resource
CompanyService companyService;
@Resource
private CompanyProductRelevanceService companyProductRelevanceService;
2 years ago
/**
*
*/
@AuthRuleAnnotation("")
@PostMapping("/udi/udirel/revleance")
2 years ago
@Log(title = "耗材字典", businessType = BusinessType.INSERT)
2 years ago
public BaseResponse revleanceUdi(@RequestBody UdiCombineRequest udiCombineRequest) {
2 years ago
udiCombineRequest.setCustomerId(Long.valueOf(customerService.getCustomerId()));
2 years ago
List<String> keys = udiCombineRequest.getKeys();
if (keys != null && keys.size() > 0) {
for (String key : keys) {
//关联添加
if (udiCombineRequest.getRelId() == null || udiCombineRequest.isIdSpliUdi()) {
if (StrUtil.isNotEmpty(udiCombineRequest.getThirdId())) {
if (udiContrastService.isExit(key, udiCombineRequest.getThirdId(), null)) {
return ResultVOUtils.error(500, "已存在相同的对照关系,对照失败!");
} else {
udiContrastService.createUnionContrast(udiCombineRequest, key);
2 years ago
if (udiCombineRequest.isIdSpliUdi()) {
List<UdiRelevanceResponse> temps = udiContrastService.findByUnion(key, udiCombineRequest.getThirdId());
if (CollUtil.isNotEmpty(temps)) {
UdiRelevanceResponse temp = temps.get(0);
CompanyEntity companyEntity = companyService.findCompany(udiCombineRequest.getCustomerId() + "");
2 years ago
CompanyProductRelevanceEntity companyProductRelevanceEntity = new CompanyProductRelevanceEntity();
companyProductRelevanceEntity.setCreateTime(new Date());
companyProductRelevanceEntity.setUpdateTime(new Date());
companyProductRelevanceEntity.setAuditStatus("3");
companyProductRelevanceEntity.setUnitFk(companyEntity.getUnitIdFk());
companyProductRelevanceEntity.setUdiRlIdFk(temp.getId());
companyProductRelevanceEntity.setCustomerId(companyEntity.getCustomerId());
boolean b = companyProductRelevanceService.insertCompanyProductRelevance(companyProductRelevanceEntity);
}
}
2 years ago
}
} else {
//只添加DI
if (udiContrastService.isExit(key, null, null)) {
return ResultVOUtils.error(500, "已存在该DI且未对照");
} else {
udiContrastService.createOnlyUuid(udiCombineRequest, key);
}
}
} else {//修改关联DI
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(udiCombineRequest.getRelId());
if (udiContrastService.isExit(key, udiRelevanceEntity.getMainId(), null)) {
return ResultVOUtils.error(500, "已存在相同的对照关系,对照失败!");
} else {
updateDi(udiRelevanceEntity, key);
}
}
}
} else if (CollUtil.isNotEmpty(udiCombineRequest.getThirdIds())) {
StringBuffer buffer = new StringBuffer();
//只添加第三方产品
for (String thirdId : udiCombineRequest.getThirdIds()) {
if (udiContrastService.isExit(null, thirdId, null)) {
buffer.append(thirdId).append(",");
} else {
udiContrastService.createOnlyMainId(thirdId);
}
}
if (StrUtil.isNotBlank(buffer.toString())) {
String errorInfo = StrUtil.removeSuffix(buffer.toString(), ",");
return ResultVOUtils.error(500, "产品编码:" + errorInfo + "已存在!");
}
}
return ResultVOUtils.success("添加成功");
}
/**
*
*/
@AuthRuleAnnotation("")
@PostMapping("/udi/udirel/changeVersion")
2 years ago
@Log(title = "耗材字典", businessType = BusinessType.UPDATE)
2 years ago
public BaseResponse changeVersion(@RequestBody UdiCombineRequest udiCombineRequest) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(udiCombineRequest.getRelId());
if (udiContrastService.isExit(udiCombineRequest.getKeys().get(0), udiRelevanceEntity.getMainId(), null)) {
return ResultVOUtils.error(500, "已存在相同的对照关系,无法切换版本");
}
List<UdiProductEntity> udiInfoEntities = udiDlHttpClient.getUdiByUuid(udiCombineRequest.getKeys().get(0));
udiProductService.deleteByUuid(udiRelevanceEntity.getUuid());
for (UdiProductEntity udiProductEntity : udiInfoEntities) {
udiProductEntity.setUuid(udiRelevanceEntity.getUuid());
udiProductEntity.setProductType(ConstantStatus.PRODUCT_TYPE_UDI);
}
udiProductService.insertUdiInfos(UdiInfoUtil.initUdiInfoEntitys(udiInfoEntities));
udiRelevanceEntity.setUpdateTime(new Date());
udiRelevanceEntity.setModifyTime(new Date());
udiRelevanceService.updateUdiRelevance(udiRelevanceEntity);
return ResultVOUtils.success("切换成功!");
}
@Resource
AsyncDiDlHelper asyncDiDlHelper;
/**
*
*/
@Transactional(rollbackFor = Exception.class)
@AuthRuleAnnotation("")
@PostMapping("/udi/udirel/syncOnline")
@Log(title = "耗材字典", businessType = BusinessType.UPDATE)
public BaseResponse syncOnline(@RequestBody UdiCombineRequest udiCombineRequest) {
List<UdiProductEntity> udiInfoEntities = udiProductService.findByOriginUuid(udiCombineRequest.getOriginUuid());
if (CollUtil.isNotEmpty(udiInfoEntities)) {
String newUuid = null;
BaseResponse<List<ProductInfoEntity>> listBaseResponse = asyncDiDlHelper.dlLastVersionByDi(udiInfoEntities.get(0).getNameCode());
if (listBaseResponse.getCode() == 20000) {
List<ProductInfoEntity> productInfoEntityList = listBaseResponse.getData();
if (CollUtil.isNotEmpty(productInfoEntityList)) {
productInfoService.insertProductInfos(productInfoEntityList);
newUuid = productInfoEntityList.get(0).getUuid();
}
}
udiInfoEntities = udiDlHttpClient.getUdiByUuid(newUuid);
udiProductService.deleteByUuid(udiCombineRequest.getUuid());
for (UdiProductEntity udiProductEntity : udiInfoEntities) {
udiProductEntity.setUuid(udiCombineRequest.getUuid());
udiProductEntity.setProductType(ConstantStatus.PRODUCT_TYPE_UDI);
udiProductEntity.setUpdateTime(new Date());
udiProductEntity.setId(IdUtil.getSnowflakeNextId());
}
udiProductService.insertUdiInfos(UdiInfoUtil.initUdiInfoEntitys(udiInfoEntities));
return ResultVOUtils.success("更新成功!");
} else {
return ResultVOUtils.error(500, "更新失败!");
}
}
2 years ago
//更改关联第三方产品产品信息
@AuthRuleAnnotation("")
@PostMapping("/udi/udirel/modifyRel")
2 years ago
@Log(title = "耗材字典", businessType = BusinessType.UPDATE)
2 years ago
public BaseResponse modifyRel(@RequestBody UdiCombineRequest udiCombineRequest) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(udiCombineRequest.getRelId());
udiRelevanceEntity = setThird(udiCombineRequest, udiRelevanceEntity);
udiRelevanceEntity.setUpdateTime(new Date());
udiRelevanceEntity.setModifyTime(new Date());
udiRelevanceEntity.setSupName(udiCombineRequest.getSupName());
udiRelevanceEntity.setUpdateUser(customerService.getUserId() + "");
UdiRelevanceResponse temp = udiContrastService.findById(udiRelevanceEntity.getId());
if (udiContrastService.isExit(temp.getOriginUuid(), udiRelevanceEntity.getMainId(), udiCombineRequest.getThirdSys())) {
return ResultVOUtils.error(500, "已存在相同的对照关系,对照失败!");
} else {
try {
udiRelevanceService.updateUdiRelevance(udiRelevanceEntity);
} catch (Exception e) {
return ResultVOUtils.error(500, "已存在相同的对照关系,对照失败!");
}
}
//关联第三方产品信息若无值则由第三方产品信息带过来
UdiProductEntity udiProductEntity = udiProductService.findByUuid(udiRelevanceEntity.getUuid());
if (StrUtil.isEmpty(udiProductEntity.getManufactory())) {
udiProductEntity.setManufactory(udiCombineRequest.getManufactory());
}
if (StrUtil.isEmpty(udiProductEntity.getMeasname())) {
udiProductEntity.setMeasname(udiCombineRequest.getMeasname());
}
udiProductService.updateUdiInfo(udiProductEntity);
2 years ago
return ResultVOUtils.success("更新成功");
}
//解除绑定第三方产品信息
@AuthRuleAnnotation("")
@GetMapping("/udiwms/udirl/thirdSys/remove")
2 years ago
@Log(title = "耗材字典", businessType = BusinessType.UPDATE)
2 years ago
public BaseResponse removeThirdId(RemoveUdiRelRequest removeUdiRelRequest) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(removeUdiRelRequest.getRelId());
List<UdiRelevanceEntity> udiRelevanceEntities = udiRelevanceService.selectByUuid(udiRelevanceEntity.getUuid());
if (udiRelevanceEntities != null && udiRelevanceEntities.size() > 0) {
for (UdiRelevanceEntity udiRelevanceEntity1 : udiRelevanceEntities) {
if (udiRelevanceEntity1.getThirdId() == null && udiRelevanceEntity1.getThirdId1() == null &&
udiRelevanceEntity1.getThirdId2() == null && udiRelevanceEntity1.getThirdId3() == null && udiRelevanceEntity1.getThirdId4() == null) {
return ResultVOUtils.error(500, "解除绑定失败!");
}
}
}
if (removeUdiRelRequest.getThirdSys().equals("thirdId")) {
udiRelevanceEntity.setThirdId("");
UdiRelevanceResponse temp = udiContrastService.findById(udiRelevanceEntity.getId());
if (udiContrastService.isExit(temp.getOriginUuid(), null, null)) {
return ResultVOUtils.error(500, "解除绑定失败!");
}
} else if (removeUdiRelRequest.getThirdSys().equals("thirdId1")) {
udiRelevanceEntity.setThirdId1("");
} else if (removeUdiRelRequest.getThirdSys().equals("thirdId2")) {
udiRelevanceEntity.setThirdId2("");
} else if (removeUdiRelRequest.getThirdSys().equals("thirdId3")) {
udiRelevanceEntity.setThirdId3("");
} else if (removeUdiRelRequest.getThirdSys().equals("thirdId4")) {
udiRelevanceEntity.setThirdId4("");
}
try {
UdiCombineRequest udiCombineRequest = new UdiCombineRequest();
udiCombineRequest.setRelId(removeUdiRelRequest.getRelId());
udiRelevanceEntity.setSupName("");
udiRelevanceService.updateUdiRelevance(udiRelevanceEntity);
} catch (Exception e) {
e.printStackTrace();
return ResultVOUtils.error(500, "解除绑定失败!");
}
return ResultVOUtils.success("解除绑定成功!");
}
//解除绑定DI器械信息
@AuthRuleAnnotation("")
@GetMapping("/udiwms/udirl/di/remove")
2 years ago
@Log(title = "耗材字典", businessType = BusinessType.UPDATE)
2 years ago
public BaseResponse removeDI(RemoveUdiRelRequest removeRelRequest) {
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectById(removeRelRequest.getRelId());
2 years ago
if (StrUtil.isEmpty(udiRelevanceEntity.getMainId())) {
return ResultVOUtils.error(500, "未关联第三方产品ID无法解除绑定");
}
List<UdiRelevanceResponse> temps = udiRelevanceService.selectByMainId(udiRelevanceEntity.getMainId());
if (temps.size() > 0) {
for (UdiRelevanceResponse temp : temps) {
if (temp.getMainId() != null)
if (temp.getNameCode().equals(temp.getMainId())) {
return ResultVOUtils.error(500, "已存在未关联的第三方产品ID无法解除绑定");
}
}
}
ThrSystemEntity thrSystemEntity = thrSystemService.selectMainThrSys();
ThrProductsEntity thrProductsEntity = thrDataService.getProducts(udiRelevanceEntity.getMainId(), thrSystemEntity.getThirdId());
2 years ago
UdiProductEntity UdiInfoRequest = new UdiProductEntity();
BeanUtils.copyProperties(thrProductsEntity, UdiInfoRequest);
UdiInfoRequest.setNameCode(thrProductsEntity.getCode());
UdiInfoRequest.setCpmctymc(thrProductsEntity.getName());
UdiInfoRequest.setManufactory(thrProductsEntity.getManufactory());
UdiInfoRequest.setYlqxzcrbarmc(thrProductsEntity.getManufactory());
UdiInfoRequest.setGgxh(thrProductsEntity.getSpec());
UdiInfoRequest.setZczbhhzbapzbh(thrProductsEntity.getRegisterNo());
UdiInfoRequest.setUuid(CustomUtil.getUUId());
UdiInfoRequest.setProductType(ConstantStatus.PRODUCT_TYPE_THIRD);
UdiInfoRequest.setDiType(1);
udiProductService.insertUdiInfo(UdiInfoRequest);
udiRelevanceEntity.setUuid(UdiInfoRequest.getUuid());
2 years ago
udiRelevanceEntity.setUpdateTime(new Date());
udiRelevanceEntity.setModifyTime(new Date());
udiRelevanceService.updateUdiRelevance(udiRelevanceEntity);
return ResultVOUtils.success("解除绑定成功!");
}
//获取DI版本号
@AuthRuleAnnotation("")
@GetMapping("/udiwms/syncdi/version")
public BaseResponse getVersion(UdiCombineRequest udiCombineRequest) {
List<ProductInfoEntity> productInfoEntityList = new ArrayList<>();
List<UdiRelevanceResponse> udiRelevanceEntities = udiContrastService.findByUuid(udiCombineRequest.getUuid());
if (CollUtil.isNotEmpty(udiRelevanceEntities)) {
String originUuid = udiRelevanceEntities.get(0).getOriginUuid();
List<ProductInfoEntity> productInfoEntities = productInfoService.selectByUuid(originUuid);
if (CollUtil.isNotEmpty(productInfoEntities)) {
String deviceRecordKey = productInfoEntities.get(0).getDeviceRecordKey();
ProductInfoFilterRequest productInfoFilterRequest = new ProductInfoFilterRequest();
productInfoFilterRequest.setDeviceRecordKey(deviceRecordKey);
List<ProductInfoEntity> result = productInfoService.filterProductGroup(productInfoFilterRequest);
if (CollUtil.isNotEmpty(result)) {
productInfoEntityList.addAll(result);
}
}
}
PageInfo<ProductInfoEntity> pageInfo;
pageInfo = new PageInfo<>(productInfoEntityList);
PageSimpleResponse<ProductInfoEntity> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(productInfoEntityList);
return ResultVOUtils.success(pageSimpleResponse);
}
public void updateDi(UdiRelevanceEntity udiRelevanceEntity, String key) {
List<UdiProductEntity> udiInfoEntities = udiDlHttpClient.getOrUpdateByUuid(key);
List<UdiProductEntity> originProductEntities = udiProductService.findByUuids(udiRelevanceEntity.getUuid());
if (CollUtil.isNotEmpty(originProductEntities) && CollUtil.isNotEmpty(udiInfoEntities)) {
UdiProductEntity originProductEntity = originProductEntities.get(0);
for (UdiProductEntity udiProductEntity : udiInfoEntities) {
if (StrUtil.isEmpty(udiProductEntity.getSptm())) {
udiProductEntity.setSptm(originProductEntity.getSptm());
}
if (StrUtil.isEmpty(udiProductEntity.getYbbm())) {
udiProductEntity.setYbbm(originProductEntity.getYbbm());
}
if (StrUtil.isEmpty(udiProductEntity.getMeasname())) {
udiProductEntity.setMeasname(originProductEntity.getMeasname());
}
if (StrUtil.isEmpty(udiProductEntity.getManufactory())) {
udiProductEntity.setManufactory(originProductEntity.getManufactory());
}
if (StrUtil.isEmpty(udiProductEntity.getPrice())) {
udiProductEntity.setPrice(originProductEntity.getPrice());
}
if (StrUtil.isEmpty(udiProductEntity.getSpmc())) {
udiProductEntity.setSpmc(originProductEntity.getSpmc());
}
if (StrUtil.isEmpty(udiProductEntity.getCpms())) {
udiProductEntity.setCpms(originProductEntity.getCpms());
}
if (StrUtil.isEmpty(udiProductEntity.getBasicPrductRemak1())) {
udiProductEntity.setBasicPrductRemak1(originProductEntity.getBasicPrductRemak1());
}
if (StrUtil.isEmpty(udiProductEntity.getBasicPrductRemak2())) {
udiProductEntity.setBasicPrductRemak2(originProductEntity.getBasicPrductRemak2());
}
if (StrUtil.isEmpty(udiProductEntity.getBasicPrductRemak3())) {
udiProductEntity.setBasicPrductRemak3(originProductEntity.getBasicPrductRemak3());
}
if (StrUtil.isEmpty(udiProductEntity.getBasicPrductRemak4())) {
udiProductEntity.setBasicPrductRemak4(originProductEntity.getBasicPrductRemak4());
}
if (StrUtil.isEmpty(udiProductEntity.getBasicPrductRemak5())) {
udiProductEntity.setBasicPrductRemak5(originProductEntity.getBasicPrductRemak5());
}
if (StrUtil.isEmpty(udiProductEntity.getBasicPrductRemak6())) {
udiProductEntity.setBasicPrductRemak6(originProductEntity.getBasicPrductRemak6());
}
if (StrUtil.isEmpty(udiProductEntity.getBasicPrductRemak7())) {
udiProductEntity.setBasicPrductRemak7(originProductEntity.getBasicPrductRemak7());
}
if (StrUtil.isEmpty(udiProductEntity.getBasicPrductRemak8())) {
udiProductEntity.setBasicPrductRemak8(originProductEntity.getBasicPrductRemak8());
}
}
}
2 years ago
udiProductService.deleteByUuid(udiRelevanceEntity.getUuid());
udiRelevanceEntity.setUuid(udiInfoEntities.get(0).getUuid());
udiRelevanceEntity.setUpdateTime(new Date());
udiRelevanceEntity.setModifyTime(new Date());
udiRelevanceService.updateUdiRelevance(udiRelevanceEntity);
insertUdiInfos(udiInfoEntities);
}
public UdiRelevanceEntity setThird(UdiCombineRequest udiCombineRequest, UdiRelevanceEntity udiRelevanceEntity) {
FilterBasicThirdSysRequest request = new FilterBasicThirdSysRequest();
if ("thirdId".equals(udiCombineRequest.getThirdSys())) {
udiRelevanceEntity.setThirdId(udiCombineRequest.getThirdId());
request.setThirdId("thirdId");
} else if ("thirdId1".equals(udiCombineRequest.getThirdSys())) {
udiRelevanceEntity.setThirdId1(udiCombineRequest.getThirdId());
request.setThirdId("thirdId1");
} else if ("thirdId2".equals(udiCombineRequest.getThirdSys())) {
udiRelevanceEntity.setThirdId2(udiCombineRequest.getThirdId());
request.setThirdId("thirdId2");
} else if ("thirdId3".equals(udiCombineRequest.getThirdSys())) {
udiRelevanceEntity.setThirdId3(udiCombineRequest.getThirdId());
request.setThirdId("thirdId3");
} else if ("thirdId4".equals(udiCombineRequest.getThirdSys())) {
udiRelevanceEntity.setThirdId4(udiCombineRequest.getThirdId());
request.setThirdId("thirdId4");
}
ThrSystemEntity thrSystemEntity = thrSystemService.selectMainThrSys1(request);
String mainSys = thrSystemEntity.getThirdId();
if (mainSys.equals("thirdId")) {
udiRelevanceEntity.setMainId(udiRelevanceEntity.getThirdId());
} else if (mainSys.equals("thirdId1")) {
udiRelevanceEntity.setMainId(udiRelevanceEntity.getThirdId1());
} else if (mainSys.equals("thirdId2")) {
udiRelevanceEntity.setMainId(udiRelevanceEntity.getThirdId2());
} else if (mainSys.equals("thirdId3")) {
udiRelevanceEntity.setMainId(udiRelevanceEntity.getThirdId3());
} else if (mainSys.equals("thirdId4")) {
udiRelevanceEntity.setMainId(udiRelevanceEntity.getThirdId4());
}
return udiRelevanceEntity;
}
public void insertUdiInfos(List<UdiProductEntity> udiInfoEntities) {
if (CollUtil.isNotEmpty(udiInfoEntities)) {
UdiProductEntity udiProductEntity = udiProductService.findByUuid(udiInfoEntities.get(0).getUuid());
if (udiProductEntity == null) {
udiProductService.insertUdiInfos(UdiInfoUtil.initUdiInfoEntitys(udiInfoEntities));
}
}
}
}