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.
292 lines
17 KiB
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;
|
|
}
|
|
|
|
}
|