package com.goafanti.organization.service.impl; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; 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.mail.MessagingException; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; 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.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.bo.Error; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.dao.AdminMapper; import com.goafanti.common.dao.CompanyLibraryMapper; import com.goafanti.common.dao.FinancialPaymentMapper; import com.goafanti.common.dao.NoticeMapper; import com.goafanti.common.dao.OfficialFeePriceMapper; import com.goafanti.common.dao.PatentPriceMapper; import com.goafanti.common.dao.PaymentLogMapper; import com.goafanti.common.dao.PaymentNodeMapper; import com.goafanti.common.dao.SoftWritingPriceMapper; import com.goafanti.common.dao.TOrderOutsourceMapper; import com.goafanti.common.dao.TOrderPaymentMapper; import com.goafanti.common.dao.TOrderTaskMapper; import com.goafanti.common.dao.ThirdPartyCompanyMapper; import com.goafanti.common.enums.NoticeStatus; import com.goafanti.common.error.BusinessException; import com.goafanti.common.model.CompanyLibrary; import com.goafanti.common.model.Notice; import com.goafanti.common.model.OfficialFeePrice; import com.goafanti.common.model.PatentPrice; import com.goafanti.common.model.PaymentLog; import com.goafanti.common.model.PaymentNode; import com.goafanti.common.model.SoftWritingPrice; import com.goafanti.common.model.TOrderPayment; import com.goafanti.common.model.TOrderTask; import com.goafanti.common.model.ThirdPartyCompany; import com.goafanti.common.utils.DateUtils; import com.goafanti.common.utils.ExportExcelUtil; import com.goafanti.common.utils.SendEmailUtil; 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.OrderOutsourceDtails; import com.goafanti.order.bo.TOrderTaskDetailBo; import com.goafanti.order.enums.NewOrderDunType; import com.goafanti.order.enums.ProjectNewStage; import com.goafanti.organization.bo.InputNodeList; import com.goafanti.organization.bo.InputPaymentList; import com.goafanti.organization.bo.InputPaymentNode; import com.goafanti.organization.bo.InuptFinancialPayment; import com.goafanti.organization.bo.NoticeInformationBo; import com.goafanti.organization.bo.OutPaymentLog; import com.goafanti.organization.bo.OutPaymentNode; import com.goafanti.organization.bo.OutThirdPartyCompany; import com.goafanti.organization.bo.outFinancialPayment; import com.goafanti.organization.bo.outNodeList; import com.goafanti.organization.bo.outPaymentList; import com.goafanti.organization.bo.outProjectBo; import com.goafanti.organization.bo.outOrderPayment; import com.goafanti.organization.service.ThirdPartyCompanyService; @Service public class ThirdPartyCompanyServiceImpl extends BaseMybatisDao implements ThirdPartyCompanyService { @Autowired private ThirdPartyCompanyMapper thirdPartyCompanyMapper; @Autowired private CompanyLibraryMapper companyLibraryMapper; @Autowired private PaymentNodeMapper paymentNodeMapper; @Autowired private TOrderPaymentMapper tOrderPaymentMapper; @Autowired private PaymentLogMapper paymentLogMapper; @Autowired private AdminMapper adminMapper; @Autowired private NoticeMapper noticeMapper; @Autowired private FinancialPaymentMapper financialPaymentMapper; @Autowired private TOrderTaskMapper tOrderTaskMapper; @Autowired private SoftWritingPriceMapper softWritingPriceMapper; @Autowired private OfficialFeePriceMapper officialFeePriceMapper; @Autowired private PatentPriceMapper patentPriceMapper; @Autowired private TOrderOutsourceMapper tOrderOutsourceMapper; @Override public int addCompany(ThirdPartyCompany t,Integer calculation) { CompanyLibrary c=new CompanyLibrary(); String aid=TokenManager.getAdminId(); if(calculation==0) { List list=companyLibraryMapper.selectName(t.getCompanyName(),1,aid); if (list.size()<1) { c.setCompanyName(t.getCompanyName()); c.setAid(aid); c.setType(1);//类型 0软著 1其他 2专利 companyLibraryMapper.insertSelectiveGetId(c); t.setCid(c.getId()); }else { t.setCid(list.get(0)); } t.setTotalAmount(t.getUnitPrice().multiply(new BigDecimal(t.getQuantity()))); } thirdPartyCompanyMapper.insertSelective(t); return 1; } @Override public int updateCompany(ThirdPartyCompany t,Integer calculation) { if (calculation==0) {//0其他 1计算 CompanyLibrary c=new CompanyLibrary(); String aid=TokenManager.getAdminId(); List list=companyLibraryMapper.selectName(t.getCompanyName(),1,aid); if (list.size()<1) { c.setCompanyName(t.getCompanyName()); c.setAid(aid); c.setType(1);//0系统 1录入 companyLibraryMapper.insertSelectiveGetId(c); t.setCid(c.getId()); }else { t.setCid(list.get(0)); } t.setTotalAmount(t.getUnitPrice().multiply(new BigDecimal(t.getQuantity()))); } thirdPartyCompanyMapper.updateByPrimaryKeySelective(t); return 1; } @Override public List selectVague(String name,Integer type) { String aid = null; if(type==null)type=1; if (type==1) aid=TokenManager.getAdminId(); return companyLibraryMapper.selectVague(name,type,aid); } @Override public int addPaymentNode(InputPaymentNode p) { if (StringUtils.isNoneBlank(p.getPartyTimes())) { p.setPartyTime(DateUtils.StringToDate(p.getPartyTimes(), AFTConstants.YYYYMMDD)); } return paymentNodeMapper.insertSelective(p); } @Override public boolean addNodeCheck(InputPaymentNode p) { ThirdPartyCompany t=thirdPartyCompanyMapper.selectByPrimaryKey(p.getCid()); List list=paymentNodeMapper.selectByTidAndCid(p.getTid(),p.getCid()); BigDecimal sum=p.getTotalAmount()==null?new BigDecimal(0):p.getTotalAmount(); for (OutPaymentNode pn : list) { if (p.getId()==null || !pn.getId().equals(p.getId())) { sum=sum.add(pn.getTotalAmount()); } } if(p.getUnitPrice()==null)p.setUnitPrice(t.getUnitPrice()); if(p.getTotalAmount()==null)p.setTotalAmount(p.getUnitPrice().multiply(new BigDecimal(p.getQuantity()))); if(p.getTotalAmount()==null)p.setTotalAmount(new BigDecimal(0)); if (p.getTotalAmount().compareTo(t.getTotalAmount())>0) { return true; } if (sum.compareTo(t.getTotalAmount())>0) { return true; } return false; } @Override public int updatePaymentNode(InputPaymentNode p) { if (StringUtils.isNoneBlank(p.getPartyTimes())) { p.setPartyTime(DateUtils.StringToDate(p.getPartyTimes(), AFTConstants.YYYYMMDD)); } if (p.getDunType()!=0) { PaymentNode pn=paymentNodeMapper.selectByPrimaryKey(p.getId()); pn.setPartyTime(null); paymentNodeMapper.updateByPrimaryKey(pn); } return paymentNodeMapper.updateByPrimaryKeySelective(p); } @Override public List selectCompany(Integer tid) { List list=thirdPartyCompanyMapper.selectByTid(tid); if (!TokenManager.hasRole(AFTConstants.FINANCE)&& !TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)&& !TokenManager.hasRole(AFTConstants.FINANCE_ADMIN)&& !TokenManager.hasRole(AFTConstants.OUTSOURCE_AUDITOR)) { outProjectBo op =null; if(!list.isEmpty()) op=tOrderOutsourceMapper.selectByTid(tid); //外包type if (op!=null && op.getStartType()!=null&&op.getStartType()==1) { for (OutThirdPartyCompany oc : list) { if(op.getProjectType()==null)op.setProjectType(0); if((op.getProjectType()==1&&oc.getType()==1)||(op.getProjectType()==2)) { oc.setUnitPrice("***"); oc.setTotalAmount("***"); } } } } return list; } @Override public List selectPaymentNode(Integer tid) { List list=paymentNodeMapper.selectByTid(tid,null); return list; } @Override public int deleteCompany(String id) { if (id.contains(",")) { String []ids =id.split(","); for (String s : ids) { thirdPartyCompanyMapper.deleteByPrimaryKey(Integer.valueOf(s)); } }else { thirdPartyCompanyMapper.deleteByPrimaryKey(Integer.valueOf(id)); } return 1; } @Override public int deletePaymentNode(String id) { if (id.contains(",")) { String []ids =id.split(","); for (String s : ids) { paymentNodeMapper.deleteByPrimaryKey(Integer.valueOf(s)); } }else paymentNodeMapper.deleteByPrimaryKey(Integer.valueOf(id)); return 1; } @Override public int addOrderPayment(TOrderPayment p) { p.setStatus(0); AdminListBo a =adminMapper.getDeptNameByAid(TokenManager.getAdminId()); p.setAid(a.getId()); p.setAname(a.getName()); tOrderPaymentMapper.insertSelectiveGetId(p); NoticeInformationBo ni=financialPaymentMapper.selectBypidGetNotice(p.getId()); addNoticAndSendEmail(ni,a,NoticeStatus.PAYMENT_NODE.getCode()); PaymentLog pl=new PaymentLog(p.getId(),0,"发起付款:"+p.getRemarks(),a.getId(),a.getName()); paymentLogMapper.insertSelective(pl); return 1; } @Override public outOrderPayment OrderPaymentDetails(Integer id) { TOrderPayment tp=tOrderPaymentMapper.selectByPrimaryKey(id); Integer type=tp.getChooseType(); outOrderPayment op=tOrderPaymentMapper.selectByidGetDetails(id); op.setChooseType(type); ThirdPartyCompany tpc=thirdPartyCompanyMapper.selectByPrimaryKey(tp.getTpcId()); if(!op.getCompanyName().equals(tpc.getCompanyName()))op.setCompanyName(op.getCompanyName()+"("+tpc.getCompanyName()+")"); if (type==0) {//支付种类 0第三方 1催款 2官费 op.setInitialQuantity(tpc.getQuantity()); op.setInitialTotalAmount(tpc.getTotalAmount().toString()); op.setInitialUnitPrice(tpc.getUnitPrice().toString()); op.setInitialPaymentAmount(tpc.getPartyAmount().toString()); }else if (type==1) { PaymentNode pn=paymentNodeMapper.selectByPrimaryKey(tp.getNodeId()); op.setInitialQuantity(pn.getQuantity()); op.setInitialTotalAmount(pn.getTotalAmount().toString()); op.setInitialUnitPrice(pn.getUnitPrice().toString()); op.setInitialPaymentAmount(pn.getPartyAmount().toString()); }else if (type==2) { op.setInitialQuantity(tpc.getQuantity()); TOrderTask tk=tOrderTaskMapper.selectByPrimaryKey(tp.getTid()); OrderOutsourceDtails out=tOrderOutsourceMapper.selectByOrderNo(null, tp.getTid().toString()); OfficialFeePrice of=officialFeePriceMapper.selectBytype(out.getPatentNameType()); if (tk.getCostReduction()==0) { op.setInitialUnitPrice(of.getAmount().toString()); }else { op.setInitialUnitPrice(of.getProportion85().toString()); } op.setInitialTotalAmount(new BigDecimal( op.getInitialUnitPrice()).multiply(new BigDecimal(op.getInitialQuantity())).toString()); } if (!TokenManager.hasRole(AFTConstants.FINANCE)&& !TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)&& !TokenManager.hasRole(AFTConstants.FINANCE_ADMIN)&& !TokenManager.hasRole(AFTConstants.OUTSOURCE_AUDITOR)) { outProjectBo ob=tOrderOutsourceMapper.selectByTid(tp.getTid()); if (ob!=null &&ob.getStartType()!=null&& ob.getStartType()==1) { if((ob.getProjectType()==1&&ob.getPatentType()==0)||(ob.getProjectType()==2)) { op.setInitialUnitPrice("***"); op.setInitialTotalAmount("***"); } } } return op; } @Override public int updateOrderPayment(TOrderPayment p) { TOrderPayment tp=new TOrderPayment(); tp.setId(p.getId()); tp.setRemarks(p.getRemarks()); tp.setStatus(p.getStatus()); Integer type=NoticeStatus.PAYMENT_NODE.getCode(); String auditStr="重新发起付款:"; //状态 0审核 1待支付 2驳回 3已支付 4取消 if (p.getStatus()==0) { tp.setApplicationAmount(p.getApplicationAmount()); tp.setChooseType(p.getChooseType()); tp.setPaymentType(p.getPaymentType()); tp.setPaymentAmount(p.getPaymentAmount()); tp.setQuantity(p.getQuantity()); tp.setPaymentStatus(p.getPaymentStatus()); }else if (p.getStatus()==1) { type= NoticeStatus.PAYMENT_YES.getCode(); tp.setApplicationAmount(p.getApplicationAmount()); tp.setQuantity(p.getQuantity()); auditStr="审核通过:"; }else if(p.getStatus()==2) { type= NoticeStatus.PAYMENT_NO.getCode(); tp.setApplicationAmount(p.getApplicationAmount()); auditStr="审核驳回:"; }else if (p.getStatus()==3) { type=NoticeStatus.PAYMENT_COMPLETE.getCode(); tp.setPaymentAmount(p.getPaymentAmount()==null?p.getPaymentAmount():p.getApplicationAmount()); confirmPayment(p); auditStr="审核完成"; }else if(p.getStatus()==4) { auditStr="付款取消"; } NoticeInformationBo ni=financialPaymentMapper.selectBypidGetNotice(p.getId()); AdminListBo a =adminMapper.getDeptNameByAid(TokenManager.getAdminId()); addNoticAndSendEmail(ni,a,type); PaymentLog pl=new PaymentLog(p.getId(),p.getStatus(),auditStr+p.getAuditNotes()==null?"":p.getAuditNotes(),a.getId(),a.getName()); paymentLogMapper.insertSelective(pl); return tOrderPaymentMapper.updateByPrimaryKeySelective(tp); } private void confirmPayment(TOrderPayment p) { //如果确定支付 int flag=0; TOrderPayment tp=tOrderPaymentMapper.selectByPrimaryKey(p.getId()); ThirdPartyCompany tpc=new ThirdPartyCompany(); if (p.getPaymentAmount()==null||p.getPaymentAmount().compareTo(new BigDecimal(0))==0) { p.setPaymentAmount(tp.getApplicationAmount()); } if(tp.getChooseType()==0){ tpc=thirdPartyCompanyMapper.selectByPrimaryKey(tp.getTpcId()); }else if (tp.getChooseType()==1) { PaymentNode pn=paymentNodeMapper.selectByPrimaryKey(tp.getNodeId()); BigDecimal count=pn.getTotalAmount(); BigDecimal party=pn.getPartyAmount(); party=party.add(p.getPaymentAmount()); if (party.compareTo(new BigDecimal(0))==0) { flag=0; }else if (party.compareTo(count)==0) { flag=2; }else if (party.compareTo(count)==-1) { flag=1; } pn.setStatus(flag); pn.setPartyAmount(p.getPaymentAmount()); paymentNodeMapper.updateByPrimaryKeySelective(pn); tpc=thirdPartyCompanyMapper.selectByPrimaryKey(pn.getCid()); }else if(tp.getChooseType()==2){ tpc=thirdPartyCompanyMapper.selectByPrimaryKey(tp.getTpcId()); tpc.setOfficialAmount(tpc.getOfficialAmount().add(p.getPaymentAmount())); } tpc.setPartyAmount(tpc.getPartyAmount().add(p.getPaymentAmount())); p.setPaymentAmount(p.getApplicationAmount()); financialPaymentMapper.updateOrderCost(p.getId(),p.getPaymentAmount()); thirdPartyCompanyMapper.updateByPrimaryKeySelective(tpc); } @Override public List selectPaymentLog(Integer id) { return paymentLogMapper.selectByPid(id); } @Override public List selectOrderPayment(Integer id) { List list=tOrderPaymentMapper.selectByTid(id); if (!TokenManager.hasRole(AFTConstants.FINANCE)&& !TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)&& !TokenManager.hasRole(AFTConstants.FINANCE_ADMIN)&& !TokenManager.hasRole(AFTConstants.OUTSOURCE_AUDITOR)) { outProjectBo op =null; if(!list.isEmpty()) op=tOrderOutsourceMapper.selectByTid(id); if (op!=null &&op.getStartType()!=null&&op.getStartType()==1) { if((op.getProjectType()==1&&op.getPatentType()==0)||(op.getProjectType()==2)) { for (outOrderPayment oc : list) { if (oc.getChooseType()!=2) { oc.setApplicationAmount("***"); } } } } } return list; } @Override public int addfinancialPayment(InuptFinancialPayment f) { f.setPaymentTime(DateUtils.StringToDate(f.getPaymentTimes(), AFTConstants.YYYYMMDD)); financialPaymentMapper.insertSelectiveGetId(f); return f.getId(); } @Override public List selectfinancialPayment(Integer id) { return financialPaymentMapper.selectByPid(id); } public void addNoticAndSendEmail(NoticeInformationBo in,AdminListBo a,Integer type) { String str=NoticeStatus.getValueByCode(type)+": 订单编号 -"+in.getOrderNo()+ ",客户名称:"+in.getBuyerName()+", 操作人:"+a.getName()+"-"+a.getDepartmentName()+"。"; Notice n =new Notice(); EmailBo bo = new EmailBo(NoticeStatus.getValueByCode(type), a.getEmail(), a.getDepartmentName(), a.getName(), in.getOrderNo(), in.getSalesmanName()); n.setId(UUID.randomUUID().toString()); if (type==NoticeStatus.PAYMENT_NODE.getCode()||type==NoticeStatus.PAYMENT_NODE.getCode()) { n.setAid(in.getFinanceId()); bo.setAddress(in.getFinanceEmail()); } else if(type==NoticeStatus.PAYMENT_NO.getCode()||type==NoticeStatus.PAYMENT_YES.getCode() ||type==NoticeStatus.PAYMENT_COMPLETE.getCode()) { n.setAid(in.getTechId()); bo.setAddress(in.getTechEmail()); } n.setNoticeType(type); n.setContent(str); n.setReaded(0);//未读 noticeMapper.insertSelective(n); if(StringUtils.isNotBlank(a.getEmail())) { try { SendEmailUtil.getInstance().send(bo); } catch (UnsupportedEncodingException | MessagingException e) { e.printStackTrace(); } } } @Override public boolean checkPayment(TOrderPayment p) { BigDecimal total=new BigDecimal(0); BigDecimal a=p.getApplicationAmount()==null?new BigDecimal(0):p.getApplicationAmount(); List list=new ArrayList<>(); //支付种类 0第三方 1催款2官费 if (p.getChooseType()==0) { //首先不能大于第三方 list=tOrderPaymentMapper.selectList(p.getTpcId(),null,p.getChooseType()); }else if (p.getChooseType()==1) { list=tOrderPaymentMapper.selectList(null,p.getNodeId(),p.getChooseType()); }else if (p.getChooseType()==2) { list=tOrderPaymentMapper.selectList(p.getTpcId(),null,p.getChooseType()); } for (outOrderPayment o : list) { a=a.add(new BigDecimal(o.getApplicationAmount())); } if (p.getChooseType()==0) { ThirdPartyCompany t=thirdPartyCompanyMapper.selectByPrimaryKey(p.getTpcId()); total=t.getTotalAmount(); }else if (p.getChooseType()==1) { PaymentNode n=paymentNodeMapper.selectByPrimaryKey(p.getNodeId()); total=n.getTotalAmount(); }else if (p.getChooseType()==2) { OutThirdPartyCompany ot=thirdPartyCompanyMapper.selectByIdPuls(p.getTpcId()); if (ot.getCostReduction()==0) { total=new BigDecimal(ot.getOfficialUnitPrice()).multiply(new BigDecimal(ot.getQuantity())); }else { total=new BigDecimal(ot.getReductionAmount()).multiply(new BigDecimal(ot.getQuantity())); } } if (a.compareTo(total) != 1) { return false; } return true; } @Override public boolean checkprojectDun(TOrderPayment p) { PaymentNode pn=paymentNodeMapper.selectByPrimaryKey(p.getNodeId()); TOrderTaskDetailBo tt=tOrderTaskMapper.getOrderTaskDetail(p.getTid().toString()); // 项目状态 0-项目待提交 1-项目已提交,2-项目评审,3-项目立项,4-项目公示,5-项目抽查,6-项目备案,7-项目下证,8-项目验收, // 9-项目拨款 10- 项目进度10% 11- 项目进度30% 12- 项目进度70% if(pn.getDunType()==1) { return false; } if (pn.getDunType()==0&&pn.getPartyTime().getTime()7&&tt.getProjectStatus()<10)) { return false; }else if (NewOrderDunType.COMMON_NGS.getCode()==Integer.valueOf(""+pn.getProjectType()+pn.getDunType()) &&(tt.getProjectStatus()>3&&tt.getProjectStatus()<10)) { return false; }else if (NewOrderDunType.COMMON_XZ.getCode()==Integer.valueOf(""+pn.getProjectType()+pn.getDunType()) &&(tt.getProjectStatus()>6&&tt.getProjectStatus()<10)) { return false; } else if (NewOrderDunType.KJXM_LX.getCode()==Integer.valueOf(""+pn.getProjectType()+pn.getDunType()) &&(tt.getProjectStatus()>2&&tt.getProjectStatus()<10)) { return false; } else if (NewOrderDunType.KJXM_BK.getCode()==Integer.valueOf(""+pn.getProjectType()+pn.getDunType()) &&(tt.getProjectStatus()>8&&tt.getProjectStatus()<10)) { return false; } else if (NewOrderDunType.KJJR_BK.getCode()==Integer.valueOf(""+pn.getProjectType()+pn.getDunType()) &&(tt.getProjectStatus()>8&&tt.getProjectStatus()<10)) { return false; } else if (NewOrderDunType.RJKF_LX.getCode()==Integer.valueOf(""+pn.getProjectType()+pn.getDunType()) &&(tt.getProjectStatus()>2&&tt.getProjectStatus()<10)) { return false; } else if (NewOrderDunType.RJKF_WZ.getCode()==Integer.valueOf(""+pn.getProjectType()+pn.getDunType()) &&(tt.getProjectStatus()>7&&tt.getProjectStatus()<10)) { return false; } else if (NewOrderDunType.ZSCQ_GS_SL_XZ.getCode()==Integer.valueOf(""+pn.getProjectType()+pn.getDunType())) { if (tt.getBpType()==1&&(tt.getProjectStatus()>7&&tt.getProjectStatus()<10)) { return false; }else if (tt.getBpType()!=1&&(tt.getProjectStatus()>3&&tt.getProjectStatus()<10)){ return false; } } else if (NewOrderDunType.ZSCQ_XZ.getCode()==Integer.valueOf(""+pn.getProjectType()+pn.getDunType()) &&(tt.getProjectStatus()>6&&tt.getProjectStatus()<10)) { return false; } return true; } @SuppressWarnings("unchecked") @Override public Pagination selectPaymentList(InputPaymentList i) { Map map =new HashMap<>(); map.put("aid", TokenManager.getAdminId()); if (i.getContractNo()!=null)map.put("contractNo", i.getContractNo()); if (i.getOrderNo()!=null)map.put("orderNo", i.getOrderNo()); if (i.getUserName()!=null)map.put("userName", i.getUserName()); if (i.getDepId()!=null)map.put("depId", i.getDepId()); if (i.getAname()!=null)map.put("aname", i.getAname()); if (i.getFinanceName()!=null)map.put("financeName", i.getFinanceName()); if (i.getCname()!=null)map.put("cname", i.getCname()); if (i.getPname()!=null)map.put("pname", i.getPname()); if (i.getStatus()!=null)map.put("status", i.getStatus()); if (TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)) { map.put("lvl", 1); }else if (TokenManager.hasRole(AFTConstants.FINANCE_ADMIN)||TokenManager.hasRole(AFTConstants.VICE_CEO)|| TokenManager.hasRole(AFTConstants.CED)||TokenManager.hasRole(AFTConstants.SUPERADMIN)|| TokenManager.hasRole(AFTConstants.APPROVAL_DECISION)) { map.put("lvl", 2); }else if (TokenManager.hasRole(AFTConstants.TECH)||TokenManager.hasRole(AFTConstants.TECH_MANAGER)) { map.put("lvl", 3); }else { map.put("lvl", 0); } return (Pagination)findPage("selectPaymentList","selectPaymentCount", map,i.getPageNo(),i.getPageSize()); } @SuppressWarnings("unchecked") @Override public Pagination selectPaymentList(InputNodeList i) { Map map =new HashMap<>(); map.put("aid", TokenManager.getAdminId()); if (i.getContractNo()!=null)map.put("contractNo", i.getContractNo()); if (i.getOrderNo()!=null)map.put("orderNo", i.getOrderNo()); if (i.getUserName()!=null)map.put("userName", i.getUserName()); if (i.getCname()!=null)map.put("cname", i.getCname()); if (i.getPname()!=null)map.put("pname", i.getPname()); if (i.getStatus()!=null)map.put("status", i.getStatus()); if (i.getStartTime()!=null&&i.getEndTime()!=null) { map.put("startTime", DateUtils.StringToDate(i.getStartTime(), AFTConstants.YYYYMMDD)); map.put("endTime", DateUtils.StringToDate(i.getEndTime()+" 23:59:59", AFTConstants.YYYYMMDDHHMMSS)); } if (TokenManager.hasRole(AFTConstants.FINANCE)) { map.put("lvl", 1); }else if (TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)) { map.put("lvl", 2); }else if (TokenManager.hasRole(AFTConstants.FINANCE_ADMIN)||TokenManager.hasRole(AFTConstants.VICE_CEO)|| TokenManager.hasRole(AFTConstants.CED)||TokenManager.hasRole(AFTConstants.SUPERADMIN)|| TokenManager.hasRole(AFTConstants.APPROVAL_DECISION)) { map.put("lvl", 3); }else { map.put("lvl", 0); } return (Pagination)findPage("selectNodeList","selectNodeCount", map,i.getPageNo(),i.getPageSize()); } @Override public int insertSoftWritingPrice(SoftWritingPrice s) { return softWritingPriceMapper.insertSelective(s); } @Override public int updateSoftWritingPrice(SoftWritingPrice s) { // return softWritingPriceMapper.updateByPrimaryKeySelective(s); } @Override public Integer pushSelectByCid(String companyName,int i) { String aid=null; if (i==1) { aid=TokenManager.getAdminId(); } List list=companyLibraryMapper.selectName(companyName,i,aid); if (list.size()<1) { CompanyLibrary c=new CompanyLibrary(); c.setCompanyName(companyName); c.setType(i); companyLibraryMapper.insertSelectiveGetId(c); return c.getId(); }else { return list.get(0); } } @SuppressWarnings("unchecked") @Override public Pagination listSoftWritingPrice(SoftWritingPrice s, Integer pageNo, Integer pageSize) { Map map =new HashMap<>(); map.put("s", s); return (Pagination)findPage("softWritingPriceList","softWritingPriceCount", map,pageNo,pageSize); } @Override public int deleteSoftWritingPrice(Integer id) { SoftWritingPrice sw=softWritingPriceMapper.selectByPrimaryKey(id); if (sw.getCid()!=null) { companyLibraryMapper.deleteByPrimaryKey(sw.getCid()); } return softWritingPriceMapper.deleteByPrimaryKey(id); } @Override public boolean checkSoftWritingPrice(SoftWritingPrice s) { SoftWritingPrice sw=new SoftWritingPrice(); if(s.getId()!=null)sw=softWritingPriceMapper.selectByPrimaryKey(s.getId()); if (s.getId()!=null) { s.setCid(sw.getCid()); } Listlist=softWritingPriceMapper.checkSoftWritingPrice(s); if (list.size()<1) { return false; }else if (list.size()==1&&s.getId()!=null) { for (SoftWritingPrice ss : list) { if(ss.getId().equals(s.getId()))return false; } } return true; } @Override public Map updateGroupPayment(String ids) { String [] idss=ids.split(","); Listelist=new ArrayList<>(); List list=new ArrayList<>(); List nlist=new ArrayList<>(); Date date=new Date(); for (String s : idss) { TOrderPayment top=tOrderPaymentMapper.selectByPrimaryKey(Integer.valueOf(s)); if (top!=null&&top.getStatus()==1) { top.setStatus(3); top.setPaymentAmount(top.getApplicationAmount()); tOrderPaymentMapper.updateByPrimaryKeySelective(top); list.add(top.getId()); //做已付款金额计算 confirmPayment(top); //发送站内通知 Notice n =new Notice(); n.setId(UUID.randomUUID().toString()); NoticeInformationBo ni=financialPaymentMapper.selectBypidGetNotice(Integer.valueOf(s)); AdminListBo a =adminMapper.getDeptNameByAid(TokenManager.getAdminId()); n.setAid(ni.getTechId()); n.setCreateTime(date); n.setNoticeType(NoticeStatus.PAYMENT_COMPLETE.getCode()); String str=NoticeStatus.getValueByCode(n.getNoticeType())+": 订单编号 -"+ni.getOrderNo()+ ",客户名称:"+ni.getBuyerName()+", 操作人:"+a.getName()+"-"+a.getDepartmentName()+"。"; n.setContent(str); n.setReaded(0);//未读 nlist.add(n); }else { elist.add(Integer.valueOf(s)); } } if(!nlist.isEmpty())noticeMapper.insertBatch(nlist); // if(!list.isEmpty())tOrderPaymentMapper.updateByids(list); Map map=new HashMap<>(); map.put("OK", list); map.put("fail", elist); return map; } @Override public int addOfficialFeePrice(OfficialFeePrice o) { return officialFeePriceMapper.insertSelective(o); } @Override public int updateOfficialFeePrice(OfficialFeePrice o) { return officialFeePriceMapper.updateByPrimaryKeySelective(o); } @Override public int deleteOfficialFeePrice(Integer id) { return officialFeePriceMapper.deleteByPrimaryKey(id); } @Override public List listOfficialFeePrice(String name) { return officialFeePriceMapper.selectListByname(name); } @Override public int deleteFinancialPayment(Integer id) { return financialPaymentMapper.deleteByPrimaryKey(id); } @Override public void calculationUnitPrice(ThirdPartyCompany t) { SoftWritingPrice s=new SoftWritingPrice(); s.setCid(t.getCid()); s.setMaterial(t.getMaterial()); s.setUrgent(t.getUrgent()); List list=softWritingPriceMapper.checkSoftWritingPrice(s); for (SoftWritingPrice sw : list) { t.setUnitPrice(sw.getUnitPrice()); t.setTotalAmount(sw.getUnitPrice().multiply(new BigDecimal(t.getQuantity()))); } } @Override public void calculationPatentUnitPrice(ThirdPartyCompany t,Integer patentType) { PatentPrice p=patentPriceMapper.selectBycid(t.getCid()); // 专利名称 0实用新型 1发明专利 2外观专利 3 其他 BigDecimal unitPrice=null; if (patentType==0) { unitPrice=p.getUtilityModel(); }else if (patentType==1) { unitPrice=p.getInventionPatent(); }else if (patentType==2) { unitPrice=p.getAppearancePatent(); } t.setUnitPrice(unitPrice); t.setTotalAmount(unitPrice.multiply(new BigDecimal(t.getQuantity()))); } @Override public int addpatentPrice(PatentPrice p) { return patentPriceMapper.insertSelective(p); } @Override public int updatepatentPrice(PatentPrice p) { return patentPriceMapper.updateByPrimaryKeySelective(p); } @Override public int deletepatentPrice(Integer id) { PatentPrice pp=patentPriceMapper.selectByPrimaryKey(id); if (pp.getCid()!=null) { companyLibraryMapper.deleteByPrimaryKey(pp.getCid()); } return patentPriceMapper.deleteByPrimaryKey(id); } @Override public List listpatentPrice(String name) { return patentPriceMapper.selectlist(name); } @Override public boolean addCompanyChekeNumber(ThirdPartyCompany t) { TOrderTask tt=tOrderTaskMapper.selectByPrimaryKey(t.getTid()); List list =thirdPartyCompanyMapper.selectByTid(t.getTid()); Integer count=t.getQuantity(); for (OutThirdPartyCompany out : list) { if (t.getId()==null||!t.getId().equals(out.getId())) { count+=out.getQuantity(); } } if (tt.getCommodityQuantity()>=count) { return false; } return true; } @Override public void checkGetAmount(TOrderPayment p) { if(p.getApplicationAmount()==null) { ThirdPartyCompany tpc=thirdPartyCompanyMapper.selectByPrimaryKey(p.getTpcId()); BigDecimal count =tpc.getUnitPrice().multiply(new BigDecimal(p.getQuantity())); p.setApplicationAmount(count); } } @Override public void exportPaymentList(HttpServletResponse response, InputPaymentList ip) throws IOException { OutputStream out = response.getOutputStream(); try { @SuppressWarnings("unchecked") List list=(List) selectPaymentList(ip).getList(); //支付编号 项目编号 项目名称 项目状态 分类名称 合同编号 订单编号 客户名称 部门名称 付款类型 本次申请金额 已支付 申请人 财务名称 状态 创建时间 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 (outPaymentList ob : (List)list) { //新增一行 XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1); for (int i = 0; i < comment.length; i++) { //当前列的只 String o = ""; switch (comment[i]) { // "支付编号","项目编号","项目名称","项目状态","分类名称","合同编号","订单编号","客户名称","部门名称","第三方机构名称","付款类型","本次申请金额", // "已支付","申请人","财务名称","状态","创建时间" case "支付编号": o = ob.getId().toString(); break; case "项目编号": o = ob.getTid().toString(); break; case "项目名称": o = ob.getPname(); break; case "项目状态": o = ProjectNewStage.getValueByCode(ob.getProjectStatus()); break; case "分类名称": o = ob.getCname(); break; case "合同编号": o = ob.getContractNo(); break; case "订单编号": o = ob.getOrderNo(); break; case "客户名称": o = ob.getCname(); break; case "部门名称": o = ob.getDepName(); break; case "第三方机构名称": o = ob.getCname(); break; case "付款类型": o = ob.getChooseType()==0?"第三方成本": ob.getChooseType()==1?"催款节点":ob.getChooseType()==2?"官费":""; break; case "本次申请金额": o = ob.getApplicationAmount().toString(); break; case "已支付": o = ob.getPaymentAmount(); break; case "申请人": o = ob.getAname(); break; case "财务名称": o = ob.getFinanceName(); break; case "状态": o = ob.getStatus()==0?"审核":ob.getStatus()==1?"待支付": ob.getStatus()==2?"驳回":ob.getStatus()==3?"已支付": ob.getStatus()==4?"已取消":""; break; case "创建时间": o = ob.getCreateTime(); 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) { e.printStackTrace(); throw new BusinessException(new Error("表格生成错误。")); }finally { out.flush(); out.close(); } } }