| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- package com.goafanti.order.service.impl;
- import java.io.UnsupportedEncodingException;
- import java.math.BigDecimal;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import javax.mail.MessagingException;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.goafanti.admin.bo.AdminListBo;
- import com.goafanti.common.bo.EmailBo;
- import com.goafanti.common.dao.AdminMapper;
- import com.goafanti.common.dao.TOrderBackMapper;
- import com.goafanti.common.dao.TOrderBillNewMapper;
- import com.goafanti.common.dao.TOrderNewMapper;
- import com.goafanti.common.dao.TOrderRefundMapper;
- import com.goafanti.common.model.TOrderBack;
- import com.goafanti.common.model.TOrderBillNew;
- import com.goafanti.common.model.TOrderNew;
- import com.goafanti.common.model.TOrderRefund;
- import com.goafanti.common.utils.SendEmailUtil;
- import com.goafanti.common.utils.StringUtils;
- import com.goafanti.core.mybatis.BaseMybatisDao;
- import com.goafanti.core.mybatis.JDBCIdGenerator;
- import com.goafanti.core.mybatis.page.Pagination;
- import com.goafanti.core.shiro.token.TokenManager;
- import com.goafanti.order.bo.OrderListBo;
- import com.goafanti.order.bo.TOrderNewBo;
- import com.goafanti.order.service.FundManageOrderService;
- @Service
- public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper> implements FundManageOrderService {
-
- @Autowired
- private TOrderNewMapper tOrderNewMapper;
- @Autowired
- private AdminMapper adminMapper;
- @Autowired
- private TOrderBillNewMapper billNewMapper;
- @Autowired
- private TOrderBackMapper backMapper;
- @Autowired
- private TOrderRefundMapper refundMapper;
- @Autowired
- JDBCIdGenerator idGenerator;
- @SuppressWarnings("unchecked")
- @Override
- public Pagination<OrderListBo> allUnassignedOrder(OrderListBo order, Integer pageNo,
- Integer pageSize,Integer ob) {
-
- Map<String, Object> params = new HashMap<String, Object>();
- params.put("o", order);
- params.put("ob", ob);
- Pagination<OrderListBo> data = (Pagination<OrderListBo>)findPage("getAllUnassignedListOrder", "getAllUnassignedCountOrder", params, pageNo, pageSize);
- return data;
- }
-
- @Override
- public Integer updateDistributionFinance(String orderNo, String financeId, Integer approval) {
- // 先判断订单id和财务专员是否存在或者能够使用
- //判断是不是特批的数据
- if(approval != 2 && approval != 0){//特批未通过
- return -1;
- }
- TOrderNew onew = new TOrderNew();
- onew.setOrderNo(orderNo);
- onew.setDeleteSign(0);//正常
- onew.setProcessStatus(2);//已派财务管理员
- onew.setApproval(approval);//特批状态
- onew.setOrderStatus(2);//营销管理员审核通过
-
- int idCount = tOrderNewMapper.getCountByIdAndStatus(onew);
- int fidCount = adminMapper.getCountById(financeId);
- Integer r = null;
- if(idCount == 1 && fidCount == 1){
- //修改订单流程状态
- TOrderNew record = new TOrderNew();
- record.setOrderNo(orderNo);
- record.setFinanceId(financeId);
- record.setProcessStatus(3);
- r = tOrderNewMapper.updateByPrimaryKeySelective(record);
- }else{
- //返回错误标志 提示订单编号或者财务专员选择错误
- r = -2;
- }
- return r;
- }
- @SuppressWarnings("unchecked")
- @Override
- public Pagination<OrderListBo> financeList(OrderListBo order,
- Integer pageNo, Integer pageSize) {
- Map<String, Object> params = new HashMap<String, Object>();
- params.put("o", order);
- Pagination<OrderListBo> data = (Pagination<OrderListBo>)findPage("financeList", "financeCount", params, pageNo, pageSize);
- return data;
- }
- @Override
- public Integer updateReject(TOrderBack back) {
- // 是否已经收款
- BigDecimal bd = billNewMapper.getAmountByOid(back.getOrderNo());
- if(bd.compareTo(new BigDecimal(0.0)) == 1){
- return 0;//已经收款不能驳回
- }
- TOrderNewBo b = tOrderNewMapper.getSaleIdByOno(back.getOrderNo());//订单和订单负责人相关信息
- if(null == b || StringUtils.isBlank(b.getSalesmanId())){
- return -1;
- }
- //否 可以处理驳回
-
- //修改订单状态
- TOrderNew orderNew = new TOrderNew();
- orderNew.setOrderNo(back.getOrderNo());
- // TODO
- orderNew.setOrderStatus(5);
- int c = tOrderNewMapper.updateByPrimaryKeySelective(orderNew);
-
- //新增驳回数据
- if(c>0){
- back.setBackStatus(0);
- back.setInitiate(TokenManager.getAdminId());//发起人
- back.setAccept(b.getSalesmanId()); //查看该订单的负责人
- c = backMapper.insertSelective(back);
-
- if(StringUtils.isNotBlank(b.getEmail())){ //邮箱不为空发送邮件
- AdminListBo a = adminMapper.getDeptNameByAid(TokenManager.getAdminId());
- //发送驳回邮件
- String content = "<div>客户名称: "+ b.getUserName() +"</div><div>订单编号: " + back.getOrderNo() + "</div>";
- EmailBo bo = new EmailBo("订单驳回", b.getEmail(), b.getSalesmanName(), a.getDepartmentName(), a.getName(), content);
- try {
- SendEmailUtil.send(bo);
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (MessagingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- return c;
- }
- @Override
- public Integer addReceiptsFlow(TOrderBillNew billNew) {
-
- //判断有没有要加入的金额有没有超过总金额
- BigDecimal bill = billNewMapper.getAmountByOid(billNew.getOrderNo());
- //获得的单个订单金额数据(首付金额和总金额)
- TOrderNew o = tOrderNewMapper.selectByPrimaryKey(billNew.getOrderNo());
- if(null == o){
- return -2;
- }
- BigDecimal bd = bill.add(billNew.getTransactionAmount().abs());
- int lstaus = 0;
-
- //如果订单流水总额大于总金额 return -1
- //如果订单流水等于于总金额 lstaus 2
- //如果订单流水小于总金额大于首付 lstaus 1
- //如果订单流水小于首付 lstaus 0
-
- // 0 相等
- // -1 小于
- // 1 大于
- if(bd.compareTo(o.getTotalAmount()) == 1){
- return -1;//超过不能添加
- }else if(bd.compareTo(o.getTotalAmount()) == 0){
- lstaus = 2;
- }else if(bd.compareTo(o.getTotalAmount()) == -1 && bd.compareTo(o.getFirstAmount()) == 1){
- lstaus = 1;
- }
- //否则新增流水信息
- billNew.setBillNo(idGenerator.generateId().toString());
- billNew.setCreater(TokenManager.getAdminId());
- int result = billNewMapper.insertSelective(billNew);
-
- //修改订单结算金额和结算状态
- //如果已经首付并且流程状态是没有派给咨询师的修改流程状态为4
- TOrderNew orderNew = new TOrderNew();
- orderNew.setOrderNo(billNew.getOrderNo());
- orderNew.setSettlementAmount(bd);
- orderNew.setLiquidationStatus(lstaus);
- if(lstaus == 1 && o.getProcessStatus() == 3){
- orderNew.setProcessStatus(4);
- }
- if(result > 0){
- result = tOrderNewMapper.updateByPrimaryKeySelective(orderNew);
- }
-
- return result;
- }
- @Override
- public Integer updateChangeRefund(TOrderRefund refund) {
- //查看当前退单状态
- TOrderRefund d = refundMapper.selectByPrimaryKey(refund.getId());
- if(d.getRefundStatus() != 0){
- return -1;
- }
-
- //修改退单审核状态
- return refundMapper.updateRefundById(refund);
- }
- @Override
- public Integer addRefundFlow(TOrderBillNew billNew) {
- // 查看收款总金额
- BigDecimal bd = billNewMapper.getAmountByOid(billNew.getOrderNo());
- billNew.setTransactionAmount(billNew.getTransactionAmount().abs());//绝对值
- int lstaus = 3;
- //如果小于要退的金额 return -1
- //如果等于要退的金额 lstatus 4
- //如果大于 要退的金额 lstatus 3
- if(bd.compareTo(billNew.getTransactionAmount()) == -1){
- return -1;
- }else if(bd.compareTo(billNew.getTransactionAmount()) == 0){
- lstaus = 4;
- }
-
- //新增收款流水
- billNew.setBillNo(idGenerator.generateId().toString());
- billNew.setCreater(TokenManager.getAdminId());
- billNew.setTransactionAmount(billNew.getTransactionAmount().negate());// 取负数
- int result = billNewMapper.insertSelective(billNew);
-
- //修改订单数据结算状态和结算金额
- TOrderNew orderNew = new TOrderNew();
- orderNew.setOrderNo(billNew.getOrderNo());
- orderNew.setSettlementAmount(bd.add(billNew.getTransactionAmount()));
- orderNew.setLiquidationStatus(lstaus);
- if(lstaus == 4){//如果款项全部退完就更改订单状态,这里不一定待商榷
- orderNew.setProcessStatus(6);
- }
- if(result > 0){
- result = tOrderNewMapper.updateByPrimaryKeySelective(orderNew);
- }
- return result;
- }
- @Override
- public TOrderBillNew selectOneRefundFlow(String BillNo) {
- return billNewMapper.getOneRefundFlow(BillNo);
- }
- @Override
- public List<TOrderBillNew> selectOneOrderAllRefundFlow(String orderNo) {
- return billNewMapper.getOneOrderAllRefundFlow(orderNo);
- }
-
- }
|