OrderChangeServiceImpl.java 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. package com.goafanti.order.service.impl;
  2. import java.math.BigDecimal;
  3. import java.text.ParseException;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.UUID;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import com.goafanti.common.bo.Error;
  11. import com.goafanti.common.constant.AFTConstants;
  12. import com.goafanti.common.dao.NewOrderChangeMapper;
  13. import com.goafanti.common.dao.OrderChangeLogMapper;
  14. import com.goafanti.common.dao.TOrderDunMapper;
  15. import com.goafanti.common.dao.TOrderNewMapper;
  16. import com.goafanti.common.dao.TOrderTaskMapper;
  17. import com.goafanti.common.error.BusinessException;
  18. import com.goafanti.common.model.OrderChangeLog;
  19. import com.goafanti.common.model.TOrderDun;
  20. import com.goafanti.common.model.TOrderNew;
  21. import com.goafanti.common.model.NewOrderChange;
  22. import com.goafanti.common.utils.DateUtils;
  23. import com.goafanti.common.utils.StringUtils;
  24. import com.goafanti.core.mybatis.BaseMybatisDao;
  25. import com.goafanti.core.mybatis.JDBCIdGenerator;
  26. import com.goafanti.core.mybatis.page.Pagination;
  27. import com.goafanti.core.shiro.token.TokenManager;
  28. import com.goafanti.order.bo.NewOrderChangeBo;
  29. import com.goafanti.order.bo.OrderChangeLogBo;
  30. import com.goafanti.order.bo.TOrderTaskBo;
  31. import com.goafanti.order.service.OrderChangeService;
  32. import com.goafanti.order.service.OrderService;
  33. @Service
  34. public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper> implements OrderChangeService {
  35. @Autowired
  36. private NewOrderChangeMapper newOrderChangeMapper;
  37. @Autowired
  38. private OrderChangeLogMapper orderChangeLogMapper;
  39. @Autowired
  40. private TOrderNewMapper tOrderNewMapper;
  41. @Autowired
  42. private TOrderDunMapper tOrderDunMapper;
  43. @Autowired
  44. private TOrderTaskMapper tOrderTaskMapper;
  45. @Autowired
  46. private OrderService orderService;
  47. @Autowired
  48. private JDBCIdGenerator idGenerator;
  49. @Override
  50. public int addOrderChange(NewOrderChangeBo t) {
  51. TOrderNew ton=new TOrderNew();
  52. ton.setOrderNo(t.getOrderNo());
  53. ton.setDeleteSign(2);//将订单置为锁定
  54. t.setProcessState(1);//设置营销管理员来审核
  55. tOrderNewMapper.updateByPrimaryKeySelective(ton);
  56. newOrderChangeMapper.insertSelective(t);
  57. NewOrderChangeBo ncb=newOrderChangeMapper.selectByorderNo(t.getOrderNo());
  58. OrderChangeLog ocl=new OrderChangeLog();
  59. ocl.setAuditor(TokenManager.getAdminId());
  60. ocl.setOrderNo(t.getOrderNo());
  61. ocl.setRemarks("发起了订单变更");
  62. ocl.setChangeId(ncb.getId());
  63. ocl.setStatus(0);
  64. orderChangeLogMapper.insertSelective(ocl);
  65. return 1;
  66. }
  67. @Override
  68. public NewOrderChangeBo orderChangeDetails(String orderNo) {
  69. NewOrderChangeBo nb=newOrderChangeMapper.selectByorderNo(orderNo);
  70. return nb;
  71. }
  72. @Override
  73. public int pushOrderChangeAudit(String orderNo, String remarks, Integer status,Integer processState) {
  74. NewOrderChangeBo nb=newOrderChangeMapper.selectByorderNo(orderNo);
  75. if (processState==null||(nb.getProcessState()!=9&&processState !=nb.getProcessState()) ) {
  76. throw new BusinessException(new Error( "变更流程与您所操作流程不匹配","变更流程与您所操作流程不匹配"));
  77. }
  78. if (nb.getStatus()==4) {
  79. throw new BusinessException(new Error( "变更流程已通过审核","变更流程已通过审核"));
  80. }
  81. //2通过 3驳回
  82. if (status==2) {
  83. //变更类型 0退单退款 1项目及金额变更 2仅项目变更 3仅金额变更 4重报 5赠送
  84. if(nb.getType()==0){
  85. if (nb.getChangeAmount().compareTo(new BigDecimal("0.2"))<0) {//小于则总裁通过,大于则董事长
  86. if(nb.getProcessState()==7) {//项目变更通过
  87. changgeAdopt(nb);}else {nb.setProcessState(nb.getProcessState()+1);}
  88. }else {
  89. if(nb.getProcessState()==8) {//项目变更通过
  90. changgeAdopt(nb);}else {nb.setProcessState(nb.getProcessState()+1);}
  91. }
  92. }else {
  93. if(nb.getProcessState()==9) {changgeAdopt(nb);}//项目变更通过
  94. //流程状态 0营销员 1营销管理员 2技术员 3技术经理 4技术总监 5财务专员(退单) 6财务总监 7总裁 8董事长 9 财务专员(非退单)
  95. if (nb.getProcessState()==1) nb.setProcessState(7);
  96. else if (nb.getProcessState()==7)nb.setProcessState(9);
  97. }
  98. }else {
  99. nb.setProcessState(0);
  100. }
  101. OrderChangeLog ocl=new OrderChangeLog();
  102. ocl.setAuditor(TokenManager.getAdminId());
  103. ocl.setOrderNo(orderNo);
  104. ocl.setRemarks(remarks);
  105. ocl.setChangeId(nb.getId());
  106. ocl.setStatus(status);
  107. orderChangeLogMapper.insertSelective(ocl);
  108. newOrderChangeMapper.updateByPrimaryKeySelective(nb);
  109. return 1;
  110. }
  111. private void changgeAdopt(NewOrderChangeBo nb) {
  112. TOrderNew t1=tOrderNewMapper.selectByPrimaryKey(nb.getOrderNo());
  113. List<TOrderDun> td1=tOrderDunMapper.selectByOrderNo(nb.getOrderNo());
  114. List<TOrderTaskBo> tt1=tOrderTaskMapper.selectOrderTask(nb.getOrderNo());
  115. String newOrderNo=idGenerator.generateId().toString();
  116. t1.setOrderNo(newOrderNo);
  117. tOrderNewMapper.insertSelective(t1);
  118. for (TOrderTaskBo tOrderTaskBo : tt1) {
  119. tOrderTaskBo.setId(null);
  120. tOrderTaskBo.setOrderNo(newOrderNo);
  121. tOrderTaskMapper.insertSelective(tOrderTaskBo);
  122. }
  123. for (TOrderDun tOrderDun : td1) {
  124. tOrderDun.setId(UUID.randomUUID().toString());
  125. tOrderDun.setOrderNo(newOrderNo);
  126. tOrderDunMapper.insertSelective(tOrderDun);
  127. }
  128. nb.setStatus(4);
  129. //将订单恢复正常
  130. TOrderNew orderNew =new TOrderNew();
  131. TOrderNew additionalOrder =new TOrderNew();
  132. String additionalOrderNo;
  133. orderNew.setOrderNo(nb.getOrderNo());
  134. orderNew.setDeleteSign(4);//设置为变更中
  135. orderNew.setPrimaryOrder(newOrderNo);
  136. if (nb.getType()==4||nb.getType()==5) {//重报或者附加
  137. additionalOrderNo=idGenerator.generateId().toString();
  138. orderNew.setAdditionalOrder(additionalOrderNo);
  139. additionalOrder.setOrderNo(additionalOrderNo);
  140. additionalOrder.setOrderType(t1.getOrderType());
  141. additionalOrder.setBuyerId(t1.getBuyerId());
  142. tOrderNewMapper.insertSelective(additionalOrder);
  143. }
  144. tOrderNewMapper.updateByPrimaryKeySelective(orderNew);
  145. }
  146. @Override
  147. public boolean checkOderNo(String orderNo) {
  148. int i=newOrderChangeMapper.checkOderNo(orderNo);
  149. if (i>0) {
  150. return true;
  151. }
  152. return false;
  153. }
  154. @Override
  155. public List<OrderChangeLogBo> selectOrderChangeLogList(String changeId) {
  156. return orderChangeLogMapper.selectOrderChangeLogList(changeId);
  157. }
  158. @SuppressWarnings("unchecked")
  159. @Override
  160. public Pagination<NewOrderChangeBo> selectOrderChangeList(String userName,Integer processState,Integer timeType,String startTime,String endTime,
  161. String depId,String salesmanName,Integer complete,Integer pageSize, Integer pageNo) {
  162. Map<String, Object> parameter=new HashMap<String, Object>();
  163. if(pageSize==null||pageSize<0)pageSize=10;
  164. if(pageNo==null||pageNo<0)pageNo=1;
  165. parameter.put("processState", processState==null?0:processState);
  166. parameter.put("complete", complete==null?0:complete);
  167. if (StringUtils.isNotBlank(userName)) parameter.put("userName", userName);
  168. if (null!=processState) parameter.put("processState", processState);
  169. if (null!=timeType) parameter.put("timeType", timeType);
  170. if (StringUtils.isNotBlank(startTime)) parameter.put("startTime", startTime);
  171. if (StringUtils.isNotBlank(endTime)) parameter.put("endTime", endTime+" 23:59:59");
  172. if (StringUtils.isNotBlank(depId)) parameter.put("depId", depId);
  173. if (StringUtils.isNotBlank(salesmanName)) parameter.put("salesmanName", salesmanName);
  174. parameter.put("aid", TokenManager.getAdminId());
  175. parameter.put("deps", orderService.selectMyDeps());
  176. Pagination<NewOrderChangeBo> data = (Pagination<NewOrderChangeBo>)findPage("selectOrderChangeList", "selectOrderChangeCount", parameter, pageNo, pageSize);
  177. return data;
  178. }
  179. @Override
  180. public int updateOrderChange(NewOrderChangeBo t,Integer changeType) {
  181. NewOrderChange noc=new NewOrderChange();
  182. noc.setId(t.getId());
  183. if (changeType==0) {
  184. noc.setRemarks(t.getRemarks());
  185. noc.setType(t.getType());
  186. noc.setVoucherUrl(t.getVoucherUrl());
  187. noc.setTotalAmount(t.getTotalAmount());
  188. noc.setSettlementAmount(t.getSettlementAmount());
  189. noc.setChangeAmount(t.getChangeAmount());
  190. noc.setApplicant(t.getApplicant());
  191. noc.setDepName(t.getDepName());
  192. }else if(changeType==1) {
  193. noc.setProjectState(t.getProjectState());
  194. noc.setZxsCost(t.getZxsCost());
  195. noc.setZxsRemarks(t.getZxsRemarks());
  196. }else if (changeType==2) {
  197. try {
  198. noc.setPaymentTime(DateUtils.StringToDate(t.getPaymentTimes(), AFTConstants.YYYYMMDD));
  199. noc.setInvoiceTime(DateUtils.StringToDate(t.getInvoiceTimes(), AFTConstants.YYYYMMDD));
  200. } catch (ParseException e) {
  201. e.printStackTrace();
  202. }
  203. noc.setPaymentAmount(t.getPaymentAmount());
  204. noc.setInvoiceAmount(t.getInvoiceAmount());
  205. noc.setInvoiceType(t.getInvoiceType());
  206. noc.setCwCost(t.getCwCost());
  207. noc.setRefundableAmount(t.getRefundableAmount());
  208. noc.setCwRemarks(t.getCwRemarks());
  209. }
  210. return newOrderChangeMapper.updateByPrimaryKeySelective(noc);
  211. }
  212. }