123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849 |
- package com.steerinfo.dil.service.impl;
- import com.alibaba.druid.support.json.JSONUtils;
- import com.alibaba.fastjson.JSON;
- import com.google.gson.JsonObject;
- 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 springfox.documentation.spring.web.json.Json;
- import javax.xml.crypto.Data;
- import java.math.BigDecimal;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * 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;
- @Autowired
- RmsMaterialMapper rmsMaterialMapper;
- @Autowired
- private TmstrainPleaseApproveResultMapper tmstrainPleaseApproveResultMapper;
- @Autowired
- RmstrainArrivalSendMapper rmstrainArrivalSendMapper;
- @Autowired
- OmstrainOrderMapper omstrainOrderMapper;
- /**
- * 查询销售订单
- * @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");
- // 是否磅重(0:磅重,1:理重)
- 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 unCloseEntryId = mapVal.get("unCloseEntryId");
- // 关闭原因
- 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 += amsSaleMaterialMapper.closeAllSaleMaterial(amsSaleOrder.getSaleOrderId());
- 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("-2") && "1".equals(wholeOrder)) {
- AmsSaleOrder amsSaleOrder = amsSaleOrders.get(0);
- amsSaleOrder.setDeleted(new BigDecimal(0));
- BigDecimal saleOrderId = amsSaleOrder.getSaleOrderId();
- if (reason != null) {
- amsSaleOrder.setInsertUpdateRemark(reason.toString());
- }
- // 反关闭销售订单下的所有分录
- result += amsSaleMaterialMapper.openAllSaleMaterial(saleOrderId);
- result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
- }
- // 反关闭单个分录订单
- if (closeStatus.equals("-2") && wholeOrder.equals("0")) {
- if (unCloseEntryId != null) {
- Map<String, Object> easMap = new HashMap<>();
- easMap.put("easPrimaryId", unCloseEntryId);
- List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(easMap);
- if (amsSaleMaterials != null && amsSaleMaterials.size() != 0) {
- AmsSaleMaterial amsSaleMaterial = amsSaleMaterials.get(0);
- result += amsSaleMaterialMapper.unCloseSaleMaterial(amsSaleMaterial.getSaleMaterialId());
- }
- }
- }
- 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);
- Integer materialCount = amsSaleMaterialMapper.getMaterialCount(materialId);
- RmsMaterial rmsMaterial = new RmsMaterial();
- rmsMaterial.setMaterialId(materialId);
- if (materialCount == null) {
- materialCount = new Integer(0);
- }
- rmsMaterial.setMaterialCount(new BigDecimal(materialCount + 1));
- rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
- // 得到金蝶分录主键
- 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);
- //根据车序号表查询销售订单表是否自提
- String isWithdrawal = amsSaleOrderMapper.getWithdrawal(saleOrderMaterialId);
- if("是".equals(isWithdrawal)){
- head.replace("forwarder","自提");
- }
- List<Map<String,Object>> entries = omstruckOrderMapper.findEntriesByOrderId(saleOrderMaterialId);
- //遍历数组 en
- Map<String,Object> input = new HashMap<>();
- input.put("entries",entries);
- input.put("head",head);
- return input;
- }
- @Override
- public Map<String, Object> findCarNumberByOrderList(List<Map<String, Object>> mapList) {
- List<Map<String,Object>> entries = new ArrayList<>();
- //遍历车序号数组,获取车序号ID
- for(Map<String,Object> map : mapList){
- BigDecimal saleOrderMaterialId = new BigDecimal((Integer) map.get("saleOrderMaterialId")) ;
- //根据车序号ID去查询车牌号、承运商以及分录ID
- List<Map<String,Object>> head = omstruckOrderMapper.finCarAndCarrierAndEntries(saleOrderMaterialId);
- entries.addAll(head);
- }
- Map<String,Object> input = new HashMap<>();
- input.put("entries",entries);
- return input;
- }
- //添加内转钢材到异地库
- //审核以后回传
- @Override
- @Transactional(rollbackFor = {Exception.class})
- public int addInwardSteelOrder(Map<String,Object> map) throws Exception {
- int result=0;
- //输出json数据。
- String json= JSON.toJSONString(map);
- System.out.println(json);
- //获取订单状态
- String orderStatus = (String) map.get("orderStatus");
- String materialNumber =(String) map.get("materialNumber");
- String easPrimaryId=null;
- //设置是否反审核状态
- String closeStatus =(String) map.get("closeStatus");
- //是否整单
- Object wholeOrder = map.get("wholeOrder");
- // 得到单据编号
- String saleNumber = (String) map.get("saleNumber");
- //获取调出组织部门
- String transferOutInventoryOrg =(String) map.get("TransferOutInventorOrg");
- //获取调入组织部门
- String transferInInventoryOrg =(String) map.get("TransferInInventorOrg");
- //获取调出部门
- String transferOutDep =(String) map.get("TransferOutDep");
- //获取调入部门
- String transferInDep =(String) map.get("TransferInDep");
- // 得到订单日期
- String saleOrderBizDateStr = (String) map.get("saleOrderBizDate");
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- //获取销售摘要
- String saleRemark = (String) map.get("saleRemark");
- SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- //设置是否为车皮
- String whetherTheCar =(String) map.get("whetherTheCar");
- //业务日期
- String businessDate =(String) map.get("businessDate");
- //获取业务类型
- String businessType =(String) map.get("businessType");
- //判断销售订单是否存在
- BigDecimal saleOrderNumber = amsSaleOrderMapper.selectAmsSaleOrderNum(saleNumber);
- //如果销售订单不存在
- if (saleOrderNumber==null){
- AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
- BigDecimal saleOrderId = amsSaleOrderMapper.getSaleOrderId();
- //新增销售订单主键
- amsSaleOrder.setSaleOrderId(saleOrderId);
- //新增单据编码
- amsSaleOrder.setSaleNumber(saleNumber);
- //根据发货单位查找id
- String shipperName="四川省达州钢铁集团有限责任公司";
- BigDecimal shipperId = amsSaleOrderMapper.getShipperId(shipperName);
- amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(shipperId));
- // 订单日期
- try {
- Date saleOrderBizDate = sdf.parse(saleOrderBizDateStr);
- amsSaleOrder.setInsertTime(saleOrderBizDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //业务日期
- try {
- Date BusinessDate = sdf.parse(businessDate);
- amsSaleOrder.setBusinessDate(BusinessDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- amsSaleOrder.setWhetherTheCar(whetherTheCar);
- amsSaleOrder.setSaleRemark(saleRemark);
- amsSaleOrder.setSaleOrderStatus(new BigDecimal(4));
- //销售订单类型:内转钢材到异地库
- amsSaleOrder.setSaleType(new BigDecimal(4));
- amsSaleOrder.setTransferInDep(transferInDep);
- amsSaleOrder.setTransferOutDep(transferOutDep);
- amsSaleOrder.setDeleted(new BigDecimal(0));
- amsSaleOrder.setCloseStatus(new BigDecimal(0));
- amsSaleOrder.setTransferInInventoryOrg(transferInInventoryOrg);
- amsSaleOrder.setTransferOutInventoryOrg(transferOutInventoryOrg);
- amsSaleOrder.setBusinessType(businessType);
- amsSaleOrder.setInsertUsername("金蝶");
- amsSaleOrder.setInsertUpdateRemark("采集金蝶库存调拨单");
- result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
- //得到物资信息
- List<Map<String, Object>> mapList = (List<Map<String, Object>>) map.get("mapList");
- for (Map<String,Object> materialMap:mapList){
- AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
- BigDecimal saleMaterialId = amsSaleMaterialMapper.getSaleMaterialId();
- amsSaleMaterial.setSaleMaterialId(saleMaterialId);
- amsSaleMaterial.setSaleOrderId(saleOrderId);
- // 辅助数量
- Object auxiliaryQuantity = materialMap.get("AuxiliaryQuantity");
- // 物资重量
- Object meterWeight = materialMap.get("meterWeight");
- Object steelMeter = materialMap.get("steelMeter");
- if (steelMeter!=null) {
- amsSaleMaterial.setSteelMeter(DataChange.dataToBigDecimal(steelMeter));
- }
- //设置调出仓库
- Object transferOutOfWarehouse = materialMap.get("TransferOutOfWarehouse");
- amsSaleMaterial.setTransferOutOfWarehouse((String) transferOutOfWarehouse);
- //设置调入仓库
- Object transferInOfWarehouse = materialMap.get("TransferInOfWarehouse");
- amsSaleMaterial.setTransferInOfWarehouse((String) transferInOfWarehouse);
- //设置调入计划日期
- String transferInPlanDate =(String) materialMap.get("TransferInPlanDate");
- try {
- Date transferInPlanDate1 = sdf.parse(transferInPlanDate);
- amsSaleMaterial.setTransferInPlanDate(transferInPlanDate1);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- // 得到金蝶分录主键
- easPrimaryId = (String) materialMap.get("easPrimaryId");
- //设置调出计划日期
- String transferOutPlanDate =(String) materialMap.get("TransferOutPlanDate");
- try {
- Date transferOutPlanDate2 = sdf.parse(transferOutPlanDate);
- amsSaleMaterial.setTransferOutPlanDate(transferOutPlanDate2);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //是否磅重交货
- Object isPoundSale = materialMap.get("isPoundSale");
- if (isPoundSale!=null){
- amsSaleMaterial.setIsPoundSale(DataChange.dataToBigDecimal(isPoundSale));
- }
- //设置是否控制数量
- Object controlQuailty = materialMap.get("ControlQuantity");
- amsSaleMaterial.setControlQuantity((String) controlQuailty);
- //设置库存类型
- Object inventoryType = materialMap.get("InventoryType");
- amsSaleMaterial.setInventoryType((String) inventoryType);
- //设置库存状态
- Object inventoryStatus = materialMap.get("InventoryStatus");
- amsSaleMaterial.setInventoryStatus((String) inventoryStatus);
- // 得到物资编码
- String materialCode = (String) materialMap.get("materialCode");
- BigDecimal materialId = amsSaleMaterialMapper.getMaterialId(materialCode);
- Integer materialCount = amsSaleMaterialMapper.getMaterialCount(materialId);
- RmsMaterial rmsMaterial = new RmsMaterial();
- rmsMaterial.setMaterialId(materialId);
- if (materialCount == null) {
- materialCount = new Integer(0);
- }
- rmsMaterial.setMaterialCount(new BigDecimal(materialCount + 1));
- rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
- // 得到物资重量
- String materialWeight = (String) materialMap.get("materialNumber");
- // 得到计量单位
- amsSaleMaterial.setEasPrimaryId(easPrimaryId);
- amsSaleMaterial.setMaterialId(materialId);
- //设置辅助数量
- amsSaleMaterial.setMaterialNumber(DataChange.dataToBigDecimal(auxiliaryQuantity));
- amsSaleMaterial.setInsertTime(new Date());
- amsSaleMaterial.setInsertUsername("金蝶");
- amsSaleMaterial.setMeterWeight(DataChange.dataToBigDecimal(meterWeight));
- amsSaleMaterial.setInsertUpdateRemark("采集金蝶库存调拨单");
- if (materialWeight != null && !"".equals(materialWeight)) {
- amsSaleMaterial.setMaterialWeight(new BigDecimal(materialWeight));
- }
- result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
- //设置发站
- Object toTheStation = map.get("toTheStation");
- TmstrainPleaseApproveResult tmstrainPleaseApproveResult=new TmstrainPleaseApproveResult();
- BigDecimal maxId = tmstrainPleaseApproveResultMapper.getMaxId();
- tmstrainPleaseApproveResult.setResultId(maxId);
- tmstrainPleaseApproveResult.setResultPleasePlanNo(DataChange.generateEightDigitsNumber("WLQCH",maxId.intValue()));
- tmstrainPleaseApproveResult.setRailPlanId(saleMaterialId);
- //查找到站是否存在到站表
- BigDecimal sendStation = rmstrainArrivalSendMapper.getSendStation((String) toTheStation);
- //到站不存在
- if (sendStation==null){
- //新增到站
- BigDecimal toStationMaxId = rmstrainArrivalSendMapper.getMaxId();
- RmstrainArrivalSend rmstrainArrivalSend=new RmstrainArrivalSend();
- rmstrainArrivalSend.setArrivalId(toStationMaxId);
- rmstrainArrivalSend.setArrivalName((String) toTheStation);
- rmstrainArrivalSend.setInsertTime(new Date());
- rmstrainArrivalSend.setInsertUsername("金蝶");
- rmstrainArrivalSend.setInsertUpdateRemark("金蝶回传数据");
- result += rmstrainArrivalSendMapper.insertSelective(rmstrainArrivalSend);
- tmstrainPleaseApproveResult.setToTheStationId(toStationMaxId);
- }else {
- //到站存在
- tmstrainPleaseApproveResult.setToTheStationId(sendStation);
- }
- tmstrainPleaseApproveResult.setResultType(new BigDecimal(4));
- tmstrainPleaseApproveResult.setInsertTime(new Date());
- tmstrainPleaseApproveResult.setInsertUpdateRemark("金蝶回传");
- result += tmstrainPleaseApproveResultMapper.insertSelective(tmstrainPleaseApproveResult);
- }
- }else {
- // throw new Exception("暂不支持修改库存调拨单");
- //此处判断主要是针对销售订单已经存在
- AmsSaleOrder amsSaleOrder=new AmsSaleOrder();
- if (orderStatus.equals("2")){
- amsSaleOrder.setSaleOrderId(saleOrderNumber);
- amsSaleOrder.setCloseStatus(new BigDecimal(1));
- amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
- }
- //此处判断订单状态为反审核
- if (closeStatus.equals("5")) {
- amsSaleOrder.setSaleOrderId(saleOrderNumber);
- amsSaleOrder.setDeleted(new BigDecimal(1));
- result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
- }
- // 关闭单个分录订单
- if (closeStatus.equals("-1") && wholeOrder.equals("0")) {
- Object closeEntryId = map.get("closeEntryId");
- 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("-2") && "1".equals(wholeOrder)) {
- amsSaleOrder.setDeleted(new BigDecimal(0));
- Object reason = map.get("reason");
- BigDecimal saleOrderId = amsSaleOrder.getSaleOrderId();
- if (reason != null) {
- amsSaleOrder.setInsertUpdateRemark(reason.toString());
- }
- // 反关闭销售订单下的所有分录
- result += amsSaleMaterialMapper.openAllSaleMaterial(saleOrderId);
- result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
- }
- // 反关闭单个分录订单
- if (closeStatus.equals("-2") && wholeOrder.equals("0")) {
- Object unCloseEntryId = map.get("unCloseEntryId");
- if (unCloseEntryId != null) {
- Map<String, Object> easMap = new HashMap<>();
- easMap.put("easPrimaryId", unCloseEntryId);
- List<AmsSaleMaterial> amsSaleMaterials = amsSaleMaterialMapper.selectByParameters(easMap);
- if (amsSaleMaterials != null && amsSaleMaterials.size() != 0) {
- AmsSaleMaterial amsSaleMaterial = amsSaleMaterials.get(0);
- result += amsSaleMaterialMapper.unCloseSaleMaterial(amsSaleMaterial.getSaleMaterialId());
- }
- }
- }
- //编辑销售订单主键
- amsSaleOrder.setSaleOrderId(saleOrderNumber);
- //新增单据编码
- amsSaleOrder.setSaleNumber(saleNumber);
- // 订单日期
- try {
- Date saleOrderBizDate = sdf.parse(saleOrderBizDateStr);
- amsSaleOrder.setInsertTime(saleOrderBizDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- //业务日期
- try {
- Date BusinessDate = sdf2.parse(businessDate);
- amsSaleOrder.setBusinessDate(BusinessDate);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- amsSaleOrder.setWhetherTheCar(whetherTheCar);
- amsSaleOrder.setSaleRemark(saleRemark);
- amsSaleOrder.setSaleOrderStatus(new BigDecimal(2));
- //销售订单类型:内转钢材到异地库
- amsSaleOrder.setSaleType(new BigDecimal(4));
- amsSaleOrder.setTransferInDep(transferInDep);
- amsSaleOrder.setTransferOutDep(transferOutDep);
- amsSaleOrder.setDeleted(new BigDecimal(0));
- amsSaleOrder.setTransferInInventoryOrg(transferInInventoryOrg);
- amsSaleOrder.setTransferOutInventoryOrg(transferOutInventoryOrg);
- amsSaleOrder.setBusinessType(businessType);
- result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
- Object toTheStation = map.get("toTheStation");
- //根据销售订单id查找是否存在该请车实绩
- BigDecimal resultId = tmstrainPleaseApproveResultMapper.selectResultId(saleOrderNumber);
- TmstrainPleaseApproveResult tmstrainPleaseApproveResult=new TmstrainPleaseApproveResult();
- tmstrainPleaseApproveResult.setResultId(resultId);
- tmstrainPleaseApproveResult.setRailPlanId(saleOrderNumber);
- //查找到站是否存在到站表
- BigDecimal sendStation = rmstrainArrivalSendMapper.getSendStation((String) toTheStation);
- //到站不存在
- if (sendStation==null){
- //新增到站
- BigDecimal toStationMaxId = rmstrainArrivalSendMapper.getMaxId();
- RmstrainArrivalSend rmstrainArrivalSend=new RmstrainArrivalSend();
- rmstrainArrivalSend.setArrivalId(toStationMaxId);
- rmstrainArrivalSend.setArrivalName((String) toTheStation);
- rmstrainArrivalSend.setInsertTime(new Date());
- rmstrainArrivalSend.setInsertUsername("金蝶");
- rmstrainArrivalSend.setInsertUpdateRemark("金蝶回传数据");
- result += rmstrainArrivalSendMapper.insertSelective(rmstrainArrivalSend);
- }else {
- //到站存在
- tmstrainPleaseApproveResult.setToTheStationId(sendStation);
- }
- tmstrainPleaseApproveResult.setResultType(new BigDecimal(4));
- tmstrainPleaseApproveResult.setInsertTime(new Date());
- tmstrainPleaseApproveResult.setInsertUpdateRemark("金蝶回传");
- result += tmstrainPleaseApproveResultMapper.updateByPrimaryKeySelective(tmstrainPleaseApproveResult);
- //修改销售订单子表
- }
- return result;
- }
- //根据运输订单号和车牌号
- @Override
- public List<Map<String, Object>> selectSaleSteelOrder(Map<String,Object> map) {
- List<Map<String, Object>> mapList = amsSaleOrderMapper.selectSaleSteelOrder(map);
- if (mapList.size()==0){
- return null;
- }
- for (Map<String,Object> map1:mapList){
- String materialName =(String) map1.get("materialName");
- if (materialName.contains("盘螺")){
- map1.put("materialType","盘螺");
- }else if (materialName.contains("盘圆")||materialName.contains("盘元")){
- map1.put("materialType","盘圆");
- }else if (materialName.contains("螺纹")){
- map1.put("materialType","螺纹钢");
- }
- //根据物资id查找炉批号
- BigDecimal materialId =DataChange.dataToBigDecimal(map1.get("materialId"));
- BigDecimal resultId =DataChange.dataToBigDecimal(map1.get("resultId"));
- String materialFurnaceNumber = amsSaleOrderMapper.selectMaterialFurnaceNumber(materialId,resultId);
- map1.put("materialFurnaceNumber",materialFurnaceNumber);
- //接口发送日期
- map1.put("sendTime",new Date());
- }
- return mapList;
- }
- @Override
- @Transactional(rollbackFor = {Exception.class})
- public int receiveOrderResult(Map<String, Object> map) throws Exception {
- int result=0;
- OmstrainOrder omstrainOrder = new OmstrainOrder();
- //获取运输订单号
- Object orderNumber = map.get("orderNumber");
- //获取备注-如果是异常情况,填写备注。
- Object remark = map.get("remark");
- if (remark!=null){
- omstrainOrder.setAcceptRemark((String) remark);
- }
- //接收车皮号
- Object wagonNo = map.get("wagonNo");
- BigDecimal orderId = omstrainOrderMapper.selectOrderIdBywagonNoAndOrderNumber((String) orderNumber, (String) wagonNo);
- if (orderId==null){
- throw new Exception("提示回传车皮号与运输订单号不匹配");
- }
- //根据运输订单号查找id
- omstrainOrder.setOrderId(orderId);
- //接收是否收货(0为未收货,1为已收货)
- Object receviceOrNot = map.get("receviceOrNot");
- omstrainOrder.setIsAccept(DataChange.dataToBigDecimal(receviceOrNot));
- //接收时间
- String receviceTime2 =(String) map.get("receviceTime");
- SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- try {
- Date receviceTime = sdf2.parse(receviceTime2);
- omstrainOrder.setIsAcceptTime(receviceTime);
- } catch (ParseException e) {
- e.printStackTrace();
- }
- result = omstrainOrderMapper.updateByPrimaryKeySelective(omstrainOrder);
- return result;
- }
- }
|