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 ioOrderDetailCodeEntityList = ioUploadOrderRespons.getIoOrderDetailCodeEntityList(); List ioCodeEntityList = ioUploadOrderRespons.getIoCodeEntityList(); IoOrderEntity ioOrderEntity = ioUploadOrderRespons.getIoOrderEntity(); PlatformLinkResponse platformLinkRespons = ioUploadOrderRespons.getPlatformLinkRespons(); List ioOrderDetailBizEntityList = ioUploadOrderRespons.getIoOrderDetailBizEntityList(); List ioOrderDetailResultEntityList = ioUploadOrderRespons.getIoOrderDetailResultEntityList(); List ioOrderInvoiceEntityList = ioUploadOrderRespons.getIoOrderInvoiceEntityList(); //用来存储耗材字典结果集避免重复查询数据库 Map 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 ioCodeTempEntities = new ArrayList<>(); for (IoCodeEntity ioCodeEntity : ioCodeEntityList) { IoCodeTempEntity ioCodeTempEntity1 = new IoCodeTempEntity(); //查询物资信息 filterCompanyProductRelevanceRequest.setCustomerId(Long.valueOf(platformLinkRespons.getCustomerId())); filterCompanyProductRelevanceRequest.setNameCode(ioCodeEntity.getNameCode()); List 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 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 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 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 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; } }