BmstruckStatementServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. package com.steerinfo.dil.service.impl;
  2. import com.steerinfo.dil.mapper.BmstruckCheckMapper;
  3. import com.steerinfo.dil.mapper.BmstruckDetailsOrderMapper;
  4. import com.steerinfo.dil.mapper.BmstruckDetailsStatementMapper;
  5. import com.steerinfo.dil.model.BmstruckCheck;
  6. import com.steerinfo.dil.model.BmstruckDetailsOrder;
  7. import com.steerinfo.dil.model.BmstruckDetailsStatement;
  8. import com.steerinfo.dil.util.NoUtil;
  9. import com.steerinfo.dil.model.BmstruckStatement;
  10. import com.steerinfo.dil.mapper.BmstruckStatementMapper;
  11. import com.steerinfo.dil.service.IBmstruckStatementService;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import java.text.DecimalFormat;
  16. import java.util.Date;
  17. import java.math.BigDecimal;
  18. import java.util.List;
  19. import java.util.Map;
  20. /**
  21. * BmstruckStatement服务实现:
  22. *
  23. * @author generator
  24. * @version 1.0-SNAPSHORT 2021-10-15 06:20
  25. * 类描述
  26. * 修订历史:
  27. * 日期:2021-10-15
  28. * 作者:generator
  29. * 参考:
  30. * 描述:BmstruckStatement服务实现
  31. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  32. * @see null
  33. */
  34. @Service(value = "bmstruckStatementService")
  35. public class BmstruckStatementServiceImpl implements IBmstruckStatementService {
  36. @Autowired
  37. BmstruckStatementMapper bmstruckStatementMapper;
  38. @Autowired
  39. BmstruckDetailsStatementMapper bmstruckDetailsStatementMapper;
  40. @Autowired
  41. BmstruckDetailsOrderMapper bmstruckDetailsOrderMapper;
  42. @Autowired
  43. BmstruckCheckMapper bmstruckCheckMapper;
  44. @Autowired
  45. NoUtil noUtil;
  46. /**
  47. * 展示计费账单
  48. *
  49. * @param mapValue
  50. * @return
  51. */
  52. @Override
  53. public List<Map<String, Object>> getTruckStatementList(Map<String, Object> mapValue) {
  54. List<Map<String, Object>> mapList = bmstruckStatementMapper.getTruckStatementList(mapValue);
  55. String checkStatus = "";
  56. for (Map<String, Object> map : mapList) {
  57. BigDecimal checkCarrierStatus = (BigDecimal) map.get("checkCarrierStatus");
  58. BigDecimal checkReceiveCustomerStatus = (BigDecimal) map.get("checkReceiveCustomerStatus");
  59. BigDecimal checkShipperStatus = (BigDecimal) map.get("checkShipperStatus");
  60. if (checkCarrierStatus.intValue() == 1 || checkReceiveCustomerStatus.intValue() == 1 || checkShipperStatus.intValue() == 1) {
  61. checkStatus = "未通过审核";
  62. }
  63. // 全部通过:已通过审核
  64. if (checkCarrierStatus.intValue() == 2 && checkReceiveCustomerStatus.intValue() == 2 && checkShipperStatus.intValue() == 2) {
  65. checkStatus = "已通过审核";
  66. }
  67. // 有人未审核,且没人拒绝:审核中
  68. if (checkStatus != "未审核通过" && checkCarrierStatus.intValue() == 0 || checkReceiveCustomerStatus.intValue() == 0 || checkShipperStatus.intValue() == 0) {
  69. checkStatus = "审核中";
  70. }
  71. // 全部都没审核:待审核
  72. if (checkCarrierStatus.intValue() == 0 && checkReceiveCustomerStatus.intValue() == 0 && checkShipperStatus.intValue() == 0) {
  73. checkStatus = "待审核";
  74. }
  75. map.put("checkStatus", checkStatus);
  76. }
  77. return mapList;
  78. }
  79. /**
  80. * 生成汽运账单
  81. *
  82. * @param mapList
  83. * @return
  84. */
  85. @Transactional
  86. @Override
  87. public int addTruckStatement(List<Map<String, Object>> mapList) {
  88. BmstruckStatement bmstruckStatement = new BmstruckStatement();
  89. BmstruckCheck bmstruckCheck = new BmstruckCheck();
  90. // 汽运账单主键
  91. BigDecimal statementId = bmstruckStatementMapper.selectStatementId();
  92. bmstruckStatement.setStatementId(statementId);
  93. BigDecimal checkId = bmstruckCheckMapper.selectCheckId();
  94. bmstruckCheck.setCheckId(checkId);
  95. bmstruckCheck.setStatementId(statementId);
  96. bmstruckCheck.setCheckCarrierStatus(new BigDecimal(0));
  97. bmstruckCheck.setCheckShipperStatus(new BigDecimal(0));
  98. bmstruckCheck.setCheckReceiveCustomerStatus(new BigDecimal(0));
  99. bmstruckCheckMapper.insertSelective(bmstruckCheck);
  100. // 汽运账单编号
  101. String statementNumber = noUtil.setResultNo("QYZD", statementId);
  102. bmstruckStatement.setStatementNumber(statementNumber);
  103. // 支付单位
  104. bmstruckStatement.setStatementPaymentUnit("四川达州钢铁集团有限责任公司");
  105. // 备注
  106. bmstruckStatement.setStatementRemark("汽运费账单");
  107. // 常规字段
  108. bmstruckStatement.setInsertTime(new Date());
  109. bmstruckStatement.setInsertUsername("admin");
  110. bmstruckStatement.setUpdateTime(new Date());
  111. bmstruckStatement.setUpdateUsername("admin");
  112. bmstruckStatement.setInsertUpdateRemark("无");
  113. Double doubleTotalAmount = new Double(0);
  114. for (Map<String, Object> map : mapList) {
  115. // 中间表主键
  116. BigDecimal detailsStatementId = bmstruckDetailsStatementMapper.selectDetailsStatementId();
  117. // 详单id
  118. BigDecimal detailsId = new BigDecimal((Integer) map.get("detailsId"));
  119. BmstruckDetailsOrder bmstruckDetailsOrder = bmstruckDetailsOrderMapper.selectByPrimaryKey(detailsId);
  120. bmstruckDetailsOrder.setWetherToStatement(new BigDecimal(1));
  121. bmstruckDetailsOrderMapper.updateByPrimaryKeySelective(bmstruckDetailsOrder);
  122. BmstruckDetailsStatement bmstruckDetailsStatement = new BmstruckDetailsStatement();
  123. bmstruckDetailsStatement.setDetailsStatementId(detailsStatementId);
  124. bmstruckDetailsStatement.setStatementId(statementId);
  125. bmstruckDetailsStatement.setDetailsId(detailsId);
  126. // 设置常规字段
  127. bmstruckDetailsStatement.setInsertTime(new Date());
  128. bmstruckDetailsStatement.setInsertUsername("admin");
  129. bmstruckDetailsStatement.setUpdateTime(new Date());
  130. bmstruckDetailsStatement.setUpdateUsername("admin");
  131. bmstruckDetailsStatement.setInsertUpdateRemark("无");
  132. BigDecimal detailsAmount = new BigDecimal((Double) map.get("detailsAmount"));
  133. Double detailsAmountDouble = Double.valueOf(detailsAmount.toString());
  134. doubleTotalAmount += detailsAmountDouble;
  135. bmstruckDetailsStatementMapper.insertSelective(bmstruckDetailsStatement);
  136. }
  137. DecimalFormat df = new DecimalFormat("0.00");
  138. String statementTotalAmount = df.format(doubleTotalAmount);
  139. bmstruckStatement.setStatementExcludTax(new BigDecimal(statementTotalAmount));
  140. return bmstruckStatementMapper.insertSelective(bmstruckStatement);
  141. }
  142. /**
  143. * 展示账单下的详单
  144. *
  145. * @param mapVal
  146. * @return
  147. */
  148. @Override
  149. public List<Map<String, Object>> getSaleTruckStatementDetailsOrderList(Map<String, Object> mapVal) {
  150. return bmstruckStatementMapper.getSaleTruckStatementDetailsOrderList(mapVal);
  151. }
  152. /**
  153. * 新增内转汽运账单
  154. *
  155. * @param mapList
  156. * @param orderType
  157. * @return
  158. */
  159. @Override
  160. public int addConvertedTruckStatement(List<Map<String, Object>> mapList, Integer orderType) {
  161. //orderType:1:计时,2:计数,3:计重,4:包月
  162. // 生成汽运账单主键
  163. BigDecimal statementId = bmstruckStatementMapper.selectStatementId();
  164. // 创建账单实体
  165. BmstruckStatement bmstruckStatement = new BmstruckStatement();
  166. // 常规字段
  167. bmstruckStatement.setInsertTime(new Date());
  168. bmstruckStatement.setInsertUsername("admin");
  169. bmstruckStatement.setInsertUpdateRemark("无");
  170. // 计算账单总金额
  171. Double doubleTotalAmount = new Double(0);
  172. //将详单id与账单id绑定至中间表
  173. for (Map<String, Object> map : mapList) {
  174. // 中间表主键
  175. BigDecimal detailsStatementId = bmstruckDetailsStatementMapper.selectDetailsStatementId();
  176. // 详单id
  177. BigDecimal detailsId = new BigDecimal((Integer) map.get("detailsId"));
  178. // 获取详单信息
  179. BmstruckDetailsOrder bmstruckDetailsOrder = bmstruckDetailsOrderMapper.selectByPrimaryKey(detailsId);
  180. // 将该详单状态变为已生成账单
  181. bmstruckDetailsOrder.setWetherToStatement(new BigDecimal(1));
  182. bmstruckDetailsOrder.setUpdateTime(new Date());
  183. bmstruckDetailsOrder.setUpdateUsername("admin");
  184. // 修改详单信息
  185. bmstruckDetailsOrderMapper.updateByPrimaryKeySelective(bmstruckDetailsOrder);
  186. // 新增中间表实体
  187. BmstruckDetailsStatement bmstruckDetailsStatement = new BmstruckDetailsStatement();
  188. //设置主键
  189. bmstruckDetailsStatement.setDetailsStatementId(detailsStatementId);
  190. bmstruckDetailsStatement.setStatementId(statementId);
  191. bmstruckDetailsStatement.setDetailsId(detailsId);
  192. // 设置常规字段
  193. bmstruckDetailsStatement.setInsertTime(new Date());
  194. bmstruckDetailsStatement.setInsertUsername("admin");
  195. bmstruckDetailsStatement.setInsertUpdateRemark("无");
  196. BigDecimal detailsAmount = new BigDecimal((Double) map.get("detailsAmount"));
  197. Double detailsAmountDouble = Double.valueOf(detailsAmount.toString());
  198. doubleTotalAmount += detailsAmountDouble;
  199. bmstruckDetailsStatementMapper.insertSelective(bmstruckDetailsStatement);
  200. }
  201. if (orderType == 1) {
  202. // 备注
  203. bmstruckStatement.setStatementRemark("计时汽运费账单");
  204. } else if (orderType == 2) {
  205. // 备注
  206. bmstruckStatement.setStatementRemark("计数汽运费账单");
  207. } else if (orderType == 3) {
  208. // 备注
  209. bmstruckStatement.setStatementRemark("计重汽运费账单");
  210. } else if (orderType == 4) {
  211. // 备注
  212. bmstruckStatement.setStatementRemark("包月汽运费账单");
  213. }
  214. bmstruckStatement.setStatementExcludTax(new BigDecimal(doubleTotalAmount));
  215. return bmstruckStatementMapper.insertSelective(bmstruckStatement);
  216. }
  217. @Override
  218. public int delete(BigDecimal statementId) {
  219. //通过账单id获取详单
  220. List<BigDecimal> list = bmstruckStatementMapper.getDetailById(statementId);
  221. for (BigDecimal detailsId : list
  222. ) {
  223. BmstruckDetailsOrder bmstruckDetailsOrder = new BmstruckDetailsOrder();
  224. bmstruckDetailsOrder.setDetailsId(detailsId);
  225. bmstruckDetailsOrder.setWetherToStatement(new BigDecimal(0));
  226. bmstruckDetailsOrder.setUpdateTime(new Date());
  227. bmstruckDetailsOrder.setUpdateUsername("admin");
  228. bmstruckDetailsOrderMapper.updateByPrimaryKeySelective(bmstruckDetailsOrder);
  229. }
  230. return bmstruckStatementMapper.deleteByPrimaryKey(statementId);
  231. }
  232. @Override
  233. public int update(BigDecimal statementId) {
  234. BmstruckStatement bmstruckStatement = new BmstruckStatement();
  235. bmstruckStatement.setStatementType(new BigDecimal(1));
  236. bmstruckStatement.setUpdateTime(new Date());
  237. bmstruckStatement.setUpdateUsername("admin");
  238. return bmstruckStatementMapper.updateByPrimaryKeySelective(bmstruckStatement);
  239. }
  240. }