package com.glxp.api.service.inout; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.entity.basic.BasicBussinessTypeEntity; import com.glxp.api.entity.basic.UdiRlSupEntity; import com.glxp.api.entity.inout.IoCodeEnttity; import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inout.IoOrderDetailCodeEntity; import com.glxp.api.entity.inout.IoOrderEntity; import com.glxp.api.req.basic.FilterCompanyProductRelevanceRequest; import com.glxp.api.req.inout.PdaCodeEntity; import com.glxp.api.req.inout.PostOrderRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.basic.UdiRlSupService; import com.glxp.api.service.basic.IBasicBussinessTypeService; import com.glxp.api.util.DateUtil; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.OrderNoTypeBean; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; @Service public class IoAddInoutService { @Resource private IBasicBussinessTypeService basicBussinessTypeService; @Resource private IoOrderService orderService; @Resource GennerOrderUtils gennerOrderUtils; @Resource IoCodeService codeService; @Resource UdiRlSupService udiRlSupService; @Resource IoOrderDetailCodeService orderDetailCodeService; @Resource UdiRelevanceService udiRelevanceService; //手持终端上传生成扫码单据 public void creatOrderByPda(PostOrderRequest postOrderRequest) { List postOrders = postOrderRequest.getPostOrders(); if (postOrders != null && postOrders.size() > 0) { for (int i = 0; i < postOrders.size(); i++) { PostOrderRequest.PostOrder postOrder = postOrders.get(i); List pdaCodeEntities = postOrder.getCodes(); if (pdaCodeEntities != null && pdaCodeEntities.size() > 0) { //创建单据 PdaCodeEntity pdaCodeEntity = pdaCodeEntities.get(0); BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(pdaCodeEntity.getAction()); String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trim(bussinessTypeEntity.getPrefix()), "yyyyMMdd")); IoOrderEntity orderSaveRequest = new IoOrderEntity(); orderSaveRequest.setBillNo(orderNo); if (pdaCodeEntity.getActDate() != null) { orderSaveRequest.setCreateTime(DateUtil.parseDate(pdaCodeEntity.getActDate())); } orderSaveRequest.setMainAction(pdaCodeEntity.getMainAction()); orderSaveRequest.setAction(pdaCodeEntity.getAction()); orderSaveRequest.setCorpOrderId(pdaCodeEntity.getCorpOrderId()); orderSaveRequest.setFromCorp(pdaCodeEntity.getFromCorpId()); orderSaveRequest.setOutChangeEnable(postOrder.isOutChangeEnable()); orderSaveRequest.setCustomerId(postOrderRequest.getCustomerId()); orderSaveRequest.setFromInvCode(pdaCodeEntity.getFromSubInvCode()); orderSaveRequest.setStatus(ConstantStatus.ORDER_STATUS_PROCESS); orderSaveRequest.setDealStatus(ConstantStatus.ORDER_DEAL_POST); orderSaveRequest.setCreateUser(postOrderRequest.getUserId() + ""); if (postOrder.getErpOrders() != null && postOrder.getErpOrders().size() > 0) orderSaveRequest.setFromType(ConstantStatus.FROM_PDAED); else orderSaveRequest.setFromType(ConstantStatus.FROM_PDAUN); orderService.insertOrder(orderSaveRequest); //写入条码 List ioCodeEnttities = new ArrayList<>(); for (int index = 0; index < pdaCodeEntities.size(); index++) { pdaCodeEntities.get(index).setOrderId(orderNo); IoCodeEnttity codeEnttity = new IoCodeEnttity(); BeanUtils.copyProperties(pdaCodeEntities.get(index), codeEnttity); ioCodeEnttities.add(codeEnttity); } codeService.insertBatch(ioCodeEnttities); } } } } //校验条码关联供应商 public String checkExitSup(Long relId) { FilterCompanyProductRelevanceRequest filterCompanyProductRelevanceRequest = new FilterCompanyProductRelevanceRequest(); filterCompanyProductRelevanceRequest.setUdiRlIdFk(relId + ""); List companyProductRelevanceEntities = udiRlSupService.filterCompanyProductRelevance(filterCompanyProductRelevanceRequest); if (companyProductRelevanceEntities != null && companyProductRelevanceEntities.size() == 1) { UdiRlSupEntity udiRlSupEntity = companyProductRelevanceEntities.get(0); return udiRlSupEntity.getUnitFk(); } else if (companyProductRelevanceEntities != null && companyProductRelevanceEntities.size() > 1) { String unitFk = companyProductRelevanceEntities.get(0).getUnitFk(); boolean isMuti = false; for (UdiRlSupEntity udiRlSupEntity : companyProductRelevanceEntities) { if (!unitFk.equals(udiRlSupEntity.getUnitFk())) { isMuti = true; break; } } if (isMuti) return "MUTI"; //绑定多个供应商 else return unitFk; } return null; } public String checkInvExitSup(IoCodeEnttity codeEnttity) { String supId = checkNorInv(codeEnttity); if (supId == null) { return checkPreInv(codeEnttity); } return supId; } //查普通库存 todo public String checkNorInv(IoCodeEnttity codeEnttity) { // FilterInvWarehouseRequest filterInvWarehouseRequest = new FilterInvWarehouseRequest(); // filterInvWarehouseRequest.setLevel(1); // filterInvWarehouseRequest.setAdvanceType(false); // List invWarehouseEntities = invWarehouseService.filterInvWarehouse(filterInvWarehouseRequest); // List codes = new ArrayList<>(); // if (!invWarehouseEntities.isEmpty()) { // for (InvWarehouseEntity invWarehouseEntity : invWarehouseEntities) { // codes.add(invWarehouseEntity.getCode()); // } // } // FilterInvProductRequest filterInvProductDetailRequest = new FilterInvProductRequest(); // filterInvProductDetailRequest.setRelIdFk(codeEnttity.getRelId()); // filterInvProductDetailRequest.setBatchNo(codeEnttity.getBatchNo()); // filterInvProductDetailRequest.setInvCodes(codes); // List invProductEntities = invProductService.filterInvProduct(filterInvProductDetailRequest); // if (invProductEntities.size() > 0) { // String supId = invProductEntities.get(0).getSupId(); // int count = 0; // for (InvProductEntity invProductEntity : invProductEntities) { // if (!supId.equals(invProductEntity.getSupId())) { // return null; // } // count = count + (invProductEntity.getInCount() - invProductEntity.getOutCount()); // } // if (count > 0) // return supId; // } return null; } //查寄售库存 todo public String checkPreInv(IoCodeEnttity codeEnttity) { // FilterInvWarehouseRequest filterInvWarehouseRequest = new FilterInvWarehouseRequest(); // filterInvWarehouseRequest.setLevel(1); // filterInvWarehouseRequest.setAdvanceType(true); // List invWarehouseEntities = invWarehouseService.filterInvWarehouse(filterInvWarehouseRequest); // List codes = new ArrayList<>(); // if (!invWarehouseEntities.isEmpty()) { // for (InvWarehouseEntity invWarehouseEntity : invWarehouseEntities) { // codes.add(invWarehouseEntity.getCode()); // } // } // FilterInvProductRequest filterInvProductDetailRequest = new FilterInvProductRequest(); // filterInvProductDetailRequest.setRelIdFk(codeEnttity.getRelId()); // filterInvProductDetailRequest.setBatchNo(codeEnttity.getBatchNo()); // filterInvProductDetailRequest.setInvCodes(codes); // List invProductEntities = invPreProductService.filterInvProduct(filterInvProductDetailRequest); // if (invProductEntities.size() > 0) { // String supId = invProductEntities.get(0).getSupId(); // int count = 0; // for (InvProductEntity invProductEntity : invProductEntities) { // if (!supId.equals(invProductEntity.getSupId())) { // return null; // } // count = count + (invProductEntity.getInCount() - invProductEntity.getOutCount()); // } // if (count > 0) // return supId; // } return null; } //生成扫码单据详情 public void genOrderDetailCode(IoOrderEntity orderEntity, IoCodeTempEntity codeTempEntity) { List ioOrderDetailCodeEntities = orderDetailCodeService.findByOrderId(orderEntity.getBillNo()); UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectGroupById(codeTempEntity.getRelId()); if (CollUtil.isEmpty(ioOrderDetailCodeEntities)) { orderDetailCodeService.insert(buildEntity(orderEntity, codeTempEntity, udiRelevanceResponse)); } else { ioOrderDetailCodeEntities.forEach(orderDetailCodeEntity -> { if (orderDetailCodeEntity.getBindRlFk() == udiRelevanceResponse.getId() && orderDetailCodeEntity.getBatchNo().equals(codeTempEntity.getBatchNo())) { orderDetailCodeEntity.setCount(orderDetailCodeEntity.getCount() + codeTempEntity.getCount()); orderDetailCodeEntity.setReCount(orderDetailCodeEntity.getReCount() + codeTempEntity.getReCount()); orderDetailCodeService.update(orderDetailCodeEntity); } else { orderDetailCodeService.insert(buildEntity(orderEntity, codeTempEntity, udiRelevanceResponse)); } }); } } IoOrderDetailCodeEntity buildEntity(IoOrderEntity orderEntity, IoCodeTempEntity codeTempEntity, UdiRelevanceResponse udiRelevanceResponse) { IoOrderDetailCodeEntity ioOrderDetailCodeEntity = new IoOrderDetailCodeEntity(); ioOrderDetailCodeEntity.setOrderIdFk(orderEntity.getBillNo()); ioOrderDetailCodeEntity.setBindRlFk(udiRelevanceResponse.getId()); ioOrderDetailCodeEntity.setUuidFk(udiRelevanceResponse.getUuid()); ioOrderDetailCodeEntity.setBatchNo(codeTempEntity.getBatchNo()); ioOrderDetailCodeEntity.setNameCode(codeTempEntity.getNameCode()); ioOrderDetailCodeEntity.setProductDate(codeTempEntity.getProduceDate()); ioOrderDetailCodeEntity.setExpireDate(codeTempEntity.getExpireDate()); ioOrderDetailCodeEntity.setCoName(udiRelevanceResponse.getCpmctymc()); ioOrderDetailCodeEntity.setCertCode(udiRelevanceResponse.getZczbhhzbapzbh()); ioOrderDetailCodeEntity.setYlqxzcrbarmc(udiRelevanceResponse.getYlqxzcrbarmc()); ioOrderDetailCodeEntity.setManufacturer(udiRelevanceResponse.getManufactory()); ioOrderDetailCodeEntity.setMeasname(udiRelevanceResponse.getMeasname()); ioOrderDetailCodeEntity.setSpec(udiRelevanceResponse.getGgxh()); ioOrderDetailCodeEntity.setPrice(udiRelevanceResponse.getPrice()); ioOrderDetailCodeEntity.setCount(codeTempEntity.getCount()); ioOrderDetailCodeEntity.setReCount(codeTempEntity.getReCount()); return ioOrderDetailCodeEntity; } }