package com.steerinfo.dil.service.impl; import com.steerinfo.dil.mapper.AmsSaleMaterialMapper; import com.steerinfo.dil.mapper.AmsSaleOrderMapper; import com.steerinfo.dil.mapper.RmsConsigneeMapper; import com.steerinfo.dil.model.AmsSaleMaterial; import com.steerinfo.dil.model.AmsSaleOrder; import com.steerinfo.dil.model.RmsConsignee; import com.steerinfo.dil.service.IAmsSaleOrderService; import com.steerinfo.dil.util.DataChange; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * AmsSaleOrder服务实现: * @author generator * @version 1.0-SNAPSHORT 2021-10-26 07:26 * 类描述 * 修订历史: * 日期:2021-10-26 * 作者:generator * 参考: * 描述:AmsSaleOrder服务实现 * @see null * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved. */ @Service(value = "amsSaleOrderService") public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService { @Autowired private AmsSaleOrderMapper amsSaleOrderMapper; @Autowired AmsSaleMaterialMapper amsSaleMaterialMapper; @Autowired RmsConsigneeMapper rmsConsigneeMapper; /** * 查询销售订单 * @param saleOrderId * @return */ @Override public Map getSaleOrder(BigDecimal saleOrderId) { List> entries = amsSaleOrderMapper.getMaterialMessages(saleOrderId); Map head = amsSaleOrderMapper.getSaleOrderMessage(saleOrderId); for (Map entry : entries) { BigDecimal qty = null; BigDecimal materialNumber = (BigDecimal) entry.get("materialNumber"); BigDecimal materialWeight = (BigDecimal) entry.get("materialWeight"); if (materialNumber != null && materialNumber.toString().length() != 0) { qty = materialNumber; } if (materialWeight != null && materialWeight.toString().length() != 0) { qty = materialWeight; } entry.put("qty",qty); entry.remove("materialNumber"); entry.remove("materialWeight"); } Map input = new HashMap<>(); input.put("head",head); input.put("entries",entries); return input; } /** * 修改销售订单 * @param mapVal * @return */ @Transactional @Override public int operationSaleOrder(Map mapVal) { int result = 0; // 审批状态 String orderStatus = (String) mapVal.get("orderStatus"); // 得到销售订单号 String saleNumber = (String) mapVal.get("saleNumber"); Map map = new HashMap<>(); map.put("saleNumber",saleNumber); // 判断是删除还是非删除 String closeStatus = (String) mapVal.get("closeStatus"); List amsSaleOrders = amsSaleOrderMapper.selectByParameters(map); if (closeStatus.equals("0")) { AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0); amsSaleOrder.setDeleted(new BigDecimal(1)); result = amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder); } if (orderStatus.equals("4") && closeStatus.equals("1")){ AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0); amsSaleOrder.setSaleOrderStatus(new BigDecimal(4)); amsSaleOrder.setDeleted(new BigDecimal(0)); result = amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder); } if (orderStatus.equals("2") && closeStatus.equals("1")){ // 得到账户余额 String saleAccountBalance = (String) mapVal.get("saleAccountBalance"); // 得到当前订单金额 String saleCurrentOrderAmount = (String) mapVal.get("saleCurrentOrderAmount"); // 得到历史订单金额 String saleHistoricalOrderAmount = (String) mapVal.get("saleHistoricalOrderAmount"); // 得到订单备注 String saleRemark = (String) mapVal.get("saleRemark"); // 得到是否自提 String isSelfMention = (String) mapVal.get("isSelfMention"); // 得到收货单位 String receiveUnit = (String) mapVal.get("receiveUnit"); // 得到收货单位名称 String receiveUnitName = (String) mapVal.get("receiveUnitName"); BigDecimal receiveId = amsSaleOrderMapper.getReceiveId(receiveUnit); // 如果不存则自己增收获单位 if (receiveId == null) { RmsConsignee rmsConsignee = new RmsConsignee(); BigDecimal consigneeId = rmsConsigneeMapper.getConsigneeId(); rmsConsignee.setConsigneeId(consigneeId); rmsConsignee.setConsigneeCode(receiveUnit); rmsConsignee.setConsigneeCompanyName(receiveUnitName); rmsConsignee.setDeleted(new BigDecimal(0)); rmsConsignee.setInsertTime(new Date()); rmsConsignee.setInsertUsername("销售订单"); rmsConsignee.setInsertUpdateRemark("通过销售订单自增"); rmsConsigneeMapper.insertSelective(rmsConsignee); } // 得到发货单位 String shipperUnit = (String) mapVal.get("shipperUnit"); BigDecimal shipperId = amsSaleOrderMapper.getShipperId(shipperUnit); // 得到收款客户 String saleOrderReceiveCustomer = (String) mapVal.get("receiveCustomer"); // 得到物资信息 List> mapList = (List>) mapVal.get("mapList"); // 如果不存在则自己新增(使用金蝶销售订单号) if (amsSaleOrders.size() == 0) { AmsSaleOrder amsSaleOrder = new AmsSaleOrder(); BigDecimal saleOrderId = amsSaleOrderMapper.getSaleOrderId(); amsSaleOrder.setSaleOrderId(saleOrderId); amsSaleOrder.setSaleNumber(saleNumber); amsSaleOrder.setDeleted(new BigDecimal(0)); amsSaleOrder.setInsertTime(new Date()); amsSaleOrder.setUpdateTime(new Date()); amsSaleOrder.setInsertUsername("admin"); amsSaleOrder.setInsertUpdateRemark("金蝶采集销售订单"); amsSaleOrder.setUpdateUsername("admin"); amsSaleOrder.setReceiveId(receiveId); amsSaleOrder.setShipperId(shipperId); if (shipperUnit.equals("四川达兴能源有限责任公司") && receiveUnitName.equals("四川省达州钢铁集团有限责任公司")) { amsSaleOrder.setCloseStatus(new BigDecimal(0)); } if (isSelfMention != null) { if (isSelfMention.equals("CARRY")) { amsSaleOrder.setSaleOrderIsselfMention("是"); } else { amsSaleOrder.setSaleOrderIsselfMention("否"); } } amsSaleOrder.setSaleOrderTax("13%"); amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000)); amsSaleOrder.setSaleRemark(saleRemark); amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer); amsSaleOrder.setSaleAccountBalance(new BigDecimal(saleAccountBalance)); amsSaleOrder.setSaleCurrentOrderAmount(new BigDecimal(saleCurrentOrderAmount)); if (saleHistoricalOrderAmount != null && saleHistoricalOrderAmount.length() != 0) { amsSaleOrder.setSaleHistoricalOrderAmount(new BigDecimal(saleHistoricalOrderAmount)); } amsSaleOrder.setSaleOrderStatus(new BigDecimal(2)); // 遍历物资分录,新增销售订单与物资中间表 for (Map materialMap : mapList) { AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial(); BigDecimal saleMaterialId = amsSaleMaterialMapper.getSaleMaterialId(); amsSaleMaterial.setSaleMaterialId(saleMaterialId); amsSaleMaterial.setSaleOrderId(saleOrderId); // 得到物资编码 String materialCode = (String) materialMap.get("materialCode"); BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode); // 得到金蝶分录主键 String easPrimaryId = (String) materialMap.get("easPrimaryId"); // 得到物资数量 String materialNumber = (String) materialMap.get("materialNumber"); // 得到计量单位 String materialUnit = (String) materialMap.get("materialUnit"); amsSaleMaterial.setEasPrimaryId(easPrimaryId); amsSaleMaterial.setMaterialId(materialId); amsSaleMaterial.setInsertTime(new Date()); amsSaleMaterial.setInsertUsername("金蝶"); amsSaleMaterial.setInsertUpdateRemark("采集金蝶销售订单"); if (materialUnit.equals("件")) { amsSaleMaterial.setMaterialNumber(new BigDecimal(materialNumber)); } else { amsSaleMaterial.setMaterialWeight(new BigDecimal(materialNumber)); } result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial); } result += amsSaleOrderMapper.insertSelective(amsSaleOrder); } else { AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0); amsSaleOrder.setSaleNumber(saleNumber); amsSaleOrder.setSaleAccountBalance(new BigDecimal(saleAccountBalance)); amsSaleOrder.setSaleCurrentOrderAmount(new BigDecimal(saleCurrentOrderAmount)); amsSaleOrder.setSaleRemark(saleRemark); amsSaleOrder.setDeleted(new BigDecimal(0)); amsSaleOrder.setUpdateTime(new Date()); if (saleHistoricalOrderAmount != null && saleHistoricalOrderAmount.length() != 0) { amsSaleOrder.setSaleHistoricalOrderAmount(new BigDecimal(saleHistoricalOrderAmount)); } amsSaleOrder.setSaleOrderStatus(new BigDecimal(orderStatus)); for (Map materialMap : mapList) { // 得到中间表主键id String saleMaterialId = (String) materialMap.get("saleMaterialId"); // 得到金蝶分录id String easPrimaryId = (String) materialMap.get("easPrimaryId"); Map resultMap = new HashMap<>(); resultMap.put("easPrimaryId",easPrimaryId); AmsSaleMaterial amsSaleMaterial; // 如果有物流系统销售订单物资表主键:认定是走物流新增的销售订单(通过物流系统主键进行查询) if (saleMaterialId != null && (!saleMaterialId.equals("null")) && !saleMaterialId.equals("")) { amsSaleMaterial = amsSaleMaterialMapper.selectByPrimaryKey(new BigDecimal(saleMaterialId)); } // 否则认定是走金蝶新增的销售订单(通过金蝶分录id进行查询) else { List amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(resultMap); amsSaleMaterial = amsSaleMaterials.get(0); } // 得到物资编码 String materialCode = (String) materialMap.get("materialCode"); BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode); // 得到物资数量 String materialNumber = (String) materialMap.get("materialNumber"); // 得到计量单位 String materialUnit = (String) materialMap.get("materialUnit"); amsSaleMaterial.setEasPrimaryId(easPrimaryId); amsSaleMaterial.setSaleOrderId(amsSaleOrder.getSaleOrderId()); amsSaleMaterial.setMaterialId(materialId); amsSaleMaterial.setInsertTime(new Date()); amsSaleMaterial.setInsertUsername("金蝶"); amsSaleMaterial.setInsertUpdateRemark("采集金蝶销售订单"); if (materialUnit.equals("件")) { amsSaleMaterial.setMaterialNumber(new BigDecimal(materialNumber)); } else { amsSaleMaterial.setMaterialWeight(new BigDecimal(materialNumber)); } result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial); } result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder); } } return result; } }