OrderInvoiceServiceImpl.java 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. package com.goafanti.order.service.impl;
  2. import java.math.BigDecimal;
  3. import java.util.ArrayList;
  4. import java.util.Date;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import com.goafanti.common.dao.*;
  9. import com.goafanti.common.model.InvoiceLog;
  10. import com.goafanti.order.bo.*;
  11. import org.apache.commons.lang3.StringUtils;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import com.goafanti.common.constant.AFTConstants;
  15. import com.goafanti.common.enums.NoticeStatus;
  16. import com.goafanti.common.model.Admin;
  17. import com.goafanti.common.model.TOrderInvoice;
  18. import com.goafanti.common.model.TOrderNew;
  19. import com.goafanti.core.mybatis.BaseMybatisDao;
  20. import com.goafanti.core.mybatis.page.Pagination;
  21. import com.goafanti.core.shiro.token.TokenManager;
  22. import com.goafanti.order.service.OrderInvoiceService;
  23. import com.goafanti.order.service.OrderNewService;
  24. @Service
  25. public class OrderInvoiceServiceImpl extends BaseMybatisDao<TOrderInvoiceMapper> implements OrderInvoiceService {
  26. @Autowired
  27. private TOrderInvoiceMapper tOrderInvoiceMapper;
  28. @Autowired
  29. private TOrderNewMapper tOrderNewMapper;
  30. @Autowired
  31. private OrganizationManagementMapper organizationManagementMapper;
  32. @Autowired
  33. private AdminMapper adminMapper;
  34. @Autowired
  35. private OrderNewService orderNewService;
  36. @Autowired
  37. private TOrderMidMapper tOrderMidMapper;
  38. @Autowired
  39. private InvoiceLogMapper invoiceLogMapper;
  40. @Override
  41. public int createServiceOrder(TOrderInvoice o) {
  42. o.setCreateTime(new Date());
  43. sendNoticeAndEmail(o);
  44. //前端直接会直接调取上一个发起数据给新开票,防止前一个数据为审核后
  45. if (o.getApproval()==2)o.setApproval(1);
  46. if (o.getStatus()!=1)o.setStatus(1);
  47. Integer i=tOrderInvoiceMapper.insertSelective(o);
  48. addInvoiceLog(o.getId(),0);
  49. return i;
  50. }
  51. /**
  52. *
  53. * @param id 开票编号
  54. * @param status 0发起 1开票通过 2开票拒绝 3特批通过 4特批拒绝 5修改提交
  55. */
  56. void addInvoiceLog(Integer id, Integer status){
  57. InvoiceLog log = new InvoiceLog(id,status,TokenManager.getAdminId());
  58. invoiceLogMapper.insertSelective(log);
  59. }
  60. @Override
  61. public int updateServiceOrder(TOrderInvoice o) {
  62. sendNoticeAndEmail(o);
  63. addInvoiceLog(o.getId(),5);
  64. o.setApproval(1);
  65. o.setStatus(1);
  66. return tOrderInvoiceMapper.updateByPrimaryKeySelective(o);
  67. }
  68. /**
  69. * 开票提交发送站内消息及邮件
  70. * @param o
  71. */
  72. private void sendNoticeAndEmail(TOrderInvoice o) {
  73. List<String> aids = new ArrayList<>();
  74. if (o.getStatus()==1) {//发起
  75. TOrderNew t=tOrderNewMapper.selectByPrimaryKey(o.getOrderNo());
  76. if (o.getType()==0) {//省内
  77. if(o.getApproval()==0) {
  78. aids.add(organizationManagementMapper.selectByPrimaryKey(t.getOrderDep()).getFinanceId());
  79. }else {
  80. for (Admin admin : adminMapper.getAdminRoleList("湖南特批开票")) {
  81. aids.add(admin.getId());
  82. }
  83. }
  84. }else if (o.getType()==1) {//省外
  85. if(o.getApproval()==0) {
  86. aids.addAll(adminMapper.listNameByDepAndName(t.getOrderDep(), "营销管理员"));
  87. }else {
  88. aids.addAll(adminMapper.listNameByDepAndName(t.getOrderDep(), "公司管理"));
  89. }
  90. }
  91. }
  92. TOrderNewBo order = tOrderNewMapper.getSaleIdByOno(o.getOrderNo());
  93. orderNewService.pushGeneralSendNoticeAndEmail(aids, NoticeStatus.ORDER_INVPICE_START.getCode(),order, TokenManager.getAdminId(),0);
  94. }
  95. @SuppressWarnings("deprecation")
  96. @Override
  97. public boolean checkAmount(TOrderInvoice t) {
  98. TOrderNew tn=tOrderNewMapper.selectByPrimaryKey(t.getOrderNo());
  99. String i=tOrderInvoiceMapper.checkApplyAmount(t.getOrderNo(),t.getId());//新建时直接查所有数据,修改时除掉修改订单
  100. //处理精度问题
  101. BigDecimal q=t.getAmount().add(new BigDecimal(i)).setScale(4, BigDecimal.ROUND_DOWN);;
  102. BigDecimal w=tn.getTotalAmount();
  103. int flag=q.compareTo(w);
  104. if (flag>0) {
  105. return true;
  106. }
  107. return false;
  108. }
  109. @SuppressWarnings("unchecked")
  110. @Override
  111. public Pagination<TOrderInvoiceBo> financeOrderInvoiceList(InputOrderInvoiceBo o,Integer pageNo,
  112. Integer pageSize) {
  113. Map<String, Object> params = new HashMap<String, Object>();
  114. if(pageSize==null||pageSize<0)pageSize=10;
  115. if(pageNo==null||pageNo<0)pageNo=1;
  116. List<String> aDep=new ArrayList<>();
  117. //财务专员查看自己的
  118. if (TokenManager.hasRole(AFTConstants.FINANCE)) {
  119. params.put("financeId", TokenManager.getAdminId());
  120. }
  121. //财务经理
  122. if (TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)) {
  123. aDep=adminMapper.selectDepIdWithSpuerId(TokenManager.getAdminId());
  124. params.put("aDep", aDep);
  125. }
  126. if(StringUtils.isNotBlank(o.getOrderDep()))params.put("orderDep", o.getOrderDep());
  127. if(o.getType()!=null)params.put("type", o.getType());
  128. //营销管理员
  129. if (TokenManager.hasRole(AFTConstants.SALESMAN_ADMIN)) {
  130. Admin a=adminMapper.selectByPrimaryKey(TokenManager.getAdminId());
  131. aDep.add(a.getDepartmentId());
  132. params.put("aDep", aDep);
  133. }
  134. if (null !=o.getAll()){
  135. params.put("all",o.getAll());
  136. }else {
  137. params.put("all",0);
  138. }
  139. if(StringUtils.isNotBlank(o.getOrderNo()))params.put("orderNo", o.getOrderNo());
  140. if(StringUtils.isNotBlank(o.getName()))params.put("name", o.getName());
  141. if(null!=o.getApproval())params.put("approval", o.getApproval());
  142. if(null!=o.getStatus())params.put("status", o.getStatus());
  143. return (Pagination<TOrderInvoiceBo>)findPage("financeOrderInvoiceList", "financeOrderInvoiceCount", params, pageNo, pageSize);
  144. }
  145. @Override
  146. public TOrderInvoiceDetails selectByIdOrderInvoice(Integer id) {
  147. return tOrderInvoiceMapper.selectByInvoiceDitails(id);
  148. }
  149. @Override
  150. public TOrderInvoiceDetails getInvoiceDetails(String orderNo) {
  151. return tOrderInvoiceMapper.getInvoiceDetails(orderNo);
  152. }
  153. @SuppressWarnings("unchecked")
  154. @Override
  155. public Pagination<TOrderInvoiceBo> salesmanOrderInvoiceList( String orderNo,
  156. Integer pageNo, Integer pageSize) {
  157. Map<String, Object> params = new HashMap<String, Object>();
  158. if(pageSize==null||pageSize<0)pageSize=10;
  159. if(pageNo==null||pageNo<0)pageNo=1;
  160. if(StringUtils.isNotBlank(orderNo))params.put("orderNo", orderNo);
  161. return (Pagination<TOrderInvoiceBo>)findPage("salesmanOrderInvoiceList", "salesmanOrderInvoiceCount", params, pageNo, pageSize);
  162. }
  163. @Override
  164. public int updatefinanceExamine(Integer id, Integer examine, String reason) {
  165. TOrderInvoice t=new TOrderInvoice();
  166. t.setId(id);
  167. t.setRejectReason(reason);
  168. t.setStatus(examine);
  169. //examine 2通过 3拒绝
  170. List<String> aids = new ArrayList<>();
  171. TOrderInvoice t2=tOrderInvoiceMapper.selectByPrimaryKey(id);
  172. TOrderNew o=tOrderNewMapper.selectByPrimaryKey(t2.getOrderNo());
  173. Integer type=null;
  174. if(examine==3){
  175. type=NoticeStatus.ORDER_INVPICE_NO.getCode();
  176. aids.add(o.getSalesmanId());
  177. addInvoiceLog(id,2);
  178. }else if(examine==2) {
  179. type=NoticeStatus.ORDER_INVPICE_END.getCode();
  180. aids.add(o.getSalesmanId());
  181. //重新计算开票金额
  182. addInvoiceLog(id,1);
  183. }
  184. TOrderNewBo order = tOrderNewMapper.getSaleIdByOno(t2.getOrderNo());
  185. orderNewService.pushGeneralSendNoticeAndEmail(aids, type,order, TokenManager.getAdminId(),0);
  186. tOrderInvoiceMapper.updateByPrimaryKeySelective(t);
  187. if(examine==2)tOrderMidMapper.updateInvoice(t2.getOrderNo());
  188. return 1;
  189. }
  190. @SuppressWarnings("unchecked")
  191. @Override
  192. public Pagination<TOrderInvoiceBo> approvalOrderInvoiceList(Integer status,Integer approval,Integer type, String orderDep, String orderNo, String name,String userName,
  193. Integer pageNo, Integer pageSize) {
  194. Map<String, Object> params = new HashMap<String, Object>();
  195. if(pageSize==null||pageSize<0)pageSize=10;
  196. if(pageNo==null||pageNo<0)pageNo=1;
  197. if(StringUtils.isNotBlank(orderDep))params.put("orderDep", orderDep);
  198. if(StringUtils.isNotBlank(orderNo))params.put("orderNo", orderNo);
  199. if(StringUtils.isNotBlank(name))params.put("name", name);
  200. if(StringUtils.isNotBlank(userName))params.put("userName", userName);
  201. if(approval!=null)params.put("approval", approval);
  202. if(status!=null)params.put("status", status);
  203. //0省内 1省外 2查看所有省外
  204. if(type==0||type==1)params.put("type", type);
  205. if (type==2) {
  206. params.put("type", 1);
  207. params.put("special", 1);
  208. }
  209. if (type ==1&&!TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  210. //如果是省外则直接查本部门
  211. Admin a=adminMapper.selectByPrimaryKey(TokenManager.getAdminId());
  212. params.put("aDep", a.getDepartmentId());
  213. }
  214. return (Pagination<TOrderInvoiceBo>)findPage("approvalOrderInvoiceList", "approvalOrderInvoiceCount", params, pageNo, pageSize);
  215. }
  216. @Override
  217. public int updateapprovalExamine(Integer id, Integer examine, String reason) {
  218. TOrderInvoice t=new TOrderInvoice();
  219. t.setId(id);
  220. t.setRejectReason(reason);
  221. List<String> aids=new ArrayList<>();
  222. TOrderInvoice o=tOrderInvoiceMapper.selectByPrimaryKey(id);
  223. TOrderNew ts=tOrderNewMapper.selectByPrimaryKey(o.getOrderNo());
  224. //examine 2通过 3拒绝
  225. Integer type =null;
  226. if(examine==3) {
  227. t.setStatus(examine);
  228. type= NoticeStatus.ORDER_INVPICE_APPROVA_NO.getCode();
  229. aids.add(ts.getSalesmanId());
  230. addInvoiceLog(id,4);
  231. }else {
  232. t.setApproval(examine);
  233. addInvoiceLog(id,3);
  234. type= NoticeStatus.ORDER_INVPICE_APPROVA_YES.getCode();
  235. if (o.getType()==0) {
  236. aids.add(organizationManagementMapper.selectByPrimaryKey(ts.getOrderDep()).getFinanceId());
  237. }else if(o.getType()==1) {
  238. aids.addAll(adminMapper.listNameByDepAndName(ts.getOrderDep(), "营销管理员"));
  239. }
  240. }
  241. TOrderNewBo order = tOrderNewMapper.getSaleIdByOno(o.getOrderNo());
  242. orderNewService.pushGeneralSendNoticeAndEmail(aids,type,order, TokenManager.getAdminId(),0);
  243. return tOrderInvoiceMapper.updateByPrimaryKeySelective(t);
  244. }
  245. @Override
  246. public List<OutInvoiceLog> InvoiceLog(Integer id) {
  247. List<OutInvoiceLog> list=tOrderInvoiceMapper.selectInvoiceLog(id);
  248. return list;
  249. }
  250. }