package com.goafanti.order.service.impl; import com.goafanti.common.bo.Result; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.dao.*; import com.goafanti.common.model.TDunLog; import com.goafanti.common.model.TOrderLegalAffairs; import com.goafanti.common.model.TOrderMid; import com.goafanti.common.utils.DateUtils; import com.goafanti.common.utils.excel.NewExcelUtil; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; import com.goafanti.order.bo.*; import com.goafanti.order.enums.NewProjectStatus; import com.goafanti.order.service.LegalAffairsService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.text.ParseException; import java.util.*; @Service public class LegalAffairsServiceImpl extends BaseMybatisDao implements LegalAffairsService { @Autowired private TOrderMidMapper tOrderMidMapper; @Autowired private TOrderTaskMapper tOrderTaskMapper; @Autowired private TDunLogMapper tDunLogMapper; @Autowired private TOrderLegalAffairsMapper tOrderLegalAffairsMapper; @Autowired private AdminMapper adminMapper; @Value(value = "${upload.path}") private String uploadPath = null; @Override public int pushTransferLagalAffairs(String orderNo){ TOrderMid tm = new TOrderMid(); tm.setOrderNo(orderNo); tm.setLegalAffairs(1); tm.setLegalAffairsType(0); tm.setLegalAffairsStatus(0); return tOrderMidMapper.updateByOrderNo(tm); } @Override public Object orderListPage(InputOrderListBo in) { HashMap params = new HashMap<>(); addParams(in, params); Pagination p= (Pagination) findPage("legalAffairsOrderList","legalAffairsOrderCount",params,in.getPageNo(),in.getPageSize()); List list = (List) p.getList(); if(in.getType()==0){ sumDaysRemaining(list); } return p; } private void addParams(InputOrderListBo in, HashMap map) { if(in.getContractNo()!=null) map.put("contractNo", in.getContractNo()); if(in.getLegalAffairs()!=null) map.put("legalAffairs", in.getLegalAffairs()); if(in.getAid()!=null) map.put("aid", in.getAid()); if(in.getType()==0){ if (TokenManager.hasRole(AFTConstants.FINANCE)){ map.put("shiro",1); List deps=adminMapper.getFinanceDep(TokenManager.getAdminId()); map.put("deps",deps); }else if(TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)){ map.put("shiro",2); map.put("sid", TokenManager.getAdminId()); }else if(TokenManager.hasRole(AFTConstants.SUPERADMIN)||TokenManager.hasRole(AFTConstants.CED)|| TokenManager.hasRole(AFTConstants.CED_ASSISTANT)||TokenManager.hasRole(AFTConstants.APPROVAL_DECISION)|| TokenManager.hasRole(AFTConstants.VICE_CEO)){ map.put("shiro",3); }else { map.put("shiro",0); map.put("aid", TokenManager.getAdminId()); } map.put("type", in.getType()); }else{ if(in.getAid()!=null) map.put("aid", in.getAid()); if (in.getStatus()!=null) map.put("status",in.getStatus()); map.put("type", in.getType()); } if(in.getDepId()!=null) map.put("depId", in.getDepId()); if(in.getUserName()!=null) map.put("userName", in.getUserName()); if(in.getStartTime()!=null)map.put("startTime", in.getStartTime()); if(in.getEndTime()!=null)map.put("endTime", in.getEndTime()+" 23:59:59"); } private void sumDaysRemaining(List list) { Date date = new Date(); for (OutOrderLegalAffairsListBo out : list) { if (out.getLegalAffairs()==0){ long start=out.getDunStartTime().getTime()+AFTConstants.DUN_START_LIMIT_MS; int i= (int) ((start-date.getTime())/(3600*24*1000)); out.setDaysRemaining(i); }else { out.setDaysRemaining(0); } } } @Override public List getLegalAffairsOrder(InputOrderListBo in) { HashMap params = new HashMap<>(); addParams(in, params); List list =(List) findList("legalAffairsOrderList",params,1,999999); if(in.getType()==0){ sumDaysRemaining(list); } return list; } @Override public boolean checkTask(String orderNo) { List list =tOrderTaskMapper.selectOrderTask(orderNo); for (TOrderTaskBo bo : list) { if (bo.getType()==5&&bo.getProjectStatus()!= NewProjectStatus.YXZ.getCode()){ return true; } } return false; } @Override public List dunOrderList(String orderNo) { return tDunLogMapper.selectByOrderNo(orderNo); } @Override public int addDunOrder(InputDunOrder in) { TDunLog log = new TDunLog(); log.setOrderNo(in.getOrderNo()); log.setId(UUID.randomUUID().toString()); log.setType(1); log.setAttachmentUrl(in.getAttUrl()); log.setDumBy(TokenManager.getAdminId()); try { log.setDumTime(DateUtils.parseDate(in.getDate(),AFTConstants.YYYYMMDD)); } catch (ParseException e) { e.printStackTrace(); } return tDunLogMapper.insertSelective(log); } @Override public int addLagalAffairsLog(InputOrderLegalAffairs in) { TOrderLegalAffairs la = new TOrderLegalAffairs(); la.setOrderNo(in.getOrderNo()); la.setRemarks(in.getRemarks()); la.setType(in.getType()); la.setStatus(in.getStatus()); la.setAttachmentUrl(in.getAttachmentUrl()); la.setAid(TokenManager.getAdminId()); la.setOperationTime(DateUtils.StringToDate(in.getDate(),AFTConstants.YYYYMMDD)); TOrderMid tm = new TOrderMid(); tm.setOrderNo(in.getOrderNo()); tm.setLegalAffairsType(in.getType()); tm.setOperationTime(la.getOperationTime()); tm.setLegalAffairsStatus(in.getStatus()); tOrderMidMapper.updateByOrderNo(tm); return tOrderLegalAffairsMapper.insertSelective(la); } @Override public List lagalAffairsLogList(String orderNo) { return tOrderLegalAffairsMapper.lagalAffairsLogList(orderNo); } @Override public Result orderListExprot(InputOrderListBo in) { List use = getLegalAffairsOrder(in); NewExcelUtil newExcelUtil; List list=new ArrayList<>(); String tile= new String(); if (in.getType()==0){ for (OutOrderLegalAffairsListBo out : use) { OutOrderLegalAffairsSalesmanBo bo = new OutOrderLegalAffairsSalesmanBo(); BeanUtils.copyProperties(out,bo); list.add(bo); } newExcelUtil=new NewExcelUtil<>(OutOrderLegalAffairsSalesmanBo.class); tile="订单催款列表"; }else { for (OutOrderLegalAffairsListBo out : use) { OutOrderLegalAffairsBo bo = new OutOrderLegalAffairsBo(); BeanUtils.copyProperties(out,bo); list.add(bo); } newExcelUtil=new NewExcelUtil<>(OutOrderLegalAffairsBo.class); if(in.getType()==1){tile="法务催款列表";} else if(in.getType()==2){tile="延期法务列表";} else if(in.getType()==3){tile="已完成法务列表";} } StringBuffer sb=new StringBuffer("搜索条件=》"); if (in.getUserName()!=null)sb=sb.append("客户名称:").append(in.getUserName()).append(","); if (in.getLegalAffairs()!=null)sb=sb.append("转交法务:").append(in.getLegalAffairs()==0?"未转交":"已转交").append(","); if (in.getContractNo()!=null)sb=sb.append("合同编号:").append(in.getContractNo()).append(","); if (in.getDepName()!=null)sb=sb.append("订单部门:").append(in.getDepName()).append(","); if (in.getStartTime()!=null&&in.getEndTime()!=null){ if (in.getType()==0)sb=sb.append("催款启动时间:"); if (in.getType()==1||in.getType()==2||in.getType()==3)sb=sb.append("法务时间:"); sb=sb.append(in.getStartTime()).append("~").append(in.getEndTime()).append(","); } if(in.getStatus()!=null){ sb=sb.append("完成状态:"); if (in.getStatus()==1)sb=sb.append("已回款").append(","); else if (in.getStatus()==2)sb=sb.append("已诉讼").append(","); else if (in.getStatus()==3)sb=sb.append("已坏账处理").append(","); } return newExcelUtil.exportExcel(list,tile,uploadPath,sb.substring(0,sb.length()-1)); } }