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/service/inout/IoOrderUtilsService.java

292 lines
17 KiB
Java

package com.glxp.api.service.inout;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.net.URLDecoder;
import cn.hutool.core.util.IdUtil;
import com.glxp.api.constant.Constant;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.dao.auth.AuthAdminDao;
import com.glxp.api.dao.basic.UdiRlSupDao;
import com.glxp.api.dao.inout.*;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.inout.*;
import com.glxp.api.req.basic.FilterCompanyProductRelevanceRequest;
import com.glxp.api.req.inout.ioOrderUploadRequest;
import com.glxp.api.res.inout.PlatformLinkResponse;
import com.glxp.api.res.inout.ioUploadOrderResponse;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.OrderNoTypeBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
import java.util.*;
@Service
public class IoOrderUtilsService {
@Resource
AuthAdminDao authAdminDao;
@Resource
private GennerOrderUtils gennerOrderUtils;
@Resource
private UdiRlSupDao udiRlSupDao;
@Resource
private IoOrderService ioOrderService;
@Resource
private IoOrderDetailCodeDao ioOrderDetailCodeDao;
@Resource
private IoOrderDetailBizDao ioOrderDetailBizDao;
@Resource
private IoCodeTempDao ioCodeTempDao;
@Resource
private IoOrderDetailResultDao ioOrderDetailResultDao;
@Resource
private IoOrderInvoiceMapper ioOrderInvoiceMapper;
@Value("${file_path}")
private String filePath;
public String getIoder(ioUploadOrderResponse ioUploadOrderRespons) {
List<IoOrderDetailCodeEntity> ioOrderDetailCodeEntityList = ioUploadOrderRespons.getIoOrderDetailCodeEntityList();
List<IoCodeEntity> ioCodeEntityList = ioUploadOrderRespons.getIoCodeEntityList();
IoOrderEntity ioOrderEntity = ioUploadOrderRespons.getIoOrderEntity();
PlatformLinkResponse platformLinkRespons = ioUploadOrderRespons.getPlatformLinkRespons();
List<IoOrderDetailBizEntity> ioOrderDetailBizEntityList = ioUploadOrderRespons.getIoOrderDetailBizEntityList();
List<IoOrderDetailResultEntity> ioOrderDetailResultEntityList = ioUploadOrderRespons.getIoOrderDetailResultEntityList();
List<IoOrderInvoiceEntity> ioOrderInvoiceEntityList = ioUploadOrderRespons.getIoOrderInvoiceEntityList();
//用来存储耗材字典结果集避免重复查询数据库
Map<Long, ioOrderUploadRequest> map = new HashMap<>();
Boolean checkUdi = false; //判断是不是有错误
//根据供应商id查询用户id
AuthAdmin authAdmins = authAdminDao.findByCustomerld(platformLinkRespons.getCustomerId()).get(0);
//单据表生成
String billNO = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd"));
//扫码明细表生成
FilterCompanyProductRelevanceRequest filterCompanyProductRelevanceRequest = new FilterCompanyProductRelevanceRequest();
List<IoCodeTempEntity> ioCodeTempEntities = new ArrayList<>();
for (IoCodeEntity ioCodeEntity : ioCodeEntityList) {
IoCodeTempEntity ioCodeTempEntity1 = new IoCodeTempEntity();
//查询物资信息
filterCompanyProductRelevanceRequest.setCustomerId(Long.valueOf(platformLinkRespons.getCustomerId()));
filterCompanyProductRelevanceRequest.setNameCode(ioCodeEntity.getNameCode());
List<ioOrderUploadRequest> udiRlSupEntityList = udiRlSupDao.filterCompanyProduct(filterCompanyProductRelevanceRequest);
if (CollectionUtil.isNotEmpty(udiRlSupEntityList) && udiRlSupEntityList.size() > 1) {
ioCodeTempEntity1.setRelId(null);
checkUdi = true;
} else {
if (CollectionUtil.isNotEmpty(udiRlSupEntityList)) {
ioCodeTempEntity1.setRelId(udiRlSupEntityList.get(0).getId());
map.put(ioCodeEntity.getRelId(), udiRlSupEntityList.get(0));
}
ioCodeTempEntity1.setOrderId(billNO);
String code = URLDecoder.decode(ioCodeEntity.getCode(), StandardCharsets.UTF_8);
ioCodeTempEntity1.setCode(code);
ioCodeTempEntity1.setMainAction(ioCodeEntity.getMainAction());
ioCodeTempEntity1.setAction(platformLinkRespons.getTargetAction());
ioCodeTempEntity1.setNameCode(ioCodeEntity.getNameCode());
ioCodeTempEntity1.setBatchNo(ioCodeEntity.getBatchNo());
ioCodeTempEntity1.setProduceDate(ioCodeEntity.getProduceDate());
ioCodeTempEntity1.setExpireDate(ioCodeEntity.getExpireDate());
ioCodeTempEntity1.setSerialNo(ioCodeEntity.getSerialNo());
ioCodeTempEntity1.setPackageLevel(ioCodeEntity.getPackageLevel());
ioCodeTempEntity1.setSupId(platformLinkRespons.getCustomerId());
ioCodeTempEntity1.setCount(ioCodeEntity.getCount());
ioCodeTempEntity1.setReCount(ioCodeEntity.getReCount());
ioCodeTempEntity1.setDeptCode(platformLinkRespons.getInvCode());
ioCodeTempEntity1.setInvCode(platformLinkRespons.getInvSubCode());
ioCodeTempEntity1.setUpdateTime(new Date());
ioCodeTempEntity1.setCreateTime(new Date());
ioCodeTempEntities.add(ioCodeTempEntity1);
}
}
//扫码单据生成
IoOrderDetailCodeEntity ioOrderDetailCodeEntity1 = new IoOrderDetailCodeEntity();
List<IoOrderDetailCodeEntity> ioOrderDetailCodeEntities = new ArrayList<>();
if (CollectionUtil.isNotEmpty(ioOrderDetailCodeEntityList)) {
for (IoOrderDetailCodeEntity ioOrderDetailCodeEntity : ioOrderDetailCodeEntityList) {
ioOrderDetailCodeEntity1.setOrderIdFk(billNO);
ioOrderUploadRequest udiRlSupEntity = map.get(ioOrderDetailCodeEntity.getBindRlFk());
if (udiRlSupEntity != null) {
ioOrderDetailCodeEntity1.setBindRlFk(udiRlSupEntity.getId());
ioOrderDetailCodeEntity1.setUuidFk(udiRlSupEntity.getUdiRlIdFk() + "");
} else {
ioOrderDetailCodeEntity1.setBindRlFk(null);
ioOrderDetailCodeEntity1.setUuidFk(null);
}
ioOrderDetailCodeEntity1.setId(IdUtil.getSnowflakeNextId());
ioOrderDetailCodeEntity1.setNameCode(ioOrderDetailCodeEntity.getNameCode());
ioOrderDetailCodeEntity1.setBatchNo(ioOrderDetailCodeEntity.getBatchNo());
ioOrderDetailCodeEntity1.setProductDate(ioOrderDetailCodeEntity.getProductDate());
ioOrderDetailCodeEntity1.setExpireDate(ioOrderDetailCodeEntity.getExpireDate());
ioOrderDetailCodeEntity1.setCoName(ioOrderDetailCodeEntity.getCoName());
ioOrderDetailCodeEntity1.setCertCode(ioOrderDetailCodeEntity.getCertCode());
ioOrderDetailCodeEntity1.setYlqxzcrbarmc(ioOrderDetailCodeEntity.getYlqxzcrbarmc());
ioOrderDetailCodeEntity1.setManufacturer(ioOrderDetailCodeEntity.getManufacturer());
ioOrderDetailCodeEntity1.setMeasname(ioOrderDetailCodeEntity.getMeasname());
ioOrderDetailCodeEntity1.setPrice(ioOrderDetailCodeEntity.getPrice());
ioOrderDetailCodeEntity1.setSpec(ioOrderDetailCodeEntity.getSpec());
ioOrderDetailCodeEntity1.setCertCode(ioOrderDetailCodeEntity.getCertCode());
ioOrderDetailCodeEntity1.setSupId(platformLinkRespons.getCustomerId());
ioOrderDetailCodeEntity1.setBindSupStatus(ioOrderDetailCodeEntity.getBindSupStatus());
ioOrderDetailCodeEntity1.setCount(ioOrderDetailCodeEntity.getCount());
ioOrderDetailCodeEntity1.setReCount(ioOrderDetailCodeEntity.getReCount());
ioOrderDetailCodeEntity1.setUpdateTime(new Date());
ioOrderDetailCodeEntities.add(ioOrderDetailCodeEntity1);
}
}
//业务单生成
List<IoOrderDetailBizEntity> ioOrderDetailBizEntities = new ArrayList<>();
if (CollectionUtil.isNotEmpty(ioOrderDetailBizEntityList)) {
for (IoOrderDetailBizEntity ioOrderDetailBizEntity : ioOrderDetailBizEntityList) {
IoOrderDetailBizEntity ioOrderDetailBizEntity1 = new IoOrderDetailBizEntity();
ioOrderDetailBizEntity1.setOrderIdFk(billNO);
ioOrderUploadRequest udiRlSupEntity = map.get(ioOrderDetailBizEntity.getBindRlFk());
if (udiRlSupEntity != null) {
ioOrderDetailBizEntity1.setBindRlFk(udiRlSupEntity.getId());
ioOrderDetailBizEntity1.setUuidFk(udiRlSupEntity.getUdiRlIdFk() + "");
} else {
ioOrderDetailBizEntity1.setBindRlFk(null);
ioOrderDetailBizEntity1.setUuidFk(null);
}
ioOrderDetailBizEntity1.setId(IdUtil.getSnowflakeNextId());
ioOrderDetailBizEntity1.setNameCode(ioOrderDetailBizEntity.getNameCode());
ioOrderDetailBizEntity1.setBatchNo(ioOrderDetailBizEntity.getBatchNo());
ioOrderDetailBizEntity1.setProductDate(ioOrderDetailBizEntity.getProductDate());
ioOrderDetailBizEntity1.setExpireDate(ioOrderDetailBizEntity.getExpireDate());
ioOrderDetailBizEntity1.setCoName(ioOrderDetailBizEntity.getCoName());
ioOrderDetailBizEntity1.setFilePath(ioOrderDetailBizEntity.getFilePath());
ioOrderDetailBizEntity1.setColdFilePath(ioOrderDetailBizEntity.getColdFilePath());
ioOrderDetailBizEntity1.setCertCode(ioOrderDetailBizEntity.getCertCode());
ioOrderDetailBizEntity1.setYlqxzcrbarmc(ioOrderDetailBizEntity.getYlqxzcrbarmc());
ioOrderDetailBizEntity1.setManufacturer(ioOrderDetailBizEntity.getManufacturer());
ioOrderDetailBizEntity1.setMeasname(ioOrderDetailBizEntity.getMeasname());
ioOrderDetailBizEntity1.setPrice(ioOrderDetailBizEntity.getPrice());
ioOrderDetailBizEntity1.setSpec(ioOrderDetailBizEntity.getSpec());
ioOrderDetailBizEntity1.setCertCode(ioOrderDetailBizEntity.getCertCode());
ioOrderDetailBizEntity1.setSupId(platformLinkRespons.getCustomerId());
ioOrderDetailBizEntity1.setBindSupStatus(ioOrderDetailBizEntity.getBindSupStatus());
ioOrderDetailBizEntity1.setCount(ioOrderDetailBizEntity.getCount());
ioOrderDetailBizEntity1.setFilePath(ioOrderDetailBizEntity.getFilePath());
ioOrderDetailBizEntity1.setCheckFileName(ioOrderDetailBizEntity.getFilePath());
ioOrderDetailBizEntity1.setColdFilePath(ioOrderDetailBizEntity.getColdFilePath());
ioOrderDetailBizEntity1.setCheckColdFileName(ioOrderDetailBizEntity.getColdFilePath());
ioOrderDetailBizEntities.add(ioOrderDetailBizEntity1);
}
}
//实际单据生成
List<IoOrderDetailResultEntity> ioOrderDetailResultEntities = new ArrayList<>();
if (ioOrderDetailResultEntityList != null && ioOrderDetailResultEntityList.size() > 0) {
for (IoOrderDetailResultEntity ioOrderDetailResultEntity : ioOrderDetailResultEntityList) {
IoOrderDetailResultEntity ioOrderDetailResultEntity1 = new IoOrderDetailResultEntity();
ioOrderDetailResultEntity1.setOrderIdFk(billNO);
ioOrderUploadRequest udiRlSupEntity = map.get(ioOrderDetailResultEntity.getBindRlFk());
if (udiRlSupEntity != null) {
ioOrderDetailResultEntity1.setBindRlFk(udiRlSupEntity.getId());
ioOrderDetailResultEntity1.setUuidFk(udiRlSupEntity.getUdiRlIdFk() + "");
} else {
ioOrderDetailResultEntity1.setBindRlFk(null);
ioOrderDetailResultEntity1.setUuidFk(null);
}
ioOrderDetailResultEntity1.setNameCode(ioOrderDetailResultEntity.getNameCode());
ioOrderDetailResultEntity1.setBatchNo(ioOrderDetailResultEntity.getBatchNo());
ioOrderDetailResultEntity1.setProductDate(ioOrderDetailResultEntity.getProductDate());
ioOrderDetailResultEntity1.setExpireDate(ioOrderDetailResultEntity.getExpireDate());
ioOrderDetailResultEntity1.setCoName(ioOrderDetailResultEntity.getCoName());
ioOrderDetailResultEntity1.setCertCode(ioOrderDetailResultEntity.getCertCode());
ioOrderDetailResultEntity1.setYlqxzcrbarmc(ioOrderDetailResultEntity.getYlqxzcrbarmc());
ioOrderDetailResultEntity1.setManufacturer(ioOrderDetailResultEntity.getManufacturer());
ioOrderDetailResultEntity1.setMeasname(ioOrderDetailResultEntity.getMeasname());
ioOrderDetailResultEntity1.setPrice(ioOrderDetailResultEntity.getPrice());
ioOrderDetailResultEntity1.setSpec(ioOrderDetailResultEntity.getSpec());
ioOrderDetailResultEntity1.setCertCode(ioOrderDetailResultEntity.getCertCode());
ioOrderDetailResultEntity1.setSupId(platformLinkRespons.getCustomerId());
ioOrderDetailResultEntity1.setBindSupStatus(ioOrderDetailResultEntity.getBindSupStatus());
ioOrderDetailResultEntity1.setCount(ioOrderDetailResultEntity.getCount());
ioOrderDetailResultEntities.add(ioOrderDetailResultEntity1);
}
}
//发票生成
List<IoOrderInvoiceEntity> ioOrderInvoiceEntities = new ArrayList<>();
if (ioOrderInvoiceEntityList != null && ioOrderInvoiceEntityList.size() > 0) {
for (IoOrderInvoiceEntity ioOrderInvoiceEntity : ioOrderInvoiceEntityList) {
IoOrderInvoiceEntity ioOrderInvoiceEntity1 = new IoOrderInvoiceEntity();
ioOrderInvoiceEntity1.setOrderIdFk(billNO);
ioOrderUploadRequest udiRlSupEntity = map.get(Long.valueOf(ioOrderInvoiceEntity.getBindRlFk()));
if (udiRlSupEntity != null) {
ioOrderInvoiceEntity1.setBindRlFk(udiRlSupEntity.getId() + "");
} else {
ioOrderInvoiceEntity1.setBindRlFk(null);
}
ioOrderInvoiceEntity1.setId(IdUtil.getSnowflakeNextId());
ioOrderInvoiceEntity1.setBatchNo(ioOrderInvoiceEntity.getBatchNo());
ioOrderInvoiceEntity1.setProductDate(ioOrderInvoiceEntity.getProductDate());
ioOrderInvoiceEntity1.setExpireDate(ioOrderInvoiceEntity.getExpireDate());
ioOrderInvoiceEntity1.setMachineNo(ioOrderInvoiceEntity.getMachineNo());
ioOrderInvoiceEntity1.setInvoiceCode(ioOrderInvoiceEntity.getInvoiceCode());
ioOrderInvoiceEntity1.setInvoiceEncode(ioOrderInvoiceEntity.getInvoiceEncode());
ioOrderInvoiceEntity1.setInvoiceDate(ioOrderInvoiceEntity.getInvoiceDate());
ioOrderInvoiceEntity1.setPrice(ioOrderInvoiceEntity.getPrice());
ioOrderInvoiceEntity1.setUpdateTime(new Date());
ioOrderInvoiceEntity1.setCreateTime(new Date());
ioOrderInvoiceEntity1.setUpdateUser(authAdmins.getId() + "");
ioOrderInvoiceEntity1.setCreateUser(authAdmins.getId() + "");
ioOrderInvoiceEntity1.setLicenseUrl(ioOrderInvoiceEntity.getLicenseUrl());
ioOrderInvoiceEntities.add(ioOrderInvoiceEntity1);
}
}
//生成单据
IoOrderEntity ioOrderEntity1 = new IoOrderEntity();
ioOrderEntity1.setBillNo(billNO);
ioOrderEntity1.setMainAction(ioOrderEntity.getMainAction());
ioOrderEntity1.setAction(platformLinkRespons.getTargetAction());
ioOrderEntity1.setFromCorp(platformLinkRespons.getCustomerId());
ioOrderEntity1.setOrderType(3);
ioOrderEntity1.setFromType(1);
if (!checkUdi) {
ioOrderEntity1.setStatus(ConstantStatus.ORDER_STATUS_TEMP_SAVE);
ioOrderEntity1.setDealStatus(1);
} else {
ioOrderEntity1.setStatus(ConstantStatus.ORDER_STATS_ERROR);
ioOrderEntity1.setDealStatus(2);
ioOrderEntity1.setRemark("产品错误!");
}
ioOrderEntity1.setCreateTime(new Date());
ioOrderEntity1.setCreateUser(authAdmins.getId() + "");
ioOrderEntity1.setUpdateUser(authAdmins.getId() + "");
ioOrderEntity1.setUpdateTime(new Date());
ioOrderEntity1.setCustomerId(platformLinkRespons.getCustomerId());
ioOrderEntity1.setDeptCode(platformLinkRespons.getInvCode());
ioOrderEntity1.setInvCode(platformLinkRespons.getInvSubCode());
//结果插入
ioOrderService.insertOrder(ioOrderEntity1);
ioOrderDetailBizDao.insertBatch(ioOrderDetailBizEntities);
ioOrderDetailCodeDao.insertBatch(ioOrderDetailCodeEntities);
ioCodeTempDao.insertBatch(ioCodeTempEntities);
ioOrderDetailResultDao.insertBatch(ioOrderDetailResultEntities);
ioOrderInvoiceMapper.insertBatch(ioOrderInvoiceEntities);
return billNO;
}
}