123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399 |
- package com.steerinfo.dil.service.impl;
- import com.steerinfo.dil.mapper.*;
- import com.steerinfo.dil.model.*;
- import com.steerinfo.dil.service.IAmsSaleOrderService;
- import com.steerinfo.dil.util.DataChange;
- import com.steerinfo.dil.util.MyException;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.math.BigDecimal;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- 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;
- @Autowired
- AmsSaleTrucknoMaterialMapper amsSaleTrucknoMaterialMapper;
- @Autowired
- AmsSaleOrderCarrierMapper amsSaleOrderCarrierMapper;
- @Autowired
- OmstruckOrderMapper omstruckOrderMapper;
- /**
- * 查询销售订单
- * @param saleOrderId
- * @return
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public Map<String, Object> getSaleOrder(BigDecimal saleOrderId) {
- List<Map<String,Object>> entries = amsSaleOrderMapper.getMaterialMessages(saleOrderId);
- Map<String,Object> head = amsSaleOrderMapper.getSaleOrderMessage(saleOrderId);
- // 单价
- BigDecimal taxPrice = (BigDecimal) head.get("unitPrice");
- // 税率
- String taxRate = (String) head.get("tax");
- // 收款客户
- String customer = (String) head.get("customer");
- for (Map<String, Object> entry : entries) {
- BigDecimal stEntryId = (BigDecimal) entry.get("stEntryId");
- BigDecimal isPoundSale = (BigDecimal) entry.get("isPoundSale");
- BigDecimal forChangdu = (BigDecimal) entry.get("forChangdu");
- BigDecimal assistQty = (BigDecimal) entry.get("materialNumber");
- entry.put("assistQty",assistQty.toString());
- entry.remove("materialNumber");
- entry.put("taxPrice",taxPrice.toString());
- entry.put("taxRate",taxRate);
- entry.put("customer",customer);
- entry.replace("stEntryId",stEntryId.toString());
- entry.put("isTheory",isPoundSale.toString());
- entry.replace("forChangdu", forChangdu == null ? "" : forChangdu.toString());
- }
- Map<String,Object> input = new HashMap<>();
- head.remove("unitPrice");
- head.remove("tax");
- head.remove("customer");
- head.put("isFillCarNum","1");
- head.put("isCp","0");
- input.put("head",head);
- input.put("entries",entries);
- return input;
- }
- /**
- * 修改销售订单
- * @param mapVal
- * @return
- */
- @Transactional
- @Override
- public int operationSaleOrder(Map<String, Object> mapVal) {
- int result = 0;
- // 审批状态
- String orderStatus = (String) mapVal.get("orderStatus");
- // 得到销售订单号
- String saleNumber = (String) mapVal.get("saleNumber");
- Map<String,Object> map = new HashMap<>();
- map.put("saleNumber",saleNumber);
- // 判断是删除还是非删除
- String closeStatus = (String) mapVal.get("closeStatus");
- List<AmsSaleOrder> amsSaleOrders = amsSaleOrderMapper.selectByParameters(map);
- // 关闭分录
- Object closeEntryId = mapVal.get("closeEntryId");
- // 关闭原因
- Object reason = mapVal.get("reason");
- // 是否整单
- Object wholeOrder = mapVal.get("wholeOrder");
- // 关闭副产品整个订单
- if (closeStatus.equals("-1") && "1".equals(wholeOrder)) {
- AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
- amsSaleOrder.setDeleted(new BigDecimal(2));
- if (reason != null) {
- amsSaleOrder.setInsertUpdateRemark(reason.toString());
- }
- result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
- List<Map<String, Object>> warehouseList = amsSaleOrderMapper.getWareHouse(amsSaleOrder.getSaleOrderId());
- if (warehouseList != null && warehouseList.size() != 0) {
- Object warehouse = warehouseList.get(0).get("warehouse");
- if (warehouse != null && "副产品库".equals(warehouse)) {
- result += amsSaleOrderMapper.closeOrderNotIn(amsSaleOrder.getSaleOrderId());
- }
- }
- }
- // 关闭单个分录订单
- if (closeStatus.equals("-1") && wholeOrder.equals("0")) {
- if (closeEntryId != null) {
- Map<String, Object> easMap = new HashMap<>();
- easMap.put("easPrimaryId", closeEntryId);
- List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(easMap);
- if (amsSaleMaterials != null && amsSaleMaterials.size() != 0) {
- AmsSaleMaterial amsSaleMaterial = amsSaleMaterials.get(0);
- amsSaleMaterial.setDeleted(new BigDecimal(0));
- result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
- }
- }
- }
- 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");
- // 得到订单日期
- String saleOrderBizDateStr = (String) mapVal.get("saleOrderBizDate");
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- 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<Map<String, Object>> mapList = (List<Map<String, Object>>) 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.setUpdateTime(new Date());
- amsSaleOrder.setInsertUsername("admin");
- amsSaleOrder.setInsertUpdateRemark("金蝶采集销售订单");
- amsSaleOrder.setUpdateUsername("admin");
- amsSaleOrder.setReceiveId(receiveId);
- amsSaleOrder.setShipperId(shipperId);
- // 订单日期
- try {
- Date saleOrderBizDate = sdf.parse(saleOrderBizDateStr);
- amsSaleOrder.setInsertTime(saleOrderBizDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- 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<String, Object> materialMap : mapList) {
- AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
- BigDecimal saleMaterialId = amsSaleMaterialMapper.getSaleMaterialId();
- amsSaleMaterial.setSaleMaterialId(saleMaterialId);
- amsSaleMaterial.setSaleOrderId(saleOrderId);
- // 仓库编码
- Object warehouseNum = materialMap.get("warehouseNum");
- // 仓库名称
- Object warehouseName = materialMap.get("warehouseName");
- // 物资理重
- Object meterWeight = materialMap.get("meterWeight");
- // 得到物资编码
- String materialCode = (String) materialMap.get("materialCode");
- if (warehouseName != null) {
- amsSaleMaterial.setSaleWarehouse(warehouseName.toString());
- //得到物资名称
- String materialName = amsSaleOrderCarrierMapper.getMaterialName(materialCode);
- // 如果是副产品仓库,则给自提订单自动匹配承运商
- if (warehouseName.equals("副产品库") && "是".equals(amsSaleOrder.getSaleOrderIsselfMention()) || "钒渣".equals(materialName) && "是".equals(amsSaleOrder.getSaleOrderIsselfMention()) ) {
- AmsSaleOrderCarrier amsSaleOrderCarrier = amsSaleOrderCarrierMapper.getAmsSaleOrderCarrier(saleOrderId);
- BigDecimal carrierId = amsSaleOrderCarrierMapper.findCarrierByConsignee(receiveUnitName);
- if (amsSaleOrderCarrier == null) {
- amsSaleOrderCarrier = new AmsSaleOrderCarrier();
- amsSaleOrderCarrier.setSaleOrderCarrierId(amsSaleOrderCarrierMapper.selectMaxId());
- amsSaleOrderCarrier.setCarrierId(amsSaleOrderCarrierMapper.selectMaxId());
- amsSaleOrderCarrier.setSaleOrderId(saleOrderId);
- amsSaleOrderCarrier.setCarrierId(carrierId);
- amsSaleOrderCarrier.setDeleted(new BigDecimal(0));
- amsSaleOrderCarrier.setInsertTime(new Date());
- amsSaleOrderCarrier.setInsertUsername("自动匹配");
- amsSaleOrderCarrier.setInsertUpdateRemark("自提订单自动匹配");
- result += amsSaleOrderCarrierMapper.insertSelective(amsSaleOrderCarrier);
- }
- else {
- amsSaleOrderCarrier.setCarrierId(carrierId);
- result += amsSaleOrderCarrierMapper.updateByPrimaryKeySelective(amsSaleOrderCarrier);
- }
- }
- }
- BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode);
- // 得到金蝶分录主键
- String easPrimaryId = (String) materialMap.get("easPrimaryId");
- // 得到物资重量
- String materialWeight = (String) materialMap.get("materialNumber");
- // 得到物资件数
- String materialNumber = (String) materialMap.get("assistQty");
- // 得到计量单位
- String materialUnit = (String) materialMap.get("materialUnit");
- amsSaleMaterial.setEasPrimaryId(easPrimaryId);
- amsSaleMaterial.setMaterialId(materialId);
- amsSaleMaterial.setInsertTime(new Date());
- amsSaleMaterial.setInsertUsername("金蝶");
- amsSaleMaterial.setMeterWeight(DataChange.dataToBigDecimal(meterWeight));
- amsSaleMaterial.setInsertUpdateRemark("采集金蝶销售订单");
- if (materialWeight != null && !"".equals(materialWeight)) {
- amsSaleMaterial.setMaterialWeight(new BigDecimal(materialWeight));
- }
- if (materialNumber != null && !"".equals(materialNumber)) {
- amsSaleMaterial.setMaterialNumber(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());
- amsSaleOrder.setShipperId(shipperId);
- amsSaleOrder.setReceiveId(receiveId);
- // 如果是财务审批后,将不可作业的运输订单改为已接收状态
- if (orderStatus.equals("4")) {
- result += amsSaleOrderMapper.updateTruckOrderStatus(amsSaleOrder.getSaleOrderId());
- }
- if (isSelfMention != null) {
- if (isSelfMention.equals("CARRY")) {
- amsSaleOrder.setSaleOrderIsselfMention("是");
- } else {
- amsSaleOrder.setSaleOrderIsselfMention("否");
- }
- }
- if (saleHistoricalOrderAmount != null && saleHistoricalOrderAmount.length() != 0) {
- amsSaleOrder.setSaleHistoricalOrderAmount(new BigDecimal(saleHistoricalOrderAmount));
- }
- amsSaleOrder.setSaleOrderStatus(new BigDecimal(orderStatus));
- for (Map<String, Object> materialMap : mapList) {
- // 得到中间表主键id
- String saleMaterialId = (String) materialMap.get("saleMaterialId");
- // 得到金蝶分录id
- String easPrimaryId = (String) materialMap.get("easPrimaryId");
- Map<String,Object> resultMap = new HashMap<>();
- resultMap.put("easPrimaryId",easPrimaryId);
- AmsSaleMaterial amsSaleMaterial;
- // 得到物资重量
- String materialWeight = (String) materialMap.get("materialNumber");
- // 得到物资件数
- String materialNumber = (String) materialMap.get("assistQty");
- // 如果有物流系统销售订单物资表主键:认定是走物流新增的销售订单(通过物流系统主键进行查询)
- if (saleMaterialId != null && (!saleMaterialId.equals("null")) && !saleMaterialId.equals("")) {
- amsSaleMaterial = amsSaleMaterialMapper.selectByPrimaryKey(new BigDecimal(saleMaterialId));
- Object meterWeight = materialMap.get("meterWeight");
- if (meterWeight != null && !"".equals(meterWeight.toString())) {
- amsSaleMaterial.setMeterWeight(DataChange.dataToBigDecimal(meterWeight));
- }
- else {
- Double weightDouble = new Double(materialNumber);
- BigDecimal liWeight = new BigDecimal( weightDouble/amsSaleMaterial.getMaterialNumber().doubleValue() * 1000);
- amsSaleMaterial.setMeterWeight(liWeight);
- }
- // 同步修改车序号物资表
- resultMap.put("materialId",saleMaterialId);
- List<AmsSaleTrucknoMaterial> amsSaleTrucknoMaterials = amsSaleTrucknoMaterialMapper.selectByParameters(resultMap);
- AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = amsSaleTrucknoMaterials.get(0);
- amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(new BigDecimal(materialNumber));
- amsSaleTrucknoMaterial.setInsertUpdateRemark("在金蝶做修改");
- amsSaleTrucknoMaterialMapper.updateByPrimaryKeySelective(amsSaleTrucknoMaterial);
- }
- // 否则认定是走金蝶新增的销售订单(通过金蝶分录id进行查询)
- else {
- List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(resultMap);
- amsSaleMaterial = amsSaleMaterials.get(0);
- amsSaleMaterial.setInsertUsername("金蝶");
- amsSaleMaterial.setInsertUpdateRemark("采集金蝶销售订单");
- }
- // 得到物资编码
- String materialCode = (String) materialMap.get("materialCode");
- // 得到计量单位
- String materialUnit = (String) materialMap.get("materialUnit");
- if (materialWeight != null && !"".equals(materialWeight)) {
- amsSaleMaterial.setMaterialWeight(new BigDecimal(materialWeight));
- }
- if (materialNumber != null && !
- "".equals(materialNumber)) {
- amsSaleMaterial.setMaterialNumber(new BigDecimal(materialNumber));
- }
- BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode);
- amsSaleMaterial.setEasPrimaryId(easPrimaryId);
- amsSaleMaterial.setSaleOrderId(amsSaleOrder.getSaleOrderId());
- amsSaleMaterial.setMaterialId(materialId);
- amsSaleMaterial.setInsertTime(new Date());
- result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
- }
- result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
- }
- }
- return result;
- }
- /**
- * 通过运单id得到车牌号
- * @param saleOrderMaterialId
- * @return
- */
- @Override
- public Map<String,Object> findCarNumberByOrderId(BigDecimal saleOrderMaterialId) {
- Map<String, Object> head = omstruckOrderMapper.findCarNumberByOrderId(saleOrderMaterialId);
- List<Map<String,Object>> entries = omstruckOrderMapper.findEntriesByOrderId(saleOrderMaterialId);
- Map<String,Object> input = new HashMap<>();
- input.put("entries",entries);
- input.put("head",head);
- return input;
- }
- }
|