AmsSaleOrderServiceImpl.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.AmsSaleOrderMapper;
  3. import com.steerinfo.dil.mapper.AmsSaleOrderMaterialMapper;
  4. import com.steerinfo.dil.mapper.AmsSaleTrucknoMaterialMapper;
  5. import com.steerinfo.dil.model.AmsSaleOrder;
  6. import com.steerinfo.dil.model.AmsSaleOrderMaterial;
  7. import com.steerinfo.dil.model.AmsSaleTrucknoMaterial;
  8. import com.steerinfo.dil.service.IAmsSaleOrderService;
  9. import com.steerinfo.dil.util.DataChange;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.transaction.annotation.Transactional;
  13. import java.math.BigDecimal;
  14. import java.text.ParseException;
  15. import java.text.SimpleDateFormat;
  16. import java.util.*;
  17. /**
  18. * AmsSaleOrder服务实现:
  19. *
  20. * @author generator
  21. * @version 1.0-SNAPSHORT 2021-09-06 07:10
  22. * 类描述
  23. * 修订历史:
  24. * 日期:2021-09-06
  25. * 作者:generator
  26. * 参考:
  27. * 描述:AmsSaleOrder服务实现
  28. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  29. * @see null
  30. */
  31. @Service(value = "amsSaleOrderService")
  32. public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
  33. @Autowired
  34. private AmsSaleOrderMapper amsSaleOrderMapper;
  35. @Autowired
  36. private AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper;
  37. @Autowired
  38. private AmsSaleTrucknoMaterialMapper trucknoMaterialMapper;
  39. @Override
  40. public List<Map<String, Object>> getSaleOrderInfo(Map<String, Object> map) {
  41. return amsSaleOrderMapper.getSaleOrderInfo(map);
  42. }
  43. @Override
  44. public List<Map<String, Object>> getSaleOrderReported(Map<String, Object> map) {
  45. return amsSaleOrderMapper.getSaleOrderReported(map);
  46. }
  47. @Override
  48. public List<Map<String, Object>> getSaleOrderDetail(Map<String, Object> map) {
  49. return amsSaleOrderMapper.getSaleOrderDetail(map);
  50. }
  51. @Override
  52. public List<Map<String, Object>> getSalePlanName() {
  53. return amsSaleOrderMapper.getSalePlanName();
  54. }
  55. @Override
  56. public List<Map<String, Object>> getShipperName() {
  57. return amsSaleOrderMapper.getShipperName();
  58. }
  59. @Override
  60. public List<Map<String, Object>> getConsigneeCompanyName() {
  61. return amsSaleOrderMapper.getConsigneeCompanyName();
  62. }
  63. @Override
  64. /**
  65. * map存放为前端获取的amsSaleOrder基础数据以及selectionList物资信息
  66. * map1为基础数据包括,收货地址,收货人等
  67. * map2存放的从selectionList取出的数据,包括物资id,物资名称等。
  68. */
  69. public int addAmsSaleOrder(Map<String, Object> map) throws ParseException {
  70. //获取前端传过来的map,
  71. int i = 0;
  72. Map<String, Object> map1 = (Map<String, Object>) map.get("amsSaleOrder");
  73. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  74. Integer id = (amsSaleOrderMapper.selectMaxId()).intValue();
  75. //生成主键id
  76. amsSaleOrder.setSaleOrderId(new BigDecimal(id));
  77. //WXSDD-年月日-8位数的顺序号
  78. String wxsdd = DataChange.generateEightDigitsNumber("WXSDD", id);
  79. amsSaleOrder.setSaleNumber(wxsdd);
  80. //获得是否自提
  81. amsSaleOrder.setSaleOrderIsselfMention((String) map1.get("saleOrderIsselfMention"));
  82. //获取收货地址id
  83. amsSaleOrder.setReceiveId(DataChange.dataToBigDecimal(map1.get("receiveId")));
  84. //获取发货单位id
  85. amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(map1.get("shipperId")));
  86. //获取备注
  87. amsSaleOrder.setSaleRemark((String) map1.get("saleRemark"));
  88. //设置销售订单状态
  89. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  90. amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
  91. amsSaleOrder.setSaleOrderTax("13%");
  92. amsSaleOrder.setInsertUsername("admin");
  93. amsSaleOrder.setInsertTime(new Date());
  94. amsSaleOrder.setUpdateUsername("admin");
  95. amsSaleOrder.setUpdateTime(new Date());
  96. amsSaleOrder.setInsertUpdateRemark("无");
  97. amsSaleOrder.setDeleted(new BigDecimal(0));
  98. amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
  99. //设置收款客户
  100. amsSaleOrder.setSaleOrderReceiveCustomer((String) map1.get("saleOrderReceiveCustomer"));
  101. i += amsSaleOrderMapper.insertSelective(amsSaleOrder);
  102. //获取车序号和物资信息进行新增车序号与物资中间表
  103. //一个销售订单对应多个车序号
  104. List<Map<String, Object>> selectionList = (List<Map<String, Object>>) map.get("selectionList");
  105. for (Map<String, Object> map2 : selectionList) {
  106. BigDecimal materialId = DataChange.dataToBigDecimal(map2.get("materialId"));
  107. Integer cxh = (Integer) map2.get("cxh");
  108. //生成车序号与物资实体
  109. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  110. //生成主键
  111. amsSaleOrderMaterial.setSaleOrderMaterialId(amsSaleOrderMaterialMapper.selectMaxId());
  112. amsSaleOrderMaterial.setSaleOrderId(amsSaleOrder.getSaleOrderId());
  113. //获取收货地址
  114. Integer saleShipperAddressId =(Integer) map2.get("saleShipperAddressId");
  115. amsSaleOrderMaterial.setSaleShippingAddressId(new BigDecimal(saleShipperAddressId));
  116. //获取收货方电话号码
  117. amsSaleOrderMaterial.setSaleOrderConsigneeTel(map2.get("saleOrderConsigneeTel").toString());
  118. //获取收货日期
  119. String saleDateOfReceipt =(String) map2.get("saleDateOfReceipt");
  120. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
  121. Date date = simpleDateFormat.parse(saleDateOfReceipt);
  122. amsSaleOrderMaterial.setSaleDateOfReceipt(date);
  123. //获取收货方姓名
  124. amsSaleOrderMaterial.setSaleOrderConsignee((String) map2.get("saleOrderConsignee"));
  125. //设置车序号
  126. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(cxh));
  127. //设置删除状态
  128. amsSaleOrderMaterial.setDeleted(new BigDecimal(0));
  129. i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  130. //新增车序号与物资中间表
  131. AmsSaleTrucknoMaterial trucknoMaterial = new AmsSaleTrucknoMaterial();
  132. trucknoMaterial.setTrucknoMaterialId(trucknoMaterialMapper.selectMaxId());
  133. //设置物资id
  134. trucknoMaterial.setMaterialId(materialId);
  135. //获取车序号物资id
  136. trucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  137. Integer orderPlanWeight = (Integer) map2.get("orderPlanWeight");
  138. trucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(orderPlanWeight));
  139. //获取物资理重
  140. BigDecimal materialTheoreticalWeight = DataChange.dataToBigDecimal(map2.get("materialTheoreticalWeight"));
  141. //判断是否有物资理重
  142. if (materialTheoreticalWeight.intValue() != 0) {
  143. trucknoMaterial.setMaterialTheoreticalWeight(materialTheoreticalWeight);
  144. }
  145. //新增车序号与物资中间表
  146. i += trucknoMaterialMapper.insertSelective(trucknoMaterial);
  147. }
  148. return i;
  149. }
  150. @Override
  151. public int uploadSaleOrder(BigDecimal saleOrderId) {
  152. AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
  153. amsSaleOrder.setSaleOrderStatus(new BigDecimal(1));
  154. return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder);
  155. }
  156. @Override
  157. public List<Map<String, Object>> selectBySaleOrderId(BigDecimal saleOrderId) {
  158. return amsSaleOrderMapper.selectBySaleOrderId(saleOrderId);
  159. }
  160. /**
  161. * 修改订单信息、车序号表、车序号物资中间表
  162. *
  163. * @param map
  164. * @return
  165. */
  166. @Override
  167. @Transactional
  168. public int updateAmsSaleOrder(Map<String, Object> map) throws ParseException {
  169. int i = 0;
  170. int j = 0;
  171. Map<String, Object> map1 = (Map<String, Object>) map.get("amsSaleOrder");
  172. AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
  173. //修改销售订单表 更新销售订单基础信息
  174. amsSaleOrder.setSaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId")));
  175. amsSaleOrder.setShipperId(DataChange.dataToBigDecimal(map1.get("shipperId")));
  176. amsSaleOrder.setReceiveId(DataChange.dataToBigDecimal(map1.get("reciveId")));
  177. amsSaleOrder.setSaleOrderIsselfMention((String) map1.get("saleOrderIsselfMention"));
  178. amsSaleOrder.setSaleOrderReceiveCustomer((String) map1.get("saleOrderReciveCustomer"));
  179. amsSaleOrder.setSaleRemark((String) map1.get("saleRemark"));
  180. amsSaleOrder.setUpdateTime(new Date());
  181. i += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
  182. //根据销售订单id查找销售车序号和车序号与物资中间表主键
  183. List<Map<String, Object>> map2 = amsSaleOrderMapper.selectSaleOrderMaterialIdBySaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId")));
  184. for (Map<String,Object> Id:map2){
  185. BigDecimal truckNoMaterialId =(BigDecimal) Id.get("TruckNoMaterialId");
  186. BigDecimal saleOrderMaterialId=(BigDecimal) Id.get("saleOrderMaterialId");
  187. //删除对应的车序号表与车序号与物资中间表
  188. j+=amsSaleOrderMaterialMapper.deleteByPrimaryKey(saleOrderMaterialId);
  189. j+=trucknoMaterialMapper.deleteByPrimaryKey(truckNoMaterialId);
  190. }
  191. //新增车序号和物资中间表
  192. //获取车序号和物资信息进行新增车序号与物资中间表
  193. //一个销售订单对应多个车序号
  194. List<Map<String, Object>> selectionList = (List<Map<String, Object>>) map.get("selectionList");
  195. for (Map<String, Object> map3 : selectionList) {
  196. BigDecimal materialId = DataChange.dataToBigDecimal(map3.get("materialId"));
  197. Integer cxh = (Integer) map3.get("cxh");
  198. //生成车序号与物资实体
  199. AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  200. //生成主键
  201. amsSaleOrderMaterial.setSaleOrderMaterialId(amsSaleOrderMaterialMapper.selectMaxId());
  202. amsSaleOrderMaterial.setSaleOrderId(DataChange.dataToBigDecimal(map1.get("saleOrderId")));
  203. //获取收货地址
  204. amsSaleOrderMaterial.setSaleShippingAddressId(DataChange.dataToBigDecimal(map3.get("saleShipperAddressId")));
  205. //获取收货方电话号码
  206. amsSaleOrderMaterial.setSaleOrderConsigneeTel(map3.get("saleOrderConsigneeTel").toString());
  207. //获取收货日期
  208. String saleDateOfReceipt =(String) map3.get("saleDateOfReceipt");
  209. SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
  210. Date date = simpleDateFormat.parse(saleDateOfReceipt);
  211. amsSaleOrderMaterial.setSaleDateOfReceipt(date);
  212. //获取收货方姓名
  213. amsSaleOrderMaterial.setSaleOrderConsignee((String) map3.get("saleOrderConsignee"));
  214. //设置车序号
  215. amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(new BigDecimal(cxh));
  216. //设置删除状态
  217. amsSaleOrderMaterial.setDeleted(new BigDecimal(0));
  218. i += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
  219. //新增车序号与物资中间表
  220. AmsSaleTrucknoMaterial trucknoMaterial = new AmsSaleTrucknoMaterial();
  221. trucknoMaterial.setTrucknoMaterialId(trucknoMaterialMapper.selectMaxId());
  222. //设置物资id
  223. trucknoMaterial.setMaterialId(materialId);
  224. //获取车序号物资id
  225. trucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
  226. Integer orderPlanWeight = (Integer) map3.get("orderPlanWeight");
  227. trucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(orderPlanWeight));
  228. //获取物资理重
  229. BigDecimal materialTheoreticalWeight = DataChange.dataToBigDecimal(map3.get("materialTheoreticalWeight"));
  230. //判断是否有物资理重
  231. if (materialTheoreticalWeight.intValue() != 0) {
  232. trucknoMaterial.setMaterialTheoreticalWeight(materialTheoreticalWeight);
  233. }
  234. //新增车序号与物资中间表
  235. i += trucknoMaterialMapper.insertSelective(trucknoMaterial);
  236. }
  237. // List<Map<String, Object>> mapList = (List<Map<String, Object>>) map.get("mapList");
  238. // ArrayList<Integer> list = new ArrayList<>();
  239. // for (Map<String, Object> truckMesMap : mapList) {
  240. // //修改车序号表
  241. // BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(truckMesMap.get("saleOrderMaterialId"));
  242. // if (!list.contains(saleOrderMaterialId.intValue())) {
  243. // //车序号表专用字段
  244. // BigDecimal saleShipperAddressId = DataChange.dataToBigDecimal(truckMesMap.get("saleShipperAddressId"));
  245. // String saleDateOfReceipt =(String) truckMesMap.get("saleDateOfReceipt");
  246. // SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
  247. // Date date = simpleDateFormat.parse(saleDateOfReceipt);
  248. // String saleOrderConsignee = (String) truckMesMap.get("saleOrderConsignee");
  249. // String saleOrderConsigneeTel = (String) truckMesMap.get("saleOrderConsigneeTel");
  250. // AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
  251. // amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
  252. // amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(DataChange.dataToBigDecimal(truckMesMap.get("cxh")));
  253. // amsSaleOrderMaterial.setSaleShippingAddressId(saleShipperAddressId);
  254. // amsSaleOrderMaterial.setSaleDateOfReceipt(date);
  255. // amsSaleOrderMaterial.setSaleOrderConsignee(saleOrderConsignee);
  256. // amsSaleOrderMaterial.setSaleOrderConsigneeTel(saleOrderConsigneeTel);
  257. // i += amsSaleOrderMaterialMapper.updateByPrimaryKeySelective(amsSaleOrderMaterial);
  258. // list.add(saleOrderMaterialId.intValue());
  259. // }
  260. // //修改车车序号物资表
  261. // AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
  262. // amsSaleTrucknoMaterial.setTrucknoMaterialId(DataChange.dataToBigDecimal(truckMesMap.get("trucknoMaterialId")));
  263. // amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(DataChange.dataToBigDecimal(truckMesMap.get("orderPlanWeight")));
  264. // amsSaleTrucknoMaterial.setMaterialId(DataChange.dataToBigDecimal(truckMesMap.get("materialId")));
  265. // i += trucknoMaterialMapper.updateByPrimaryKeySelective(amsSaleTrucknoMaterial);
  266. // }
  267. return i;
  268. }
  269. @Override
  270. public int deleteAmsSaleOrderBySaleOrderId(BigDecimal saleOrderId) {
  271. //删除所有从表信息
  272. //amsSaleOrderMapper.deleteBySaleOrderId(saleOrderId);
  273. AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
  274. amsSaleOrder.setDeleted(new BigDecimal(1));
  275. return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder);
  276. }
  277. @Override
  278. public List<Map<String, Object>> getSaleOrderUpdateLog(Map<String, Object> map) {
  279. return amsSaleOrderMapper.getSaleOrderUpdateLog(map);
  280. }
  281. /**
  282. * 销售公司查询已审核的订单
  283. * @param map
  284. * @return
  285. */
  286. @Override
  287. public List<Map<String, Object>> getSaleOrderListBySaleCompany(Map<String, Object> map) {
  288. return amsSaleOrderMapper.getSaleOrderListBySaleCompany(map);
  289. }
  290. @Override
  291. public List<Map<String, Object>> getAmsSaleOrderApproved(Map<String, Object> map) {
  292. return amsSaleOrderMapper.getAmsSaleOrderApproved(map);
  293. }
  294. @Override
  295. public List<Map<String, Object>> getSaleOrderList(Map<String, Object> mapValue) {
  296. return amsSaleOrderMapper.getSaleOrderList(mapValue);
  297. }
  298. public List<Integer> getCarrier(Integer integer) {
  299. return amsSaleOrderMapper.getCarrier(integer);
  300. }
  301. /**
  302. * 根据销售订单id查找信息
  303. */
  304. @Override
  305. public Map<String, Object> selectInfoBySaleOrderId(BigDecimal saleOrderId) {
  306. return amsSaleOrderMapper.selectInfoBySaleOrderId(saleOrderId);
  307. }
  308. /**
  309. * 根据销售订单id查找物资信息
  310. *
  311. * @param saleOrderId
  312. * @return
  313. */
  314. @Override
  315. public List<Map<String, Object>> selectMaterialInfoBySaleOrderId(BigDecimal saleOrderId) {
  316. return amsSaleOrderMapper.selectMaterialInfoBySaleOrderId(saleOrderId);
  317. }
  318. }