package com.steerinfo.dil.service.impl; import com.steerinfo.dil.mapper.AmsSaleOrderMapper; import com.steerinfo.dil.mapper.AmsSaleOrderMaterialMapper; import com.steerinfo.dil.mapper.AmsSaleTrucknoMaterialMapper; 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; @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()); //获取收货地址 Integer saleShipperAddressId =(Integer) map2.get("saleShipperAddressId"); amsSaleOrderMaterial.setSaleShippingAddressId(new BigDecimal(saleShipperAddressId)); //获取收货方电话号码 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); //新增车序号与物资中间表 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 List getCarrier(Integer integer) { return amsSaleOrderMapper.getCarrier(integer); } /** * 根据销售订单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); } }