package com.steerinfo.dil.service.impl; import com.steerinfo.dil.mapper.AmsDispatchSaleOrderMapper; import com.steerinfo.dil.mapper.AmsSaleOrderMapper; import com.steerinfo.dil.mapper.AmsSaleOrderMaterialMapper; import com.steerinfo.dil.mapper.AmsSaleTrucknoMaterialMapper; import com.steerinfo.dil.model.AmsDispatchSaleOrder; import com.steerinfo.dil.model.AmsSaleOrder; import com.steerinfo.dil.model.AmsSaleOrderMaterial; import com.steerinfo.dil.model.AmsSaleTrucknoMaterial; 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.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * AmsSaleOrder服务实现: * * @author generator * @version 1.0-SNAPSHORT 2021-09-06 07:10 * 类描述 * 修订历史: * 日期:2021-09-06 * 作者:generator * 参考: * 描述:AmsSaleOrder服务实现 * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved. * @see null */ @Service(value = "amsSaleOrderService") public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService { @Autowired private AmsSaleOrderMapper amsSaleOrderMapper; @Autowired private AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper; @Autowired private AmsSaleTrucknoMaterialMapper trucknoMaterialMapper; @Autowired AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper; @Override public List> getSaleOrderInfo(Map map) { return amsSaleOrderMapper.getSaleOrderInfo(map); } @Override public List> getSaleOrderReported(Map map) { return amsSaleOrderMapper.getSaleOrderReported(map); } @Override public List> getSaleOrderDetail(Map map) { return amsSaleOrderMapper.getSaleOrderDetail(map); } @Override public List> getSalePlanName() { return amsSaleOrderMapper.getSalePlanName(); } @Override public List> getShipperName() { return amsSaleOrderMapper.getShipperName(); } @Override public List> getConsigneeCompanyName() { return amsSaleOrderMapper.getConsigneeCompanyName(); } @Override /** * map存放为前端获取的amsSaleOrder基础数据以及selectionList物资信息 * map1为基础数据包括,收货地址,收货人等 * map2存放的从selectionList取出的数据,包括物资id,物资名称等。 */ public int addAmsSaleOrder(Map map) throws ParseException { //获取前端传过来的map, int i = 0; Map map1 = (Map) map.get("amsSaleOrder"); AmsSaleOrder amsSaleOrder = new AmsSaleOrder(); Integer id = (amsSaleOrderMapper.selectMaxId()).intValue(); //生成主键id amsSaleOrder.setSaleOrderId(new BigDecimal(id)); //WXSDD-年月日-8位数的顺序号 String wxsdd = DataChange.generateEightDigitsNumber("WXSDD", id); amsSaleOrder.setSaleNumber(wxsdd); //获得是否自提 amsSaleOrder.setSaleOrderIsselfMention((String) map1.get("saleOrderIsselfMention")); //获取收货地址id amsSaleOrder.setReceiveId(DataChange.dataToBigDecimal(map1.get("receiveId"))); //获取发货单位id amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(map1.get("shipperId"))); //获取备注 amsSaleOrder.setSaleRemark((String) map1.get("saleRemark")); //设置销售订单状态 amsSaleOrder.setSaleOrderStatus(new BigDecimal(0)); amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000)); amsSaleOrder.setSaleOrderTax("13%"); amsSaleOrder.setInsertUsername("admin"); amsSaleOrder.setInsertTime(new Date()); amsSaleOrder.setUpdateUsername("admin"); amsSaleOrder.setUpdateTime(new Date()); amsSaleOrder.setInsertUpdateRemark("无"); amsSaleOrder.setDeleted(new BigDecimal(0)); amsSaleOrder.setSaleOrderStatus(new BigDecimal(0)); //设置收款客户 amsSaleOrder.setSaleOrderReceiveCustomer((String) map1.get("saleOrderReceiveCustomer")); i += amsSaleOrderMapper.insertSelective(amsSaleOrder); //获取车序号和物资信息进行新增车序号与物资中间表 //一个销售订单对应多个车序号 List> selectionList = (List>) map.get("selectionList"); for (Map map2 : selectionList) { BigDecimal materialId = DataChange.dataToBigDecimal(map2.get("materialId")); Integer cxh = (Integer) map2.get("cxh"); //生成车序号与物资实体 AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial(); //生成主键 amsSaleOrderMaterial.setSaleOrderMaterialId(amsSaleOrderMaterialMapper.selectMaxId()); amsSaleOrderMaterial.setSaleOrderId(amsSaleOrder.getSaleOrderId()); // 生成定向派单 AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder(); amsDispatchSaleOrder.setDispatchId(amsDispatchSaleOrderMapper.selectOtherId()); amsDispatchSaleOrder.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId()); //获取收货地址 Integer saleShipperAddressId =(Integer) map2.get("saleShipperAddressId"); amsSaleOrderMaterial.setSaleShippingAddressId(new BigDecimal(saleShipperAddressId)); //根据收货地址查询承运商 Map map4 = amsSaleOrderMapper.selectProvince(saleShipperAddressId); BigDecimal carrierId = amsSaleOrderMapper.selectCarrierIdByprovince(map4); //获取收货方电话号码 amsDispatchSaleOrder.setCarrierId(carrierId); amsDispatchSaleOrder.setDispatchTime(new Date()); //设置成交类型 amsDispatchSaleOrder.setDispatchType(new BigDecimal(0)); //设置下发状态为未下发 amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(1)); amsDispatchSaleOrder.setInsertTime(new Date()); amsDispatchSaleOrder.setInsertUsername("admin"); amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder); amsSaleOrderMaterial.setSaleOrderConsigneeTel(map2.get("saleOrderConsigneeTel").toString()); //获取收货日期 String saleDateOfReceipt =(String) map2.get("saleDateOfReceipt"); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); Date date = simpleDateFormat.parse(saleDateOfReceipt); amsSaleOrderMaterial.setSaleDateOfReceipt(date); //获取收货方姓名 amsSaleOrderMaterial.setSaleOrderConsignee((String) map2.get("saleOrderConsignee")); //设置车序号 amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(cxh)); //设置删除状态 amsSaleOrderMaterial.setDeleted(new BigDecimal(0)); i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial); //新增车序号与物资中间表 AmsSaleTrucknoMaterial trucknoMaterial = new AmsSaleTrucknoMaterial(); trucknoMaterial.setTrucknoMaterialId(trucknoMaterialMapper.selectMaxId()); //设置物资id trucknoMaterial.setMaterialId(materialId); //获取车序号物资id trucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId()); Integer orderPlanWeight = (Integer) map2.get("orderPlanWeight"); trucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(orderPlanWeight)); //获取物资理重 BigDecimal materialTheoreticalWeight = DataChange.dataToBigDecimal(map2.get("materialTheoreticalWeight")); //判断是否有物资理重 if (materialTheoreticalWeight.intValue() != 0) { trucknoMaterial.setMaterialTheoreticalWeight(materialTheoreticalWeight); } //新增车序号与物资中间表 i += trucknoMaterialMapper.insertSelective(trucknoMaterial); } return i; } @Override public int uploadSaleOrder(BigDecimal saleOrderId) { AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId); amsSaleOrder.setSaleOrderStatus(new BigDecimal(1)); return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder); } @Override public List> selectBySaleOrderId(BigDecimal saleOrderId) { return amsSaleOrderMapper.selectBySaleOrderId(saleOrderId); } /** * 修改订单信息、车序号表、车序号物资中间表 * * @param map * @return */ @Override @Transactional public int updateAmsSaleOrder(Map map) throws ParseException { int i = 0; int j = 0; Map map1 = (Map) map.get("amsSaleOrder"); AmsSaleOrder amsSaleOrder = new AmsSaleOrder(); //修改销售订单表 更新销售订单基础信息 amsSaleOrder.setSaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId"))); amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(map1.get("shipperId"))); amsSaleOrder.setReceiveId(DataChange.dataToBigDecimal(map1.get("reciveId"))); amsSaleOrder.setSaleOrderIsselfMention((String) map1.get("saleOrderIsselfMention")); amsSaleOrder.setSaleOrderReceiveCustomer((String) map1.get("saleOrderReciveCustomer")); amsSaleOrder.setSaleRemark((String) map1.get("saleRemark")); amsSaleOrder.setUpdateTime(new Date()); i += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder); //根据销售订单id查找销售车序号和车序号与物资中间表主键 List> map2 = amsSaleOrderMapper.selectSaleOrderMaterialIdBySaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId"))); for (Map Id:map2){ BigDecimal truckNoMaterialId =(BigDecimal) Id.get("TruckNoMaterialId"); BigDecimal saleOrderMaterialId=(BigDecimal) Id.get("saleOrderMaterialId"); //删除对应的车序号表与车序号与物资中间表 j+=amsSaleOrderMaterialMapper.deleteByPrimaryKey(saleOrderMaterialId); j+=trucknoMaterialMapper.deleteByPrimaryKey(truckNoMaterialId); } //新增车序号和物资中间表 //获取车序号和物资信息进行新增车序号与物资中间表 //一个销售订单对应多个车序号 List> selectionList = (List>) map.get("selectionList"); for (Map map3 : selectionList) { BigDecimal materialId = DataChange.dataToBigDecimal(map3.get("materialId")); Integer cxh = (Integer) map3.get("cxh"); //生成车序号与物资实体 AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial(); //生成主键 amsSaleOrderMaterial.setSaleOrderMaterialId(amsSaleOrderMaterialMapper.selectMaxId()); amsSaleOrderMaterial.setSaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId"))); //获取收货地址 amsSaleOrderMaterial.setSaleShippingAddressId(DataChange.dataToBigDecimal(map3.get("saleShipperAddressId"))); //获取收货方电话号码 amsSaleOrderMaterial.setSaleOrderConsigneeTel(map3.get("saleOrderConsigneeTel").toString()); //获取收货日期 String saleDateOfReceipt =(String) map3.get("saleDateOfReceipt"); SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); Date date = simpleDateFormat.parse(saleDateOfReceipt); amsSaleOrderMaterial.setSaleDateOfReceipt(date); //获取收货方姓名 amsSaleOrderMaterial.setSaleOrderConsignee((String) map3.get("saleOrderConsignee")); //设置车序号 amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(cxh)); //设置删除状态 amsSaleOrderMaterial.setDeleted(new BigDecimal(0)); i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial); // 生成定向派单 AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder(); amsDispatchSaleOrder.setDispatchId(amsDispatchSaleOrderMapper.selectOtherId()); amsDispatchSaleOrder.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId()); //获取收货地址 Integer saleShipperAddressId =(Integer) map3.get("saleShipperAddressId"); amsSaleOrderMaterial.setSaleShippingAddressId(new BigDecimal(saleShipperAddressId)); //根据收货地址查询承运商 Map map4 = amsSaleOrderMapper.selectProvince(saleShipperAddressId); BigDecimal carrierId = amsSaleOrderMapper.selectCarrierIdByprovince(map4); //获取收货方电话号码 amsDispatchSaleOrder.setCarrierId(carrierId); amsDispatchSaleOrder.setDispatchTime(new Date()); //设置成交类型 amsDispatchSaleOrder.setDispatchType(new BigDecimal(0)); //设置下发状态为已下发 amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0)); amsDispatchSaleOrder.setInsertTime(new Date()); amsDispatchSaleOrder.setInsertUsername("admin"); //新增车序号与物资中间表 AmsSaleTrucknoMaterial trucknoMaterial = new AmsSaleTrucknoMaterial(); trucknoMaterial.setTrucknoMaterialId(trucknoMaterialMapper.selectMaxId()); //设置物资id trucknoMaterial.setMaterialId(materialId); //获取车序号物资id trucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId()); Integer orderPlanWeight = (Integer) map3.get("orderPlanWeight"); trucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(orderPlanWeight)); //获取物资理重 BigDecimal materialTheoreticalWeight = DataChange.dataToBigDecimal(map3.get("materialTheoreticalWeight")); //判断是否有物资理重 if (materialTheoreticalWeight.intValue() != 0) { trucknoMaterial.setMaterialTheoreticalWeight(materialTheoreticalWeight); } //新增车序号与物资中间表 i += trucknoMaterialMapper.insertSelective(trucknoMaterial); } // List> mapList = (List>) map.get("mapList"); // ArrayList list = new ArrayList<>(); // for (Map truckMesMap : mapList) { // //修改车序号表 // BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(truckMesMap.get("saleOrderMaterialId")); // if (!list.contains(saleOrderMaterialId.intValue())) { // //车序号表专用字段 // BigDecimal saleShipperAddressId = DataChange.dataToBigDecimal(truckMesMap.get("saleShipperAddressId")); // String saleDateOfReceipt =(String) truckMesMap.get("saleDateOfReceipt"); // SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); // Date date = simpleDateFormat.parse(saleDateOfReceipt); // String saleOrderConsignee = (String) truckMesMap.get("saleOrderConsignee"); // String saleOrderConsigneeTel = (String) truckMesMap.get("saleOrderConsigneeTel"); // AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial(); // amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId); // amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(DataChange.dataToBigDecimal(truckMesMap.get("cxh"))); // amsSaleOrderMaterial.setSaleShippingAddressId(saleShipperAddressId); // amsSaleOrderMaterial.setSaleDateOfReceipt(date); // amsSaleOrderMaterial.setSaleOrderConsignee(saleOrderConsignee); // amsSaleOrderMaterial.setSaleOrderConsigneeTel(saleOrderConsigneeTel); // i += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial); // list.add(saleOrderMaterialId.intValue()); // } // //修改车车序号物资表 // AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial(); // amsSaleTrucknoMaterial.setTrucknoMaterialId(DataChange.dataToBigDecimal(truckMesMap.get("trucknoMaterialId"))); // amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(truckMesMap.get("orderPlanWeight"))); // amsSaleTrucknoMaterial.setMaterialId(DataChange.dataToBigDecimal(truckMesMap.get("materialId"))); // i += trucknoMaterialMapper.updateByPrimaryKeySelective(amsSaleTrucknoMaterial); // } return i; } @Override public int deleteAmsSaleOrderBySaleOrderId(BigDecimal saleOrderId) { //删除所有从表信息 //amsSaleOrderMapper.deleteBySaleOrderId(saleOrderId); AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId); amsSaleOrder.setDeleted(new BigDecimal(1)); return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder); } @Override public List> getSaleOrderUpdateLog(Map map) { return amsSaleOrderMapper.getSaleOrderUpdateLog(map); } /** * 销售公司查询已审核的订单 * @param map * @return */ @Override public List> getSaleOrderListBySaleCompany(Map map) { return amsSaleOrderMapper.getSaleOrderListBySaleCompany(map); } @Override public List> getAmsSaleOrderApproved(Map map) { return amsSaleOrderMapper.getAmsSaleOrderApproved(map); } @Override public List> getSaleOrderList(Map mapValue) { return amsSaleOrderMapper.getSaleOrderList(mapValue); } public Map getCarrier(Integer addressId) { return amsSaleOrderMapper.selectProvince(addressId); } /** * 根据销售订单id查找信息 */ @Override public Map selectInfoBySaleOrderId(BigDecimal saleOrderId) { return amsSaleOrderMapper.selectInfoBySaleOrderId(saleOrderId); } /** * 根据销售订单id查找物资信息 * * @param saleOrderId * @return */ @Override public List> selectMaterialInfoBySaleOrderId(BigDecimal saleOrderId) { return amsSaleOrderMapper.selectMaterialInfoBySaleOrderId(saleOrderId); } @Override public int addAmsDispatchSaleOrder(List> mapValue) { int result = 0; for (Map map : mapValue) { Integer dispatchId = (Integer)map.get("dispatchId"); AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(new BigDecimal(dispatchId)); amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(0)); result = amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder); } return result; } @Override public List> getSaleOrderInfoes(Map map) { return amsSaleOrderMapper.getSaleOrderInfoes(map); } @Override public List> getSaleOrderReportedes(Map map) { return amsSaleOrderMapper.getSaleOrderReportedes(map); } @Override public List> getSaleOrderListBySaleCompanyes(Map map) { List> resultList = amsSaleOrderMapper.getSaleOrderListBySaleCompanyes(map); String statusStr; for (Map resultMap : resultList) { BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId"); Map loserMap = new HashMap<>(); loserMap.put("saleOrderId",saleOrderId); loserMap.put("con",map.get("con")); // 物资 List> materialList = amsSaleOrderMapper.getSaleMaterial(loserMap); if (materialList != null && materialList.size() > 0) { Map materialMap = materialList.get(0); String materialName = (String) materialMap.get("materialName"); if (materialList.size() != 1) { materialName += "..."; } resultMap.put("materialName",materialName); } BigDecimal saleOrderStatus = (BigDecimal) resultMap.get("saleOrderStatus"); // if (saleOrderStatus.intValue() == 2) { // statusStr = "销售公司已审核"; // } // else { // statusStr = "财务已审核"; // } statusStr = saleOrderStatus.intValue() == 2 ? "销售公司已审批" : "财务已审批"; resultMap.put("statusStr",statusStr); } return resultList; } @Override public List> getAmsSaleOrderApprovedes(Map map) { return amsSaleOrderMapper.getAmsSaleOrderApprovedes(map); } /* * 根据销售订单主键展示销售基本信息、物资信息 * */ @Override public List> getSaleOrderAndMaterialById(Map mapValue) { List> mapList=amsSaleOrderMapper.getSaleOrderAndMaterialById(mapValue); for (Map map : mapList) { BigDecimal number; BigDecimal materialNumber = (BigDecimal) map.get("materialNumber"); BigDecimal materialWeight = (BigDecimal) map.get("materialWeight"); if (materialNumber != null && materialNumber.toString().length() != 0) { number = materialNumber; } else { number = materialWeight; } map.put("number",number); } return mapList; } /** * 销售焦炭订单 * @param mapValue * @return */ @Override public List> getCokeSaleOrderList(Map mapValue) { List> mapList = amsSaleOrderMapper.getCokeSaleOrderList(mapValue); String statusStr; for (Map resultMap : mapList) { BigDecimal saleOrderStatus = (BigDecimal) resultMap.get("saleOrderStatus"); statusStr = saleOrderStatus.intValue() == 2 ? "销售公司已审批" : "财务已审批"; resultMap.put("statusStr",statusStr); } return mapList; } }