| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111 |
- package com.goafanti.order.service.impl;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.math.BigDecimal;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.UUID;
- import javax.servlet.http.HttpServletResponse;
- import com.goafanti.common.dao.*;
- import com.goafanti.common.model.*;
- import org.apache.poi.xssf.usermodel.XSSFCell;
- import org.apache.poi.xssf.usermodel.XSSFRow;
- import org.apache.poi.xssf.usermodel.XSSFSheet;
- import org.apache.poi.xssf.usermodel.XSSFWorkbook;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.goafanti.admin.bo.AdminListBo;
- import com.goafanti.common.bo.Error;
- import com.goafanti.common.bo.OrderExamineBo;
- import com.goafanti.common.constant.AFTConstants;
- import com.goafanti.common.enums.NoticeStatus;
- import com.goafanti.common.error.BusinessException;
- import com.goafanti.common.utils.DateUtils;
- import com.goafanti.common.utils.ExportExcelUtil;
- 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.InputNewOrderRefund;
- import com.goafanti.order.bo.InputTChangeTask;
- import com.goafanti.order.bo.InvoiceBo;
- import com.goafanti.order.bo.NewOderCahngeListBo;
- import com.goafanti.order.bo.NewOrderChangeBo;
- import com.goafanti.order.bo.OrderChangeLogBo;
- import com.goafanti.order.bo.OutNewOrderDunBo;
- import com.goafanti.order.bo.OutNewOrderRefund;
- import com.goafanti.order.bo.TChangeDunOut;
- import com.goafanti.order.bo.TChangeTaskOut;
- import com.goafanti.order.bo.TOrderLogBo;
- import com.goafanti.order.bo.TOrderNewBo;
- import com.goafanti.order.bo.TOrderTaskBo;
- import com.goafanti.order.enums.OrderChangeType;
- import com.goafanti.order.enums.OrderNewState;
- import com.goafanti.order.enums.OrderType;
- import com.goafanti.order.enums.ProcessStatus;
- import com.goafanti.order.service.NewOrderDunService;
- import com.goafanti.order.service.OrderChangeService;
- import com.goafanti.order.service.OrderNewService;
- import com.goafanti.order.service.OrderService;
- import com.goafanti.techproject.enums.TaskState;
- @Service
- public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper> implements OrderChangeService {
- @Autowired
- private NewOrderChangeMapper newOrderChangeMapper;
- @Autowired
- private OrderChangeLogMapper orderChangeLogMapper;
- @Autowired
- private TOrderNewMapper tOrderNewMapper;
- @Autowired
- private TOrderLogMapper tOrderLogMapper;
- @Autowired
- private TOrderTaskMapper tOrderTaskMapper;
- @Autowired
- private TOrderInvoiceMapper tOrderInvoiceMapper;
- @Autowired
- private OrderRefundInvoiceMapper orderRefundInvoiceMapper;
- @Autowired
- private OrganizationManagementMapper organizationManagementMapper;
- @Autowired
- private NewOrderRefundMapper newOrderRefundMapper;
- @Autowired
- private OrderExamineMapper orderExamineMapper;
- @Autowired
- private OrderService orderService;
- @Autowired
- private NewOrderDunMapper newOrderDunMapper;
- @Autowired
- private JDBCIdGenerator idGenerator;
- @Autowired
- private AdminMapper adminMapper;
- @Autowired
- private OrderNewService orderNewService;
- @Autowired
- private NewOrderDunService newOrderDunService;
- @Autowired
- private TChangeTaskMapper tChangeTaskMapper;
- @Autowired
- private TChangeDunMapper tChangeDunMapper;
- @Autowired
- private TOrderBillNewMapper tOrderBillNewMapper;
- @Autowired
- private TTaskMidMapper tTaskMidMapper;
- @Autowired
- private UserLockReleaseMapper userLockReleaseMapper;
- @Autowired
- private PushOrderService pushOrderService;
- @Autowired
- private TOrderMidMapper tOrderMidMapper;
- Logger logger = LoggerFactory.getLogger(OrderChangeServiceImpl.class);
- @Override
- public int addOrderChange(NewOrderChangeBo t,String startRemarks) {
- TOrderNew ton=new TOrderNew();
- ton.setOrderNo(t.getOrderNo());
- ton.setDeleteSign(2);//将订单置为锁定
- 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));
- t.setZxsRemarks(startRemarks);
- newOrderChangeMapper.insertSelective(t);
- NewOrderChangeBo ncb=newOrderChangeMapper.selectByorderNoAndStatus(t.getOrderNo());
- List<OutNewOrderDunBo> listDun=newOrderDunMapper.selectListNewOrderDun(t.getOrderNo(),null);
- List<TChangeDun> listcd=new ArrayList<>();
- if (listDun!=null&&!listDun.isEmpty()) {
- for (OutNewOrderDunBo d : listDun) {
- TChangeDun cd=new TChangeDun();
- cd.setOrderNo(d.getOrderNo());
- cd.setAid(d.getAid());
- cd.setAppropriationRatio(d.getAppropriationRatio());
- cd.setCid(ncb.getId());
- cd.setDid(d.getId());
- cd.setTid(d.getTid());
- cd.setProjectType(d.getProjectType());
- cd.setDunType(d.getDunType());
- cd.setMoney(d.getMoney());
- cd.setWaitDay(d.getWaitDay());
- cd.setStartTime(d.getStartTime());
- cd.setEffectiveCount(d.getEffectiveCount());
- cd.setCustomizeTime(d.getCustomizeTime());
- cd.setCustomizeName(d.getCustomizeName());
- listcd.add(cd);
- }
- tChangeDunMapper.insertSelectiveList(listcd);
- }
- List<TChangeTask> listck=new ArrayList<>();
- List<TOrderTaskBo> listTask=tOrderTaskMapper.selectOrderTaskAll(t.getOrderNo());
- if (listTask!=null&&!listTask.isEmpty()) {
- for (TOrderTaskBo tt : listTask) {
- TChangeTask ck=new TChangeTask();
- ck.setOrderNo(tt.getOrderNo());
- ck.setCid(ncb.getId());
- ck.setCommodityId(tt.getCommodityId());
- ck.setOrderNo(tt.getOrderNo());
- ck.setCommodityName(tt.getCommodityName());
- ck.setCommodityPrice(tt.getCommodityPrice());
- ck.setCommodityQuantity(tt.getCommodityQuantity());
- ck.setTaskComment(tt.getTaskComment());
- ck.setSplitStatus(tt.getSplitStatus());
- ck.setSplitSuper(tt.getSplitSuper());
- ck.setReceiverName(tt.getReceiverName());
- ck.setMain(tt.getMain());
- ck.setTid(tt.getId());
- listck.add(ck);
- }
- tChangeTaskMapper.insertSelectiveList(listck);
- }
- if (t.getType()==OrderChangeType.TDTK.getCode()) {
- OrderChangeLog ocl=new OrderChangeLog();
- ocl.setAuditor(TokenManager.getAdminId());
- ocl.setOrderNo(t.getOrderNo());
- ocl.setRemarks(startRemarks);
- ocl.setChangeId(ncb.getId());
- ocl.setStatus(0);
- sendNotice(0, t);//设置与通过一样发送信息
- orderChangeLogMapper.insertSelective(ocl);
- }
- return 1;
- }
- /*
- * 新增审核流程中的
- */
- private void insertOrderExamine(String orderNo) {
- List<TOrderTaskBo> list=tOrderTaskMapper.selectOrderTaskAll(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.getManagerId()!=null) {
- OrderExamine o=new OrderExamine();
- o.setAid(t.getManagerId());
- o.setOrderNo(orderNo);
- o.setCreateTime(new Date());
- o.setType(1);//咨询师经理
- o.setStatus(0);//正常
- orderExamineMapper.insertSelective(o);
- }
- }
- }
- @Override
- public List<NewOrderChangeBo> orderChangeDetails(String orderNo) {
- List<NewOrderChangeBo> list=newOrderChangeMapper.selectByorderNo(orderNo);
- for (NewOrderChangeBo noc : list) {
- List<OrderExamineBo> consultantExamine =orderExamineMapper.selectByOrderNo(noc.getOrderNo(),0);
- List<OrderExamineBo> managerExamine=orderExamineMapper.selectByOrderNo(noc.getOrderNo(),1);
- int isExamine=orderExamineMapper.selectByOrderNoAndAid(noc.getOrderNo(),TokenManager.getAdminId());
- noc.setConsultantExamine(consultantExamine);
- noc.setManagerExamine(managerExamine);
- if (noc.getVoucherUrl()!=null) {
- TOrderNew t=tOrderNewMapper.selectByPrimaryKey(noc.getOrderNo());
- noc.setVoucherUrl(pushOrderService.changeProcessStatusConstant(noc.getVoucherUrl(),t.getSalesmanId(),noc.getProcessState(),noc.getStatus()));
- }
- noc.setIsExamine(isExamine);
- }
- return list;
- }
- @Override
- public NewOrderChangeBo orderChangeDetailsById(Integer id) {
- NewOrderChangeBo nb=newOrderChangeMapper.selectById(id);
- List<OrderExamineBo> consultantExamine =orderExamineMapper.selectByOrderNo(nb.getOrderNo(),0);
- List<OrderExamineBo> managerExamine=orderExamineMapper.selectByOrderNo(nb.getOrderNo(),1);
- int isExamine=orderExamineMapper.selectByOrderNoAndAid(nb.getOrderNo(),TokenManager.getAdminId());
- nb.setConsultantExamine(consultantExamine);
- nb.setManagerExamine(managerExamine);
- nb.setIsExamine(isExamine);
- if(nb.getProcessState()!=null){
- TOrderNew t=tOrderNewMapper.selectByPrimaryKey(nb.getOrderNo());
- nb.setVoucherUrl(pushOrderService.changeProcessStatusConstant(nb.getVoucherUrl(),t.getSalesmanId(),nb.getProcessState(),nb.getStatus()));
- }
- return nb;
- }
- @Override
- public int pushOrderChangeAudit(String changeId, String remarks, Integer status,Integer processState,Integer rejectState) {
- NewOrderChangeBo nb=newOrderChangeMapper.selectByChangeId(changeId);
- String orderNo=nb.getOrderNo();
- 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()==7) {
- nb.setProcessState(nb.getProcessState()+1);
- }else if(nb.getProcessState()==8) {//董事长项目变更通过
- nb.setStatus(2);
- }
- }
- if(nb.getProcessState()==1){//营销管理通过则设置技术管理员通过表
- if (orderExamineMapper.checkCountStatus(orderNo,null,null)<1) {
- insertOrderExamine(orderNo);
- } else {
- orderExamineMapper.updateByOrderNo(orderNo,null);
- }
- nb.setProcessState(nb.getProcessState()+1);
- }
- //必须放置在咨询师与咨询师经理前,否则会直接通过不走咨询师管理员
- if(nb.getProcessState()==4||nb.getProcessState()==5||nb.getProcessState()==6) {
- nb.setProcessState(nb.getProcessState()+1);
- }
- if(nb.getProcessState()==2){//咨询师
- //找出当时人的审核改为通过
- orderExamineMapper.updateByOrderNoAndAid(orderNo,TokenManager.getAdminId(),0);
- //全部通过了则跳下个流程
- if (orderExamineMapper.checkCountStatus(orderNo,0,0)<1) {
- nb.setProcessState(nb.getProcessState()+1);
- }
- }
- if(nb.getProcessState()==3){//咨询师经理
- //找出当时人的审核改为通过
- orderExamineMapper.updateByOrderNoAndAid(orderNo,TokenManager.getAdminId(),1);
- //全部通过了则跳下个流程
- if (orderExamineMapper.checkCountStatus(orderNo,1,0)<1) {
- nb.setProcessState(nb.getProcessState()+1);
- }
- }
- }
- if(nb.getStatus()==3) {
- nb.setStatus(1);//如果驳回数据则改为正常数据
- }
- //通过订单取消记录的驳回位置
- if (processState==nb.getBackStatus()) {
- nb.setBackStatus(0);
- }
- }else {
- nb.setProcessState(rejectState);
- nb.setStatus(3);//订单变更设置为驳回
- //驳回订单记录驳回位置
- if (processState>nb.getBackStatus()) {
- nb.setBackStatus(processState);
- }
- //驳回位置查看有无审核人,没有则直接跳下一个
- if (rejectState==2) {
- if (orderExamineMapper.checkCountStatus(orderNo,0,null)<1) nb.setProcessState(nb.getProcessState()+1);
- }
- if (rejectState==3) {
- if (orderExamineMapper.checkCountStatus(orderNo,1,null)<1) nb.setProcessState(nb.getProcessState()+1);
- }
- //如果驳回到技术经理之前则将审核表中状态跳回
- if(nb.getProcessState()==3) {
- orderExamineMapper.updateByOrderNo(orderNo,1);
- }else if (nb.getProcessState()<3) {
- orderExamineMapper.updateByOrderNo(orderNo,null);
- }
- }
- OrderChangeLog ocl=new OrderChangeLog();
- ocl.setAuditor(TokenManager.getAdminId());
- ocl.setOrderNo(orderNo);
- ocl.setRemarks(remarks);
- ocl.setChangeId(nb.getId());
- ocl.setStatus(status);
- orderChangeLogMapper.insertSelective(ocl);
- sendNotice(status,nb);
- newOrderChangeMapper.updateByPrimaryKeySelective(nb);
- return 1;
- }
- private void sendNotice(Integer status,NewOrderChangeBo nb) {
- //0发起2通过 3驳回
- Integer type=0;
- if(status==0)type=NoticeStatus.ORDER_CHANGE_START.getCode();
- if(status==2)type=NoticeStatus.ORDER_CHANGE_YES.getCode();
- if(status==3)type=NoticeStatus.ORDER_CHANGE_NO.getCode();
- //获取发起人与发起人部门
- AdminListBo a = adminMapper.getDeptNameByAid(TokenManager.getAdminId());
- //获取客户信息
- TOrderNewBo o=tOrderNewMapper.getSaleIdByOno(nb.getOrderNo());
- //获取接收者
- //流程状态 0营销员 1营销管理员 2技术员 3技术经理 4技术总监 5财务专员(退单) 6财务总监 7总裁 8董事长
- List<String> alist = new ArrayList<>();
- //获取部门负责财务人员
- switch (nb.getProcessState()) {
- case 0:
- alist.add(o.getSalesmanId());
- break;
- case 1:
- alist.addAll(adminMapper.listNameByDepAndName(a.getDepartmentId(), "营销管理员"));
- break;
- case 2:
- alist.addAll(tOrderTaskMapper.listNameByDepAndName(o.getOrderNo(),0));
- break;
- case 3:
- alist.addAll(tOrderTaskMapper.listNameByDepAndName(o.getOrderNo(),1));
- break;
- case 4:
- for (Admin admin : adminMapper.getAdminRoleList("咨询师管理员")) {
- alist.add(admin.getId());
- }
- break;
- case 5:
- alist.add(o.getFinanceId());
- break;
- case 6:
- for (Admin admin : adminMapper.getAdminRoleList("财务管理员")) {
- alist.add(admin.getId());
- }
- break;
- case 7:
- if(nb.getStatus()==2) {
- alist.add(o.getFinanceId());
- }else {
- for (Admin admin : adminMapper.getAdminRoleList("总裁")) {
- alist.add(admin.getId());
- }
- }
- break;
- case 8:
- if(nb.getStatus()==2) {
- alist.add(o.getFinanceId());
- }else {
- for (Admin admin : adminMapper.getAdminRoleList("运营决策者")) {
- alist.add(admin.getId());
- }
- }
- break;
- }
- //发送站内信息与邮件
- orderNewService.pushGeneralSendNoticeAndEmail(alist, type, o, TokenManager.getAdminId(),0);
- }
- /**
- * 变更完成复制出原订单镜像
- */
- private void changeAdopt(NewOrderChangeBo nb) {
- TOrderNew t1=tOrderNewMapper.selectByPrimaryKey(nb.getOrderNo());
- List<OutNewOrderDunBo> td2=newOrderDunMapper.selectListNewOrderDun(nb.getOrderNo(), null);
- List<TOrderTaskBo> tt1=tOrderTaskMapper.selectOrderTaskAll(nb.getOrderNo());
- List<TOrderLogBo> tl1=tOrderLogMapper.selectOrderByNo(nb.getOrderNo());
- String newOrderNo=idGenerator.generateId().toString();
- t1.setOrderNo(newOrderNo);
- nb.setUsedOrder(newOrderNo);
- t1.setDeleteSign(1);//将原订单作废,只能查看
- tOrderNewMapper.insertSelective(t1);
- Map<Integer, Integer> map=new HashMap<>();
- for (TOrderTaskBo tOrderTaskBo : tt1) {
- //处理父子项目关系 将员父项目存储
- int x=tOrderTaskBo.getId();
- tOrderTaskBo.setId(null);
- tOrderTaskBo.setOrderNo(newOrderNo);
- if(tOrderTaskBo.getSplitStatus()==2) {
- tOrderTaskBo.setSplitSuper(map.get(tOrderTaskBo.getSplitSuper()));
- }
- tOrderTaskBo.setProcessStatus(3);
- tOrderTaskMapper.insertSelective(tOrderTaskBo);
- int y=tOrderTaskBo.getId();
- TTaskMid dtails = tTaskMidMapper.getDtails(tOrderTaskBo.getId());
- TTaskMid tTaskMid = new TTaskMid(y, new BigDecimal(0));
- tTaskMid.setDispatchProvince(dtails.getDispatchProvince());
- tTaskMid.setDutyDep(dtails.getDutyDep());
- tTaskMidMapper.insertSelective(tTaskMid);
- if(tOrderTaskBo.getSplitStatus()==1) {
- map.put(x, y);
- }
- }
- if (!td2.isEmpty()) {
- List<OutNewOrderDunBo> newtd2=new ArrayList<>();
- for (OutNewOrderDunBo outNewOrderDunBo : td2) {
- outNewOrderDunBo.setId(null);
- outNewOrderDunBo.setOrderNo(newOrderNo);
- newtd2.add(outNewOrderDunBo);
- }
- newOrderDunMapper.insertBatch(newtd2);
- }
- if (!tl1.isEmpty()) {
- List<TOrderLogBo> newtl1=new ArrayList<>();
- for (TOrderLogBo tOrderLogBo : tl1) {
- tOrderLogBo.setId(null);
- tOrderLogBo.setOrderNo(newOrderNo);
- newtl1.add(tOrderLogBo);
- }
- tOrderLogMapper.insertBatch(newtl1);
- }
- nb.setStatus(4);
- //将订单恢复正常
- TOrderNew orderNew =new TOrderNew();
- orderNew.setOrderNo(nb.getOrderNo());
- orderNew.setDeleteSign(0);
- orderNew.setPrimaryOrder(newOrderNo);
- int i =tOrderMidMapper.judgeProjectType(nb.getOrderNo());
- if (i>0){
- TOrderMid tm=new TOrderMid();
- tm.setOrderNo(nb.getOrderNo());
- tm.setProjectType(1);
- tOrderMidMapper.updateByOrderNo(tm);
- }
- 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<NewOderCahngeListBo> selectOrderChangeList(String userName,Integer processState,Integer timeType,String startTime,String endTime,
- String depId,String salesmanName,Integer complete,String orderNo, String contractNo,Integer type,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 (StringUtils.isNotBlank(orderNo)) parameter.put("orderNo", orderNo);
- if (StringUtils.isNotBlank(contractNo)) parameter.put("contractNo", contractNo);
- if (null!=type) parameter.put("type", type);
- 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);
- if(processState==5&&TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)) {
- parameter.put("aids", adminMapper.selectBySuperId(TokenManager.getAdminId()));
- }else {
- parameter.put("aid", TokenManager.getAdminId());
- }
- parameter.put("deps", orderService.selectMyDeps());
- Pagination<NewOderCahngeListBo> data = (Pagination<NewOderCahngeListBo>)findPage("selectOrderChangeList", "selectOrderChangeCount", parameter, pageNo, pageSize);
- return data;
- }
- @Override
- public int updateOrderChange(NewOrderChangeBo t,Integer changeType,String startRemarks) {
- NewOrderChange noc=new NewOrderChange();
- t.setProcessState(1);
- noc.setId(t.getId());
- if (changeType==0) {
- chekeChangeTaskNumber(noc);
- 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==null?"":startRemarks);
- ocl.setChangeId(noc.getId());
- ocl.setStatus(0);
- if(t.getType()!=0)chekeAmout(t);
- orderChangeLogMapper.insertSelective(ocl);
- TOrderNew ton=new TOrderNew();
- ton.setOrderNo(noc.getOrderNo());
- ton.setDeleteSign(3);
- tOrderNewMapper.updateByPrimaryKeySelective(ton);
- sendNotice(0, t);
- }else if (changeType==2) {
- noc.setCwCost(t.getCwCost());
- noc.setRefundableAmount(t.getRefundableAmount());
- }
- if(changeType!=1)newOrderChangeMapper.updateByPrimaryKeySelective(noc);
- return 1;
- }
- private void chekeAmout(NewOrderChangeBo t) {
- BigDecimal amout=t.getTotalAmount();
- List<TChangeTaskOut> list = selectChangeTask(t.getId());
- BigDecimal count=new BigDecimal(0);
- for (TChangeTaskOut tt : list) {
- if(tt.getType()!=3)count=count.add(tt.getCommodityPrice());
- }
- if (amout.compareTo(count)!=0) {
- throw new BusinessException("项目金额总和不等于合同总金额。");
- }
- List<TChangeDunOut> list2 = selectChangeDun(t.getId());
- count=new BigDecimal(0);
- for (TChangeDunOut td : list2) {
- if(td.getMoney()==null)td.setMoney(new BigDecimal(0));
- if(td.getType()!=3)count=count.add(td.getMoney());
- }
- if (amout.compareTo(count)!=0) {
- throw new BusinessException("收款节点金额总和不等于合同总金额。");
- }
- }
- /**
- * 判断变更项目是否拆分父子数量是否一直
- * @param noc
- */
- private void chekeChangeTaskNumber(NewOrderChange noc) {
- List<TChangeTaskOut> list=tChangeTaskMapper.selectByCid(noc.getId(),null);
- //x记录父值y记录子值
- int x=0;
- int y=0;
- for (TChangeTaskOut tcto : list) {
- if (tcto.getSplitStatus()==1&&tcto.getType()!=3) {
- x+=tcto.getCommodityQuantity();
- }else if (tcto.getSplitStatus()==2&&tcto.getType()!=3) {
- y+=tcto.getCommodityQuantity();
- }
- }
- if (x!=y) {
- throw new BusinessException("变更子项目与父项目数量不符");
- }
- }
- @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) {
- //变更完成
- changeAdopt(nb);
- TOrderNew o=pushChange(nb);
- newOrderChangeMapper.updateByPrimaryKeySelective(nb);
- TOrderNewBo order=tOrderNewMapper.getSaleIdByOno(nb.getOrderNo());
- List<String> alist = getAllAid(nb.getId());
- OrderChangeLog ocl=new OrderChangeLog();
- ocl.setAuditor(TokenManager.getAdminId());
- ocl.setOrderNo(nb.getOrderNo());
- ocl.setRemarks("变更完成。");
- ocl.setChangeId(nb.getId());
- ocl.setStatus(4);
- orderChangeLogMapper.insertSelective(ocl);
- orderNewService.pushGeneralSendNoticeAndEmail(alist,NoticeStatus.ORDER_CHANGE_END.getCode(), order, TokenManager.getAdminId(),0);
- return 1;
- }
- /**
- * 获取除发起者意外所有审核者
- * @param id
- * @return
- */
- private List<String> getAllAid(Integer id) {
- List<String> alist = new ArrayList<>();
- List<String>newl=new ArrayList<>();
- List<OrderChangeLogBo> list=orderChangeLogMapper.selectOrderChangeLogList(id.toString());
- for (OrderChangeLogBo log : list) {
- if (!log.getStatus().equals(0)){
- if (!newl.contains(log.getAuditor())){
- newl.add(log.getAuditor());
- }
- }
- }
- alist.addAll(newl);
- return alist;
- }
- @Override
- public int pushCompleteRefund(NewOrderChangeBo nb) {
- nb.setStatus(6);
- NewOrderChangeBo nob=newOrderChangeMapper.selectById(nb.getId());
- TOrderNewBo o=tOrderNewMapper.getSaleIdByOno(nob.getOrderNo());
- List<String> alist = new ArrayList<>();
- alist.add(o.getSalesmanId());
- newOrderChangeMapper.updateByPrimaryKeySelective(nb);
- orderNewService.pushGeneralSendNoticeAndEmail(alist,NoticeStatus.ORDER_CHANGE_YES.getCode(), o, TokenManager.getAdminId(),0);
- return 1;
- }
- /**
- * 修改订单数据
- * @param nb
- */
- private TOrderNew pushChange(NewOrderChangeBo nb) {
- TOrderNew o=tOrderNewMapper.selectByPrimaryKey(nb.getOrderNo());
- NewOrderChangeBo nob=newOrderChangeMapper.selectById(nb.getId());
- // 变更类型 0退单退款 1项目及金额变更 2仅项目变更 3仅金额变更 4重报 5赠送
- //退单退款不需改变内容
- if (nob.getType()==OrderChangeType.XMJJEBG.getCode()) {
- o.setTotalAmount(nob.getTotalAmount());
- //处理项目及催款
- pushTaskAndDun(nob.getId(),nob.getOrderNo());
- }else if (nob.getType()==OrderChangeType.JXMBG.getCode()) {
- pushTaskAndDun(nob.getId(),nob.getOrderNo());
- }else if (nob.getType()==OrderChangeType.JJEBG.getCode()) {
- o.setTotalAmount(nob.getTotalAmount());
- pushTaskAndDun(nob.getId(),nob.getOrderNo());
- }else if (nob.getType()==OrderChangeType.CB.getCode()){
- o.setTotalAmount(nob.getTotalAmount());
- pushTaskAndDun(nob.getId(),nob.getOrderNo());
- }else if (nob.getType()==OrderChangeType.ZS.getCode()) {
- pushTaskAndDun(nob.getId(),nob.getOrderNo());
- }else if(nob.getType()==OrderChangeType.TDTK.getCode()) {
- //先将业务锁关闭
- List<String> list=tOrderTaskMapper.getLockId(nb.getOrderNo(),o.getSalesmanId(),o.getBuyerId());
- if(!list.isEmpty())userLockReleaseMapper.updateReleaseList(list);
- int i=userLockReleaseMapper.selectByUidGetCount(o.getSalesmanId(),o.getBuyerId());
- if (i<1) userLockReleaseMapper.updateReleaseUser(o.getOrderNo());
- }
- //
- List<TOrderTaskBo> taskBos=tOrderTaskMapper.selectOrderTask(nb.getOrderNo(),0);
- int i=0;
- for (TOrderTaskBo to : taskBos) {
- if (to.getTaskStatus()>TaskState.UN_DISTRIBUTION.getCode()&&to.getTaskStatus()<TaskState.INVALID.getCode()) {
- i++;
- }
- }
- if (i==taskBos.size()) {
- o.setProcessStatus(ProcessStatus.YQBFPZXSGLY.getCode());
- }else if(i>0&&i<taskBos.size()){
- o.setProcessStatus(ProcessStatus.YBFPZXSGLY.getCode());
- }else if(i==0){
- o.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
- }
- o.setDeleteSign(0);
- tOrderNewMapper.updateByPrimaryKeySelective(o);
- return o;
- }
- private void pushTaskAndDun(Integer id,String orderNo) {
- List<TChangeTaskOut> listct=tChangeTaskMapper.selectByCid(id,null);
- for (TChangeTaskOut cd : listct) {
- TOrderTask ot=new TOrderTask();
- if (cd.getType()==1) {
- ot.setOrderNo(cd.getOrderNo());
- ot.setCommodityId(cd.getCommodityId());
- ot.setOrderNo(cd.getOrderNo());
- ot.setCommodityName(cd.getCommodityName());
- ot.setCommodityPrice(cd.getCommodityPrice());
- ot.setCommodityQuantity(cd.getCommodityQuantity());
- ot.setTaskComment(cd.getTaskComment());
- ot.setMain(cd.getMain());
- ot.setTaskStatus(0);
- tOrderTaskMapper.insertSelective(ot);
- cd.setTid(ot.getId());
- tChangeTaskMapper.updateByPrimaryKeySelective(cd);
- tChangeDunMapper.updateByCTid(cd.getId(), ot.getId());
- }else if (cd.getType()==2) {
- ot.setId(cd.getTid());
- ot.setCommodityPrice(cd.getCommodityPrice());
- ot.setCommodityQuantity(cd.getCommodityQuantity());
- tOrderTaskMapper.updateByPrimaryKeySelective(ot);
- }else if(cd.getType()==3) {
- tOrderTaskMapper.deleteByPrimaryKey(cd.getTid());
- }
- }
- List<TChangeDunOut> listcd=tChangeDunMapper.selectByCid(id);
- for (TChangeDunOut cd : listcd) {
- NewOrderDun nd=new NewOrderDun();
- if (cd.getType()==1) {
- nd.setOrderNo(cd.getOrderNo());
- nd.setAid(cd.getAid());
- nd.setAppropriationRatio(cd.getAppropriationRatio());
- nd.setTid(cd.getTid());
- nd.setProjectType(cd.getProjectType());
- nd.setDunType(cd.getDunType());
- nd.setMoney(cd.getMoney());
- nd.setWaitDay(cd.getWaitDay());
- nd.setStartTime(cd.getStartTime());
- nd.setEffectiveCount(cd.getEffectiveCount());
- nd.setCustomizeTime(cd.getCustomizeTime());
- nd.setCustomizeName(cd.getCustomizeName());
- if (cd.getDunType()==1) {
- nd.setStatus(1);
- nd.setStartTime(new Date());
- }
- newOrderDunMapper.insertSelective(nd);
- }else if (cd.getType()==2) {
- nd.setId(cd.getDid());
- nd.setMoney(cd.getMoney());
- newOrderDunMapper.updateByPrimaryKeySelective(nd);
- }else if(cd.getType()==3) {
- newOrderDunMapper.deleteByPrimaryKey(cd.getDid());
- }
- }
- }
- @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;
- }
- @SuppressWarnings("unchecked")
- @Override
- public void exportMyChange(HttpServletResponse response, String userName, Integer processState, Integer timeType,
- String startTime, String endTime, String depId, String salesmanName, Integer complete,String orderNo, String contractNo,Integer type,Integer pageSize,Integer pageNo) throws IOException {
- OutputStream out = response.getOutputStream();
- List<NewOderCahngeListBo>list=(List<NewOderCahngeListBo>) selectOrderChangeList( userName, processState, timeType, startTime, endTime,
- depId, salesmanName, complete, orderNo, contractNo, type, pageSize, pageNo).getList();
- try {
- //设计表头 String[] comment = {"合同编号","订单编号","客户名称","订单部门","订单类型","下单时间","订单状态","合同额(万元)","已付额(万元)","欠款(万元)","订单负责人","变更类型","变更审核状态","变更提交时间"}
- String[] comment = {"合同编号","订单编号","客户名称","订单部门","订单类型","下单时间","订单状态","合同额(万元)","已付额(万元)","欠款(万元)","订单负责人","变更类型","变更审核状态","变更提交时间"};
- String fileName ="开票变更记录表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
- //type 0 变更
- XSSFWorkbook wb =ExportExcelUtil.exportTemplateInfoS(comment,"开票变更记录");
- //根据列表编写文档
- XSSFSheet sheet =wb.getSheetAt(0);
- for (NewOderCahngeListBo ob : (List<NewOderCahngeListBo>)list) {
- //新增一行
- XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1);
- for (int i = 0; i < comment.length; i++) {
- //当前列的只
- String o = "";
- switch (comment[i]) {
- // String[] comment = {"合同编号","订单编号","客户名称","订单部门","订单类型","下单时间",
- // "订单状态","合同额(万元)","已付额(万元)","欠款(万元)","订单负责人","变更类型","变更审核状态","变更提交时间"};
- case "合同编号": o = ob.getContractNo(); break;
- case "订单编号": o = ob.getOrderNo().toString(); break;
- case "客户名称": o = ob.getNickname(); break;
- case "订单部门": o = ob.getDepName(); break;
- case "订单类型": o = OrderType.getValueByCode(ob.getOrderType()); break;
- case "下单时间": o = ob.getEstablishTimes(); break;
- case "订单状态": o = OrderNewState.getValueByCode(ob.getOrderStatus()); break;
- case "合同额(万元)": o = ob.getTotalAmount().toString(); break;
- case "已付额(万元)": o = ob.getSettlementAmount().toString(); break;
- case "欠款(万元)": o = ob.getArrears().toString(); break;
- case "订单负责人": o = ob.getSalesmanName(); break;
- case "变更类型": o = OrderChangeType.getValueByCode(ob.getType()); break;
- case "变更审核状态": o = getProcessState(ob.getProcessState(),ob.getStatus()); break;
- case "变更提交时间": o = ob.getCreateTimes(); break;
- default: o = ""; break;
- }
- XSSFCell c = r.createCell(i);
- c.setCellValue(o);
- }
- }
- //返回名称及参数
- response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1"));
- response.setContentType("application/octet-stream;charset=utf-8");
- // 返回数据流
- wb.write(out);
- out.flush();
- out.close();
- } catch (Exception e) {
- throw new BusinessException(new Error("表格生成错误。"));
- }finally {
- out.flush();
- out.close();
- }
- }
- public static String getProcessState(Integer processState,Integer status) {
- String str="";
- if (processState == 0) {
- str = "营销员";
- } else if (processState == 1) {
- str = "营销管理员";
- } else if (processState == 2) {
- str = "咨询师";
- } else if (processState == 3) {
- str = "咨询师经理";
- } else if (processState == 4) {
- str = "咨询师总监";
- } else if (processState == 5) {
- str = "财务专员";
- } else if (processState == 6) {
- str = "财务总监";
- } else if (processState == 7) {
- str = "总裁";
- } else if (processState == 8) {
- str = "董事长";
- }
- String num = "";
- if (status == 0) {
- num = "发起";
- } else if (status == 1) {
- num = "审核中";
- } else if (status == 2) {
- num = "通过";
- } else if (status == 3) {
- num = "驳回";
- return num + "到" + str;
- } else if (status == 4) {
- num = "完成";
- }
- if (processState == 7 && status == 2) {
- return "订单变更退票中";
- } else if (processState == 8 && status == 2) {
- return "订单变更退票中";
- } else if (processState >= 7 && status == 4) {
- return "订单变更已完成";
- } else {
- return str + num;
- }
- }
- @Override
- public int addChangeTask(TChangeTask t) {
- t.setType(1);
- return tChangeTaskMapper.insertSelective(t);
- }
- @Override
- public int addChangeDun(TChangeDun d) {
- d.setAid(TokenManager.getAdminId());
- d.setType(1);
- if(d.getCustomizeTimes()!=null)d.setCustomizeTime(DateUtils.StringToDate(d.getCustomizeTimes(), AFTConstants.YYYYMMDD));
- return tChangeDunMapper.insertSelective(d);
- }
- @Override
- public int deleteChangeTask(Integer id) {
- return tChangeTaskMapper.deleteByPrimaryKey(id);
- }
- @Override
- public int deleteChangeDun(Integer id) {
- return tChangeDunMapper.deleteByPrimaryKey(id);
- }
- @Override
- public List<TChangeTaskOut> selectChangeTask(Integer cid) {
- List<TChangeTaskOut> list=tChangeTaskMapper.selectByCid(cid,3);//3设置不等于2
- for (TChangeTaskOut tChangeTaskOut : list) {
- List<TChangeTask> list2=tChangeTaskMapper.selectBySuper(tChangeTaskOut.getTid(),cid);
- tChangeTaskOut.setList(list2);
- }
- return list;
- }
- @Override
- public List<TChangeDunOut> selectChangeDun(Integer cid) {
- return tChangeDunMapper.selectByCid(cid);
- }
- @Override
- public int updateChangeTask(InputTChangeTask t) {
- //有tid是订单复制项目
- if(t.getTid()!=null) {
- //type 0正常 1新增 2修改 3删除
- TChangeTask tt=tChangeTaskMapper.selectByPrimaryKey(t.getId());
- if (t.getType()==3) {
- //删除首先将项目删除,然后将所属催款做删除
- tChangeTaskMapper.updateByTid(t.getTid(),null,tt.getCid(),3);
- if (tt.getSplitStatus()==0) {
- tChangeDunMapper.updateByTid(tt.getTid(),tt.getCid(),3);
- }else if (tt.getSplitStatus()==1) {
- //删除父类下所有的子类
- tChangeTaskMapper.updateByTid(null,tt.getTid(),tt.getCid(),3);
- tChangeDunMapper.updateByTid(tt.getTid(),tt.getCid(),3);
- }else if(tt.getSplitStatus()==2) {
- List<TChangeTask> list=tChangeTaskMapper.selectBySuper(tt.getSplitSuper(),tt.getCid());
- boolean flag=true;
- for (TChangeTask tc : list) {
- if (tc.getType()!=3) {
- flag=false;
- break;
- }
- }
- if (flag) {
- //如果所有子类删除判断删除父类
- tChangeTaskMapper.updateByTid(tt.getSplitSuper(),null,tt.getCid(),3);
- tChangeDunMapper.updateByTid(tt.getSplitSuper(),tt.getCid(),3);
- }
- }
- }else if(t.getType()==2){
- tChangeTaskMapper.updateByTid(t.getTid(),null,tt.getCid(),2);
- if (tt.getSplitStatus()==1) {
- tChangeTaskMapper.updateByTid(null,tt.getTid(),tt.getCid(),2);
- }else if(tt.getSplitStatus()==2) {
- tChangeTaskMapper.updateByTid(tt.getSplitSuper(),null,tt.getCid(),2);
- }
- }
- }else {
- if (t.getType()==3) {
- tChangeTaskMapper.deleteByPrimaryKey(t.getId());
- tChangeDunMapper.deleteByCtid(t.getId());
- }
- }
- return tChangeTaskMapper.updateByPrimaryKeySelective(t);
- }
- @Override
- public int updateChangeDun(TChangeDun t) {
- if(t.getCustomizeTimes()!=null)t.setCustomizeTime(DateUtils.StringToDate(t.getCustomizeTimes(), AFTConstants.YYYYMMDD));
- if (t.getType()==1||t.getType()==2) {
- return tChangeDunMapper.updateByPrimaryKeySelective(t);
- }else if(t.getType()==3){
- if (t.getDid()!=null) {
- return tChangeDunMapper.updateByPrimaryKeySelective(t);
- }else {
- return tChangeDunMapper.deleteByPrimaryKey(t.getId());
- }
- }else {
- return 0;
- }
- }
- @Override
- public List<TOrderNewBo> orderChangeUsed(String orderNo) {
- List<TOrderNewBo> list=tOrderNewMapper.selectUsedOrderByOrder(orderNo);
- for (TOrderNewBo t : list) {
- t.setDunList(newOrderDunService.selectListNewOrderDun(orderNo));
- t.setTaskList(orderNewService.selectOrderTask(orderNo,0));
- }
- return list;
- }
- @Override
- public List<Map<String, String>> getOrderChange(String orderNo) {
- List<Map<String, String>> list=new ArrayList<>();
- list =newOrderChangeMapper.getOrderChange(orderNo);
- return list;
- }
- @Override
- public int addOrderRefund(InputNewOrderRefund or) {
- or.setRefundTime(DateUtils.StringToDate(or.getRefundDate(), AFTConstants.YYYYMMDD));
- return newOrderRefundMapper.insertSelective(or);
- }
- @Override
- public int deleteRefund(Integer id) {
- return newOrderRefundMapper.deleteByPrimaryKey(id);
- }
- @Override
- public List<OutNewOrderRefund> listRefund(Integer id) {
- return newOrderRefundMapper.listRefund(id);
- }
- @Override
- public int pushRefund(Integer id,String refundUrl) {
- NewOrderChange noc=newOrderChangeMapper.selectByPrimaryKey(id);
- if (noc.getRefundStatus()!=1) {
- List<OutNewOrderRefund> list=listRefund(id);
- BigDecimal bd=new BigDecimal(0);
- TOrderNew order=tOrderNewMapper.selectByPrimaryKey(noc.getOrderNo());
- for (OutNewOrderRefund o : list) {
- TOrderBillNew tbn =new TOrderBillNew();
- tbn.setOrderNo(o.getOrderNo());
- tbn.setTransactionAmount(o.getRefundAmount().negate());// 取负数
- tbn.setBillNo(UUID.randomUUID().toString().replaceAll("-", ""));
- tbn.setCreater(TokenManager.getAdminId());
- tbn.setPayeeId(order.getBuyerId());
- tbn.setPayerId("0");
- tbn.setRemarks(o.getRemarks());
- tbn.setTransactionSubject(2);
- tbn.setTransactionChannel(2);
- tbn.setConfirmSign(1);
- tbn.setRefundTime(o.getRefundTime());
- bd=bd.add(o.getRefundAmount());
- tOrderBillNewMapper.insertSelective(tbn);
- }
- TOrderNew o=new TOrderNew();
- o.setOrderNo(noc.getOrderNo());
- o.setRefundAmount(bd);
- tOrderNewMapper.updaterefund(o);
- NewOrderChange n=new NewOrderChange();
- n.setId(id);
- n.setRefundStatus(1);
- n.setRefundUrl(refundUrl);
- newOrderChangeMapper.updateByPrimaryKeySelective(n);
- }
- return 1;
- }
- @Override
- public boolean checkrefund(InputNewOrderRefund or) {
- if (or.getOrderNo()!=null) {
- TOrderNew o=tOrderNewMapper.selectByPrimaryKey(or.getOrderNo());
- BigDecimal refund=new BigDecimal(0);
- List<OutNewOrderRefund> list=listRefund(or.getCid());
- refund=refund.add(or.getRefundAmount());
- for (OutNewOrderRefund oor : list) {
- refund=refund.add(oor.getRefundAmount());
- }
- if (o.getSettlementAmount().compareTo(refund)!=-1) {
- return false;
- }else {
- return true;
- }
- }
- return true;
- }
- @Override
- public int updateCancelOrderChange(NewOrderChangeBo nb) {
- NewOrderChange noc=new NewOrderChange();
- noc.setId(nb.getId());
- noc.setStatus(5);
- newOrderChangeMapper.updateByPrimaryKeySelective(noc);
- TOrderNew t=new TOrderNew();
- t.setOrderNo(nb.getOrderNo());
- t.setDeleteSign(0);
- OrderChangeLog ocl=new OrderChangeLog();
- ocl.setAuditor(TokenManager.getAdminId());
- ocl.setOrderNo(nb.getOrderNo());
- ocl.setRemarks("变更撤销成功");
- ocl.setChangeId(nb.getId());
- ocl.setStatus(5);
- orderChangeLogMapper.insertSelective(ocl);
- tOrderNewMapper.updateByPrimaryKeySelective(t);
- return 1;
- }
- }
|