TWarehouseAgreementServiceImpl.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. package com.ruoyi.warehouseBusiness.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.ruoyi.basicData.domain.TCorps;
  6. import com.ruoyi.basicData.domain.TFees;
  7. import com.ruoyi.basicData.domain.TGoods;
  8. import com.ruoyi.basicData.mapper.TCorpsMapper;
  9. import com.ruoyi.basicData.mapper.TFeesMapper;
  10. import com.ruoyi.basicData.mapper.TGoodsMapper;
  11. import com.ruoyi.common.core.domain.AjaxResult;
  12. import com.ruoyi.common.core.domain.entity.SysUser;
  13. import com.ruoyi.common.core.domain.model.LoginUser;
  14. import com.ruoyi.common.utils.DateUtils;
  15. import com.ruoyi.common.utils.StringUtils;
  16. import com.ruoyi.system.mapper.SysDeptMapper;
  17. import com.ruoyi.warehouseBusiness.domain.BillnoDel;
  18. import com.ruoyi.warehouseBusiness.domain.TWarehouseAgreement;
  19. import com.ruoyi.warehouseBusiness.domain.TWarehouseAgreementitems;
  20. import com.ruoyi.warehouseBusiness.mapper.BillnoDelMapper;
  21. import com.ruoyi.warehouseBusiness.mapper.TWarehouseAgreementMapper;
  22. import com.ruoyi.warehouseBusiness.mapper.TWarehouseAgreementitemsMapper;
  23. import com.ruoyi.warehouseBusiness.service.ITWarehouseAgreementService;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import java.math.BigDecimal;
  27. import java.util.*;
  28. /**
  29. * 仓储费Service业务层处理
  30. *
  31. * @author ruoyi
  32. * @date 2020-12-11
  33. */
  34. @Service
  35. public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementService {
  36. @Autowired
  37. private TWarehouseAgreementMapper tWarehouseAgreementMapper;
  38. @Autowired
  39. private TWarehouseAgreementitemsMapper tWarehouseAgreementitemsMapper;
  40. @Autowired
  41. private BillnoSerialServiceImpl billnoSerialServiceImpl;
  42. @Autowired
  43. private BillnoDelMapper billnoDelMapper;
  44. @Autowired
  45. private TCorpsMapper tCorpsMapper;
  46. @Autowired
  47. private TGoodsMapper tGoodsMapper;
  48. @Autowired
  49. private TFeesMapper tFeesMapper;
  50. @Autowired
  51. private SysDeptMapper sysDeptMapper;
  52. /**
  53. * 查询仓储费
  54. *
  55. * @param fId 仓储费ID
  56. * @return 仓储费
  57. */
  58. @Override
  59. public TWarehouseAgreement selectTWarehouseAgreementById(Long fId) {
  60. return tWarehouseAgreementMapper.selectTWarehouseAgreementById(fId);
  61. }
  62. @Override
  63. public Map<String, Object> selectTWarehouseAgreementById1(Long fId) {
  64. Map<String, Object> map = new HashMap<>();
  65. // 查询协议主表数据
  66. TWarehouseAgreement tWarehouseAgreement = tWarehouseAgreementMapper.selectTWarehouseAgreementById(fId);
  67. // 客户表
  68. List<Long> corpsId = new ArrayList<>();
  69. // 用户表
  70. List<SysUser> sysUserList = new ArrayList<>();
  71. // 商品
  72. List<Long> goodsId = new ArrayList<>();
  73. // 费用
  74. List<Long> feesId = new ArrayList<>();
  75. if (!StringUtils.isNull(tWarehouseAgreement)) {
  76. corpsId.add(tWarehouseAgreement.getfCorpid());
  77. goodsId.add(tWarehouseAgreement.getfGoodsid());
  78. map.put("tWarehouseAgreement", tWarehouseAgreement);
  79. }
  80. // 协议从表
  81. TWarehouseAgreementitems tWarehouseAgreementitems = new TWarehouseAgreementitems();
  82. tWarehouseAgreementitems.setfPid(fId);
  83. List<TWarehouseAgreementitems> tWarehouseAgreementitemss = tWarehouseAgreementitemsMapper.selectTWarehouseAgreementitemsList(tWarehouseAgreementitems);
  84. if (StringUtils.isNotEmpty(tWarehouseAgreementitemss)) {
  85. for (TWarehouseAgreementitems fees : tWarehouseAgreementitemss) {
  86. feesId.add(fees.getfFeeid());
  87. }
  88. }
  89. List<TCorps> corpsList = new ArrayList<>();
  90. List<Long> corpsIdList = StringUtils.integerDeduplication(corpsId);
  91. for (Long corpId : corpsIdList) {
  92. TCorps corps = tCorpsMapper.selectTCorpsById(corpId);
  93. if (StringUtils.isNotNull(corps)) {
  94. corpsList.add(corps);
  95. }
  96. }
  97. List<TGoods> goodsList = new ArrayList<>();
  98. List<Long> goodsIdList = StringUtils.integerDeduplication(goodsId);
  99. for (Long goods : goodsIdList) {
  100. TGoods tGoods = tGoodsMapper.selectTGoodsById(goods);
  101. if (StringUtils.isNotNull(tGoods)) {
  102. goodsList.add(tGoods);
  103. }
  104. }
  105. List<TFees> feesList = new ArrayList<>();
  106. List<Long> longList = StringUtils.integerDeduplication(feesId);
  107. for (Long fees : longList) {
  108. TFees tFees = tFeesMapper.selectTFeesById(fees);
  109. if (StringUtils.isNotNull(tFees)) {
  110. feesList.add(tFees);
  111. }
  112. }
  113. map.put("corps", corpsList);
  114. map.put("goodsList", goodsList);
  115. map.put("feesList", feesList);
  116. map.put("tWarehouseAgreementitems", tWarehouseAgreementitemss);
  117. map.put("dept", sysDeptMapper.selectDeptById(tWarehouseAgreement.getfDeptid()));
  118. return map;
  119. }
  120. /**
  121. * 查询仓储费列表
  122. *
  123. * @param tWarehouseAgreement 仓储费
  124. * @return 仓储费
  125. */
  126. @Override
  127. public List<Map<String, Object>> selectTWarehouseAgreementList1(TWarehouseAgreement tWarehouseAgreement) {
  128. return tWarehouseAgreementMapper.selectTWarehouseAgreementList1(tWarehouseAgreement);
  129. }
  130. /**
  131. * 查询仓储费列表
  132. *
  133. * @param tWarehouseAgreement 仓储费
  134. * @return 仓储费
  135. */
  136. @Override
  137. public List<TWarehouseAgreement> selectTWarehouseAgreementList(TWarehouseAgreement tWarehouseAgreement) {
  138. return tWarehouseAgreementMapper.selectTWarehouseAgreementList(tWarehouseAgreement);
  139. }
  140. /**
  141. * 新增
  142. * @param agreement
  143. * @param agreementitems
  144. * @param loginUser
  145. * @return
  146. */
  147. @Override
  148. public AjaxResult insertTWarehouseAgreement(String agreement, String agreementitems, LoginUser loginUser,int fFeetypeid) {
  149. Long fPid = null;
  150. TWarehouseAgreement tWarehouseAgreement = JSONArray.parseObject(agreement, TWarehouseAgreement.class);
  151. if(StringUtils.isNull(tWarehouseAgreement.getfId())){
  152. // 如果是新数据
  153. tWarehouseAgreement.setCreateBy(loginUser.getUser().getUserName());
  154. // 业务编码
  155. String billNo = billnoSerialServiceImpl.getBillNo("WA", new Date());
  156. tWarehouseAgreement.setfBillno(billNo);
  157. tWarehouseAgreement.setCreateBy(loginUser.getUser().getUserName());
  158. tWarehouseAgreement.setfDeptid(loginUser.getUser().getDeptId());
  159. tWarehouseAgreement.setfFeetypeid((long) fFeetypeid);
  160. tWarehouseAgreementMapper.insertTWarehouseAgreement(tWarehouseAgreement);
  161. fPid = tWarehouseAgreement.getfId();
  162. }else{
  163. fPid = tWarehouseAgreement.getfId();
  164. tWarehouseAgreement.setUpdateBy(loginUser.getUser().getUserName());
  165. tWarehouseAgreement.setUpdateTime(new Date());
  166. tWarehouseAgreementMapper.updateTWarehouseAgreement(tWarehouseAgreement);
  167. tWarehouseAgreementitemsMapper.deleteByFPid(fPid);
  168. }
  169. // 从表添加
  170. if (StringUtils.isNotNull(agreementitems)) {
  171. JSONArray jsonDrArray = JSONArray.parseArray(agreementitems);
  172. List<TWarehouseAgreementitems> tWarehouseAgreementitemsList = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehouseAgreementitems.class);
  173. for (TWarehouseAgreementitems tWarehouseAgreementitems : tWarehouseAgreementitemsList) {
  174. tWarehouseAgreementitems.setfPid(fPid);
  175. tWarehouseAgreementitems.setCreateBy(loginUser.getUser().getUserName());
  176. tWarehouseAgreementitems.setCreateTime(new Date());
  177. tWarehouseAgreementitemsMapper.insertTWarehouseAgreementitems(tWarehouseAgreementitems);
  178. }
  179. }
  180. return AjaxResult.success();
  181. }
  182. /**
  183. * 修改仓储费
  184. *
  185. * @param tWarehouseAgreement 仓储费
  186. * @return 结果
  187. */
  188. @Override
  189. public int updateTWarehouseAgreement(TWarehouseAgreement tWarehouseAgreement) {
  190. tWarehouseAgreement.setUpdateTime(DateUtils.getNowDate());
  191. return tWarehouseAgreementMapper.updateTWarehouseAgreement(tWarehouseAgreement);
  192. }
  193. /**
  194. * 批量删除仓储费
  195. *
  196. * @param fIds 需要删除的仓储费ID
  197. * @return 结果
  198. */
  199. @Override
  200. public int deleteTWarehouseAgreementByIds(Long[] fIds) {
  201. // 取出业务编号、 放入 billno_del
  202. for(Long id:fIds){
  203. // 1、查询主表信息
  204. TWarehouseAgreement tWarehouseAgreement = tWarehouseAgreementMapper.selectTWarehouseAgreementById(id);
  205. // 2、业务编号、客存编号 放入 billno_del
  206. BillnoDel billnoDel =new BillnoDel();
  207. billnoDel.setBillType("WA");
  208. billnoDel.setBillNo(tWarehouseAgreement.getfBillno());
  209. billnoDelMapper.insertBillnoDel(billnoDel);
  210. }
  211. return tWarehouseAgreementMapper.deleteTWarehouseAgreementByIds(fIds);
  212. }
  213. /**
  214. * 删除仓储费信息
  215. *
  216. * @param fId 仓储费ID
  217. * @return 结果
  218. */
  219. @Override
  220. public int deleteTWarehouseAgreementById(Long fId) {
  221. return tWarehouseAgreementMapper.deleteTWarehouseAgreementById(fId);
  222. }
  223. /**
  224. * 计算存储费用
  225. * @author shanxin
  226. * @param fCorpid 出库客户Id
  227. * @param fGoodsid 物资类型Id
  228. * @param days 时长天数
  229. * @param feeUnitid 计价单位
  230. * @param itemNums 数量
  231. * @return
  232. */
  233. public Map<String, Object> getCarryingCost(Long fCorpid,
  234. Long fGoodsid,
  235. Long days,
  236. Long feeUnitid,
  237. Long itemNums) {
  238. Map<String, Object> map = new HashMap<>();
  239. if (null == fCorpid ||
  240. null == fGoodsid ||
  241. null == days ||
  242. null == feeUnitid ||
  243. null == itemNums) {
  244. return null;
  245. }
  246. List<TWarehouseAgreementitems> itemList =
  247. this.tWarehouseAgreementitemsMapper.getItemsBytWarehouseAgreementMsg(fCorpid,fGoodsid,feeUnitid);
  248. if (CollUtil.isEmpty(itemList)) {
  249. return null;
  250. }
  251. BigDecimal money = new BigDecimal(0);
  252. Long dayLength = 0L;
  253. Long feeId = 0L;
  254. for (TWarehouseAgreementitems tWarehouseAgreementitems : itemList) {
  255. if (days < 1) break;
  256. dayLength = tWarehouseAgreementitems.getfEndays() - tWarehouseAgreementitems.getfFromdays() + 1L;
  257. if (days >= dayLength) {
  258. feeId = tWarehouseAgreementitems.getfFeeid();
  259. money = money.add(this.getCalculate(itemNums,tWarehouseAgreementitems.getfPrice(),dayLength));
  260. days -= dayLength;
  261. } else {
  262. feeId = tWarehouseAgreementitems.getfFeeid();
  263. money = money.add(this.getCalculate(itemNums,feeUnitid,days));
  264. }
  265. }
  266. map.put("amt", money);
  267. map.put("feeId", feeId);
  268. return map;
  269. }
  270. /**
  271. * 数量 * 单价 * 天数
  272. * @param itemNums 数量
  273. * @param unitPrice 单价
  274. * @param dateLength 天数
  275. * @return
  276. */
  277. public BigDecimal getCalculate (Long itemNums,Long unitPrice,Long dateLength) {
  278. BigDecimal money = new BigDecimal(0);
  279. BigDecimal itemNumsBig = new BigDecimal(itemNums);
  280. BigDecimal unitPriceBig = new BigDecimal(unitPrice);
  281. BigDecimal bigDaysBig = new BigDecimal(dateLength);
  282. money = itemNumsBig.multiply(unitPriceBig).multiply(bigDaysBig);
  283. return money;
  284. }
  285. }