| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- package com.goafanti.order.service.impl;
- import java.math.BigDecimal;
- import java.text.ParseException;
- 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.TOrderDunMapper;
- 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.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.NewOrderChangeBo;
- import com.goafanti.order.bo.OrderChangeLogBo;
- 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 TOrderTaskMapper tOrderTaskMapper;
- @Autowired
- private OrderService orderService;
- @Autowired
- private JDBCIdGenerator idGenerator;
-
-
-
- @Override
- public int addOrderChange(NewOrderChangeBo t) {
- TOrderNew ton=new TOrderNew();
- ton.setOrderNo(t.getOrderNo());
- ton.setDeleteSign(2);//将订单置为锁定
- t.setProcessState(1);//设置营销管理员来审核
- tOrderNewMapper.updateByPrimaryKeySelective(ton);
- newOrderChangeMapper.insertSelective(t);
- NewOrderChangeBo ncb=newOrderChangeMapper.selectByorderNo(t.getOrderNo());
- OrderChangeLog ocl=new OrderChangeLog();
- ocl.setAuditor(TokenManager.getAdminId());
- ocl.setOrderNo(t.getOrderNo());
- ocl.setRemarks("发起了订单变更");
- ocl.setChangeId(ncb.getId());
- ocl.setStatus(0);
- orderChangeLogMapper.insertSelective(ocl);
- return 1;
- }
- @Override
- public NewOrderChangeBo orderChangeDetails(String orderNo) {
- NewOrderChangeBo nb=newOrderChangeMapper.selectByorderNo(orderNo);
- return nb;
- }
- @Override
- public int pushOrderChangeAudit(String orderNo, String remarks, Integer status,Integer processState) {
- 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()==0){
- if (nb.getChangeAmount().compareTo(new BigDecimal("0.2"))<0) {//小于则总裁通过,大于则董事长
- if(nb.getProcessState()==7) {//项目变更通过
- changgeAdopt(nb);}else {nb.setProcessState(nb.getProcessState()+1);}
- }else {
- if(nb.getProcessState()==8) {//项目变更通过
- changgeAdopt(nb);}else {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);
- }
- }else {
- nb.setProcessState(0);
- }
- 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());
- String newOrderNo=idGenerator.generateId().toString();
- t1.setOrderNo(newOrderNo);
- 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);
- }
- nb.setStatus(4);
- //将订单恢复正常
- TOrderNew orderNew =new TOrderNew();
- TOrderNew additionalOrder =new TOrderNew();
- String additionalOrderNo;
- orderNew.setOrderNo(nb.getOrderNo());
- orderNew.setDeleteSign(4);//设置为变更中
- orderNew.setPrimaryOrder(newOrderNo);
- if (nb.getType()==4||nb.getType()==5) {//重报或者附加
- additionalOrderNo=idGenerator.generateId().toString();
- orderNew.setAdditionalOrder(additionalOrderNo);
- additionalOrder.setOrderNo(additionalOrderNo);
- 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) {
- 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.setDepName(t.getDepName());
- }else if(changeType==1) {
- noc.setProjectState(t.getProjectState());
- noc.setZxsCost(t.getZxsCost());
- noc.setZxsRemarks(t.getZxsRemarks());
- }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.setPaymentAmount(t.getPaymentAmount());
- noc.setInvoiceAmount(t.getInvoiceAmount());
- noc.setInvoiceType(t.getInvoiceType());
- noc.setCwCost(t.getCwCost());
- noc.setRefundableAmount(t.getRefundableAmount());
- noc.setCwRemarks(t.getCwRemarks());
- }
- return newOrderChangeMapper.updateByPrimaryKeySelective(noc);
- }
-
- }
|