| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 |
- package com.goafanti.order.service.impl;
- import java.math.BigDecimal;
- import java.text.ParseException;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.UUID;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.goafanti.common.bo.Error;
- import com.goafanti.common.constant.AFTConstants;
- import com.goafanti.common.dao.NewOrderChangeMapper;
- import com.goafanti.common.dao.OrderChangeLogMapper;
- import com.goafanti.common.dao.OrderExamineMapper;
- import com.goafanti.common.dao.OrderRefundInvoiceMapper;
- import com.goafanti.common.dao.TOrderBillNewMapper;
- import com.goafanti.common.dao.TOrderDunMapper;
- import com.goafanti.common.dao.TOrderInvoiceMapper;
- import com.goafanti.common.dao.TOrderLogMapper;
- import com.goafanti.common.dao.TOrderNewMapper;
- import com.goafanti.common.dao.TOrderTaskMapper;
- import com.goafanti.common.error.BusinessException;
- import com.goafanti.common.model.OrderChangeLog;
- import com.goafanti.common.model.OrderExamine;
- import com.goafanti.common.model.OrderRefundInvoice;
- import com.goafanti.common.model.TOrderDun;
- import com.goafanti.common.model.TOrderNew;
- import com.goafanti.common.model.NewOrderChange;
- import com.goafanti.common.utils.DateUtils;
- 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.BillBo;
- import com.goafanti.order.bo.InvoiceBo;
- import com.goafanti.order.bo.NewOrderChangeBo;
- import com.goafanti.order.bo.OrderChangeLogBo;
- import com.goafanti.order.bo.TOrderLogBo;
- import com.goafanti.order.bo.TOrderTaskBo;
- import com.goafanti.order.service.OrderChangeService;
- import com.goafanti.order.service.OrderService;
- @Service
- public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper> implements OrderChangeService {
- @Autowired
- private NewOrderChangeMapper newOrderChangeMapper;
- @Autowired
- private OrderChangeLogMapper orderChangeLogMapper;
- @Autowired
- private TOrderNewMapper tOrderNewMapper;
- @Autowired
- private TOrderDunMapper tOrderDunMapper;
- @Autowired
- private TOrderLogMapper tOrderLogMapper;
- @Autowired
- private TOrderTaskMapper tOrderTaskMapper;
- @Autowired
- private TOrderBillNewMapper tOrderBillNewMapper;
- @Autowired
- private TOrderInvoiceMapper tOrderInvoiceMapper;
- @Autowired
- private OrderRefundInvoiceMapper orderRefundInvoiceMapper;
- @Autowired
- private OrderExamineMapper orderExamineMapper;
- @Autowired
- private OrderService orderService;
- @Autowired
- private JDBCIdGenerator idGenerator;
-
-
-
- @Override
- public int addOrderChange(NewOrderChangeBo t,String startRemarks) {
- TOrderNew ton=new TOrderNew();
- ton.setOrderNo(t.getOrderNo());
- ton.setDeleteSign(2);//将订单置为锁定
- t.setProcessState(1);//设置营销管理员来审核
- tOrderNewMapper.updateByPrimaryKeySelective(ton);
- BigDecimal invoiceAmount=tOrderInvoiceMapper.conutAmountByOrderNo(t.getOrderNo());
- t.setInvoiceAmount(invoiceAmount);//开票金额
- BigDecimal paymentAmount=tOrderBillNewMapper.conutAmountByOrderNo(t.getOrderNo());
- t.setPaymentAmount(paymentAmount);//收款金额
- //预计成本与预计退款:预计成本=项目价格*数量 预计退款=收款-预计成本
- BigDecimal estimateCost=new BigDecimal(tOrderTaskMapper.selectEstimateCost(t.getOrderNo()));
- t.setEstimateCost(estimateCost);
- t.setEstimateRefundable(paymentAmount.subtract(estimateCost));
-
- newOrderChangeMapper.insertSelective(t);
- NewOrderChangeBo ncb=newOrderChangeMapper.selectByorderNo(t.getOrderNo());
- OrderChangeLog ocl=new OrderChangeLog();
- ocl.setAuditor(TokenManager.getAdminId());
- ocl.setOrderNo(t.getOrderNo());
- ocl.setRemarks(startRemarks);
- ocl.setChangeId(ncb.getId());
- ocl.setStatus(0);
- orderChangeLogMapper.insertSelective(ocl);
- return 1;
- }
-
- /*
- * 新增审核流程中的
- */
- private void insertOrderExamine(String orderNo) {
- List<TOrderTaskBo> list=tOrderTaskMapper.selectOrderTask(orderNo);
- for (TOrderTaskBo t : list) {
- if (t.getConsultantId()!=null) {
- OrderExamine o=new OrderExamine();
- o.setAid(t.getConsultantId());
- o.setOrderNo(orderNo);
- o.setCreateTime(new Date());
- o.setType(0);//咨询师
- o.setStatus(0);//正常
- orderExamineMapper.insertSelective(o);
- }
- if (t.getConsultantId()!=null) {
- OrderExamine o=new OrderExamine();
- o.setAid(t.getConsultantId());
- o.setOrderNo(orderNo);
- o.setCreateTime(new Date());
- o.setType(1);//咨询师经理
- o.setStatus(0);//正常
- orderExamineMapper.insertSelective(o);
- }
- }
-
-
- }
- @Override
- public NewOrderChangeBo orderChangeDetails(String orderNo) {
- NewOrderChangeBo nb=newOrderChangeMapper.selectByorderNo(orderNo);
- return nb;
- }
- @Override
- public NewOrderChangeBo orderChangeDetailsById(Integer id) {
- NewOrderChangeBo nb=newOrderChangeMapper.selectById(id);
- return nb;
- }
- @Override
- public int pushOrderChangeAudit(String orderNo, String remarks, Integer status,Integer processState,Integer rejectState) {
- NewOrderChangeBo nb=newOrderChangeMapper.selectByorderNo(orderNo);
- if (processState==null||(nb.getProcessState()!=9&&processState !=nb.getProcessState()) ) {
- throw new BusinessException(new Error( "变更流程与您所操作流程不匹配","变更流程与您所操作流程不匹配"));
- }
- if (nb.getStatus()==4) {
- throw new BusinessException(new Error( "变更流程已通过审核","变更流程已通过审核"));
- }
- //2通过 3驳回
- if (status==2) {
- //变更类型 0退单退款 1项目及金额变更 2仅项目变更 3仅金额变更 4重报 5赠送
- if(nb.getType() !=null){
- if (nb.getChangeAmount().compareTo(new BigDecimal("0.2"))<0) {//小于则总裁通过,大于则董事长
- if(nb.getProcessState()==7) {//总裁项目变更通过
- nb.setStatus(2);
- }
- }else {
- if(nb.getProcessState()==8) {//董事长项目变更通过
- nb.setStatus(2);
- }
- }
- if(nb.getProcessState()==1){//营销管理通过则设置技术管理员通过表
- nb.setProcessState(nb.getProcessState()+1);
- insertOrderExamine(orderNo);
- }else if(nb.getProcessState()==2){//咨询师
- //找出当时人的审核改为通过
- orderExamineMapper.updateByOrderNoAndAid(orderNo,TokenManager.getAdminId(),0);
- //全部通过了则跳下个流程
- if (orderExamineMapper.checkCountStatus(orderNo,0)<1) {
- nb.setProcessState(nb.getProcessState()+1);
- }
- }else if(nb.getProcessState()==3){//咨询师经理
- //找出当时人的审核改为通过
- orderExamineMapper.updateByOrderNoAndAid(orderNo,TokenManager.getAdminId(),1);
- //全部通过了则跳下个流程
- if (orderExamineMapper.checkCountStatus(orderNo,1)<1) {
- nb.setProcessState(nb.getProcessState()+1);
- }
- }else if(nb.getProcessState()!=7&&nb.getProcessState()!=8) {
- nb.setProcessState(nb.getProcessState()+1);
- }
- }
- /*else {
- if(nb.getProcessState()==9) {
- //changgeAdopt(nb); 取消订单变更完成
- }
- //流程状态 0营销员 1营销管理员 2技术员 3技术经理 4技术总监 5财务专员(退单) 6财务总监 7总裁 8董事长 9 财务专员(非退单)
- if (nb.getProcessState()==1) nb.setProcessState(7);
- else if (nb.getProcessState()==7)nb.setProcessState(9);
- }*/ //去掉第二条线
- if(nb.getStatus()==3) {
- nb.setStatus(1);//如果驳回数据则改为正常数据
- }
- }else {
- nb.setProcessState(rejectState);
- nb.setStatus(3);//订单变更设置为驳回
- }
- OrderChangeLog ocl=new OrderChangeLog();
- ocl.setAuditor(TokenManager.getAdminId());
- ocl.setOrderNo(orderNo);
- ocl.setRemarks(remarks);
- ocl.setChangeId(nb.getId());
- ocl.setStatus(status);
- orderChangeLogMapper.insertSelective(ocl);
- newOrderChangeMapper.updateByPrimaryKeySelective(nb);
- return 1;
- }
- private void changgeAdopt(NewOrderChangeBo nb) {
- TOrderNew t1=tOrderNewMapper.selectByPrimaryKey(nb.getOrderNo());
- List<TOrderDun> td1=tOrderDunMapper.selectByOrderNo(nb.getOrderNo());
- List<TOrderTaskBo> tt1=tOrderTaskMapper.selectOrderTask(nb.getOrderNo());
- List<TOrderLogBo> tl1=tOrderLogMapper.selectOrderByNo(nb.getOrderNo());
- String newOrderNo=idGenerator.generateId().toString();
- t1.setOrderNo(newOrderNo);
- t1.setDeleteSign(1);//将原订单作废,只能查看
- tOrderNewMapper.insertSelective(t1);
- for (TOrderTaskBo tOrderTaskBo : tt1) {
- tOrderTaskBo.setId(null);
- tOrderTaskBo.setOrderNo(newOrderNo);
- tOrderTaskMapper.insertSelective(tOrderTaskBo);
- }
- for (TOrderDun tOrderDun : td1) {
- tOrderDun.setId(UUID.randomUUID().toString());
- tOrderDun.setOrderNo(newOrderNo);
- tOrderDunMapper.insertSelective(tOrderDun);
- }
- for (TOrderLogBo tOrderLogBo : tl1) {
- tOrderLogBo.setId(null);
- tOrderLogBo.setOrderNo(newOrderNo);
- tOrderLogMapper.insertSelective(tOrderLogBo);
- }
- nb.setStatus(4);
- //将订单恢复正常
- TOrderNew orderNew =new TOrderNew();
- TOrderNew additionalOrder =new TOrderNew();
- String additionalOrderNo;
- orderNew.setOrderNo(nb.getOrderNo());
- orderNew.setDeleteSign(3);//设置为变更中
- orderNew.setPrimaryOrder(newOrderNo);
- if (nb.getType()==4||nb.getType()==5) {//重报或者赠送
- additionalOrderNo=idGenerator.generateId().toString();
- orderNew.setAdditionalOrder(additionalOrderNo);
- additionalOrder.setOrderNo(additionalOrderNo);
- additionalOrder.setCreater(TokenManager.getAdminId());
- additionalOrder.setContractNo(t1.getContractNo());
- additionalOrder.setSalesmanId(t1.getSalesmanId());
- additionalOrder.setOrderType(t1.getOrderType());
- additionalOrder.setBuyerId(t1.getBuyerId());
- tOrderNewMapper.insertSelective(additionalOrder);
- }
- tOrderNewMapper.updateByPrimaryKeySelective(orderNew);
-
- }
- @Override
- public boolean checkOderNo(String orderNo) {
- int i=newOrderChangeMapper.checkOderNo(orderNo);
- if (i>0) {
- return true;
- }
- return false;
- }
- @Override
- public List<OrderChangeLogBo> selectOrderChangeLogList(String changeId) {
- return orderChangeLogMapper.selectOrderChangeLogList(changeId);
- }
- @SuppressWarnings("unchecked")
- @Override
- public Pagination<NewOrderChangeBo> selectOrderChangeList(String userName,Integer processState,Integer timeType,String startTime,String endTime,
- String depId,String salesmanName,Integer complete,Integer pageSize, Integer pageNo) {
- Map<String, Object> parameter=new HashMap<String, Object>();
- if(pageSize==null||pageSize<0)pageSize=10;
- if(pageNo==null||pageNo<0)pageNo=1;
- parameter.put("processState", processState==null?0:processState);
- parameter.put("complete", complete==null?0:complete);
- if (StringUtils.isNotBlank(userName)) parameter.put("userName", userName);
- if (null!=processState) parameter.put("processState", processState);
- if (null!=timeType) parameter.put("timeType", timeType);
- if (StringUtils.isNotBlank(startTime)) parameter.put("startTime", startTime);
- if (StringUtils.isNotBlank(endTime)) parameter.put("endTime", endTime+" 23:59:59");
- if (StringUtils.isNotBlank(depId)) parameter.put("depId", depId);
- if (StringUtils.isNotBlank(salesmanName)) parameter.put("salesmanName", salesmanName);
- parameter.put("aid", TokenManager.getAdminId());
- parameter.put("deps", orderService.selectMyDeps());
- Pagination<NewOrderChangeBo> data = (Pagination<NewOrderChangeBo>)findPage("selectOrderChangeList", "selectOrderChangeCount", parameter, pageNo, pageSize);
- return data;
- }
- @Override
- public int updateOrderChange(NewOrderChangeBo t,Integer changeType,String startRemarks) {
- NewOrderChange noc=new NewOrderChange();
- noc.setId(t.getId());
- if (changeType==0) {
- noc.setRemarks(t.getRemarks());
- noc.setType(t.getType());
- noc.setVoucherUrl(t.getVoucherUrl());
- noc.setTotalAmount(t.getTotalAmount());
- noc.setSettlementAmount(t.getSettlementAmount());
- noc.setChangeAmount(t.getChangeAmount());
- noc.setApplicant(t.getApplicant());
- noc.setStatus(1);//订单置为正常
- noc.setProcessState(1);//流程置为营销管理员
- noc.setDepName(t.getDepName());
- OrderChangeLog ocl=new OrderChangeLog();
- ocl.setAuditor(TokenManager.getAdminId());
- ocl.setOrderNo(t.getOrderNo());
- ocl.setRemarks(startRemarks);
- ocl.setChangeId(noc.getId());
- ocl.setStatus(0);
- orderChangeLogMapper.insertSelective(ocl);
- }else if (changeType==2) {
- try {
- noc.setPaymentTime(DateUtils.StringToDate(t.getPaymentTimes(), AFTConstants.YYYYMMDD));
- noc.setInvoiceTime(DateUtils.StringToDate(t.getInvoiceTimes(), AFTConstants.YYYYMMDD));
- } catch (ParseException e) {
- e.printStackTrace();
- }
- noc.setCwCost(t.getCwCost());
- noc.setRefundableAmount(t.getRefundableAmount());
- }
- return newOrderChangeMapper.updateByPrimaryKeySelective(noc);
- }
- @Override
- public int addOrderRefundInvoice(OrderRefundInvoice o) {
- o.setCreateTime(new Date());
- newOrderChangeMapper.addRefundInvoice(o.getOrderNo(),o.getAmount());
- return orderRefundInvoiceMapper.insertSelective(o);
- }
- @Override
- public int deleteOrderRefundInvoice(Integer id) {
- OrderRefundInvoice or=orderRefundInvoiceMapper.selectByPrimaryKey(id);
- newOrderChangeMapper.subtractRefundInvoice(or.getOrderNo(),or.getAmount());
- return orderRefundInvoiceMapper.deleteByPrimaryKey(id);
- }
- @Override
- public List<OrderRefundInvoice> listOrderRefundInvoice(String orderNo) {
- return orderRefundInvoiceMapper.selectByorderNo(orderNo);
- }
- @Override
- public int pushCompleteOrderChange(NewOrderChangeBo nb) {
- changgeAdopt(nb);
- newOrderChangeMapper.updateByPrimaryKeySelective(nb);
- return 1;
- }
- @Override
- public Map<String, Object> listOrderInvoiceAndBill(String orderNo) {
- Map<String, Object> map=new HashMap<>();
- List<BillBo>list=tOrderBillNewMapper.selectByOrderNo(orderNo);
- List<InvoiceBo>list2=tOrderInvoiceMapper.selectByOrderNo(orderNo);
- map.put("bill", list);
- map.put("invoice", list2);
- return map;
- }
-
- }
|