|
|
@@ -1,6 +1,8 @@
|
|
|
package com.goafanti.order.service.impl;
|
|
|
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.ParseException;
|
|
|
@@ -15,8 +17,12 @@ 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.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
@@ -77,6 +83,7 @@ import com.goafanti.order.bo.TOrderLogBo;
|
|
|
import com.goafanti.order.bo.TOrderNewBo;
|
|
|
import com.goafanti.order.bo.TOrderRefundBo;
|
|
|
import com.goafanti.order.bo.TOrderTaskBo;
|
|
|
+import com.goafanti.order.bo.TOrderTaskListBo;
|
|
|
import com.goafanti.order.enums.ActiveState;
|
|
|
import com.goafanti.order.enums.ApprovalNewState;
|
|
|
import com.goafanti.order.enums.LiquidationNewState;
|
|
|
@@ -244,7 +251,11 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
t.setApproval(ApprovalNewState.DSH.getCode());
|
|
|
}
|
|
|
//生成流转
|
|
|
- addOrderLog(t.getOrderNo(),OrderLogProcess.TJ.getCode());
|
|
|
+ TOrderLog tl=new TOrderLog();
|
|
|
+ tl.setOrderNo(t.getOrderNo());
|
|
|
+ tl.setProcess(OrderLogProcess.TJ.getCode());
|
|
|
+ tl.setAid(TokenManager.getAdminId());
|
|
|
+ addOrderLog(tl);
|
|
|
if (StringUtils.isBlank(t2.getContractNo())) {
|
|
|
//没有合同编号则生成
|
|
|
createContractNo(t);
|
|
|
@@ -358,11 +369,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void addOrderLog(String orderNo, Integer code) {
|
|
|
- TOrderLog tl=new TOrderLog();
|
|
|
- tl.setOrderNo(orderNo);
|
|
|
- tl.setProcess(code);
|
|
|
- tl.setAid(TokenManager.getAdminId());
|
|
|
+ public void addOrderLog(TOrderLog tl) {
|
|
|
tOrderLogMapper.insertSelective(tl);
|
|
|
|
|
|
}
|
|
|
@@ -456,6 +463,8 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
t.setOrderNo(orderNo);
|
|
|
List<String> aids = new ArrayList<>();
|
|
|
Integer type=null;
|
|
|
+ TOrderLog tl=new TOrderLog();
|
|
|
+ tl.setAid(TokenManager.getAdminId());
|
|
|
if (orderStatus==OrderNewState.QDSHTG.getCode()) {
|
|
|
t.setOutsource(outsource);
|
|
|
if (t2.getApproval()==ApprovalNewState.FTP.getCode()||
|
|
|
@@ -469,7 +478,9 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
aids.add(admin.getId());
|
|
|
}
|
|
|
t.setProcessStatus(ProcessStatus.YPWBSH.getCode());
|
|
|
- addOrderLog(orderNo, OrderLogProcess.FQWB.getCode());
|
|
|
+ tl.setOrderNo(orderNo);
|
|
|
+ tl.setProcess(OrderLogProcess.FQWB.getCode());
|
|
|
+ addOrderLog(tl);
|
|
|
//外包
|
|
|
o.setRefundStatus(0);
|
|
|
if(o.getId()==null) {
|
|
|
@@ -487,12 +498,16 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
}
|
|
|
}
|
|
|
type=NoticeStatus.ORDER_YES.getCode();
|
|
|
- addOrderLog(orderNo, OrderLogProcess.SH.getCode());
|
|
|
+ tl.setOrderNo(orderNo);
|
|
|
+ tl.setProcess(OrderLogProcess.SH.getCode());
|
|
|
+ addOrderLog(tl);
|
|
|
}else if (orderStatus==OrderNewState.QDSHJJ.getCode()) {//如果不通过新增驳回
|
|
|
if (outsource==0) {//非外包
|
|
|
t.setProcessStatus(ProcessStatus.YPYXY.getCode());
|
|
|
addBackOrder(orderNo, reason);
|
|
|
- addOrderLog(orderNo, OrderLogProcess.BH.getCode());
|
|
|
+ tl.setOrderNo(orderNo);
|
|
|
+ tl.setProcess(OrderLogProcess.SH.getCode());
|
|
|
+ addOrderLog(tl);
|
|
|
}
|
|
|
aids.add(t2.getSalesmanId());
|
|
|
type=NoticeStatus.ORDER_NO.getCode();
|
|
|
@@ -587,7 +602,10 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
tOrder.setOrderNo(t.getOrderNo());
|
|
|
tOrder.setOrderStatus(OrderNewState.TDZ.getCode());
|
|
|
tOrderNewMapper.updateByPrimaryKeySelective(tOrder);
|
|
|
- addOrderLog(t.getOrderNo(), OrderLogProcess.FQTD.getCode());
|
|
|
+ TOrderLog tl=new TOrderLog();
|
|
|
+ tl.setOrderNo(t.getOrderNo());
|
|
|
+ tl.setProcess(OrderLogProcess.FQTD.getCode());
|
|
|
+ addOrderLog(tl);
|
|
|
return tOrderRefundMapper.insertSelective(t);
|
|
|
}
|
|
|
|
|
|
@@ -600,6 +618,8 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
t.setOrderNo(orderNo);
|
|
|
List<String> aids = new ArrayList<>();
|
|
|
Integer type=null;
|
|
|
+ TOrderLog tl=new TOrderLog();
|
|
|
+ tl.setOrderNo(orderNo);
|
|
|
if (confirm==2) {
|
|
|
t.setApproval(2);
|
|
|
if(t2.getOutsource()==0) {
|
|
|
@@ -612,16 +632,17 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
}
|
|
|
}
|
|
|
type=NoticeStatus.ORDER_APPROVA_YES.getCode();
|
|
|
- addOrderLog(orderNo, OrderLogProcess.TP.getCode());
|
|
|
+ tl.setProcess(OrderLogProcess.TP.getCode());
|
|
|
} else {
|
|
|
t.setApproval(3);
|
|
|
t.setOrderStatus(OrderNewState.YBH.getCode());
|
|
|
t.setProcessStatus(ProcessStatus.YPYXY.getCode());
|
|
|
addBackOrder(orderNo, reason);
|
|
|
- addOrderLog(orderNo, OrderLogProcess.BH.getCode());
|
|
|
+ tl.setProcess(OrderLogProcess.BH.getCode());
|
|
|
aids.add(t2.getSalesmanId());
|
|
|
type=NoticeStatus.ORDER_APPROVA_NO.getCode();
|
|
|
}
|
|
|
+ addOrderLog(tl);
|
|
|
pushGeneralSendNoticeAndEmail(aids, type,t2.getOrderNo(), TokenManager.getAdminId());
|
|
|
return tOrderNewMapper.updateByPrimaryKeySelective(t);
|
|
|
}
|
|
|
@@ -776,19 +797,65 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
|
|
|
/**
|
|
|
* 获取催款数据
|
|
|
+ * @throws IOException
|
|
|
*/
|
|
|
- @SuppressWarnings("null")
|
|
|
@Override
|
|
|
- public XSSFWorkbook exportOrderDunData(String name, String orderNo,String adminName,String depId, String starTime, String endTime) {
|
|
|
- if(endTime!=null) endTime=endTime+" 23:59:59";
|
|
|
- List<TOrderNewBo> list=tOrderDunMapper.getOrderDunData(name,orderNo, adminName, depId,starTime,endTime);
|
|
|
- if (list==null && list.size()==0) {
|
|
|
- return null;
|
|
|
+ public void exportOrderDunData(String name,String orderNo,String starTime,String endTime,Integer specially,String adminName,
|
|
|
+ String depId,Integer pageNo,Integer pageSize,HttpServletResponse response) throws IOException {
|
|
|
+ OutputStream out = response.getOutputStream();
|
|
|
+ try {
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ List<TOrderNewBo> list=(List<TOrderNewBo>) dunOrderNewList( name, orderNo, starTime, endTime,
|
|
|
+ specially, adminName, depId, pageNo, pageSize).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 (TOrderNewBo ob : list) {
|
|
|
+ //新增一行
|
|
|
+ XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1);
|
|
|
+ for (int i = 0; i < comment.length; i++) {
|
|
|
+ //当前列的只
|
|
|
+ String o = "";
|
|
|
+ switch (comment[i]) {
|
|
|
+// "合同编号","订单编号","客户名称","订单负责人","订单部门","订单状态","项目负责人","签单金额","结算状态","已收款","应收款","项目状态","催收科目","催款启动时间"
|
|
|
+ case "合同编号": o = ob.getContractNo(); break;
|
|
|
+ case "订单编号": o = ob.getOrderNo().toString(); break;
|
|
|
+ case "客户名称": o = ob.getUserName(); break;
|
|
|
+ case "订单负责人": o = ob.getSalesmanName(); break;
|
|
|
+ case "订单部门": o = ob.getDepName(); break;
|
|
|
+ case "订单状态": o = OrderNewState.getValueByCode(ob.getOrderStatus());break;
|
|
|
+ case "签单金额": o = ob.getTotalAmount().toString(); break;
|
|
|
+ case "结算状态": o = LiquidationNewState.getValueByCode(ob.getLiquidationStatus()); break;
|
|
|
+ case "应收款": o = ob.getAccountsReceivable().toString(); break;
|
|
|
+ case "已收款": o = ob.getSettlementAmount().toString(); break;
|
|
|
+ case "未收款": o = ob.getUncollectedAmount().toString(); break;
|
|
|
+ case "项目状态": o = ProjectNewStage.getValueByCode(ob.getProjectStatus()); break;
|
|
|
+ case "催收科目": o = OrderDunSubject.getValueByCode(Integer.valueOf(ob.getDunSubject())); break;
|
|
|
+ case "催款启动时间": o = ob.getStartDate(); break;
|
|
|
+ case "签单时间": o = ob.getSignDate(); 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();
|
|
|
}
|
|
|
- String[] comment = {"订单编号","签单时间","客户名称","订单状态","签单金额(万元)","项目状态","结算状态","应收款(万元)","已收款(万元)","未收款(万元)","订单部门","订单负责人","催收科目","催款启动日期"};
|
|
|
- String filePath = uploadPath + "/OrderDun";
|
|
|
- XSSFWorkbook wb = ExportExcelUtil.exportOrderDunData(list, comment, filePath);
|
|
|
- return wb;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -963,5 +1030,68 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void exportOrderTaskData(String orderNo, HttpServletResponse response) throws IOException,BusinessException {
|
|
|
+ OutputStream out = response.getOutputStream();
|
|
|
+ try {
|
|
|
+ List<TOrderTaskBo> list=selectOrderTask(orderNo);
|
|
|
+ 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 (TOrderTaskBo ob : list) {
|
|
|
+ //新增一行
|
|
|
+ XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1);
|
|
|
+ for (int i = 0; i < comment.length; i++) {
|
|
|
+ //当前列的只
|
|
|
+ String o = "";
|
|
|
+ switch (comment[i]) {
|
|
|
+// "合同编号","订单编号","客户名称","订单负责人","订单部门","订单状态","项目负责人","是否主项目","项目别类","项目名称","项目数量",
|
|
|
+// "服务市价","证书編号","项目状态","项目说明"
|
|
|
+ case "合同编号": o = ob.getContractNo(); break;
|
|
|
+ case "订单编号": o = ob.getOrderNo().toString(); break;
|
|
|
+ case "客户名称": o = ob.getUserName(); break;
|
|
|
+ case "订单负责人": o = ob.getSalesmanName(); break;
|
|
|
+ case "订单部门": o = ob.getDepName(); break;
|
|
|
+ case "订单状态": o = OrderNewState.getValueByCode(ob.getOrderStatus());break;
|
|
|
+ case "项目负责人": o = ob.getSalesmanName(); break;
|
|
|
+ case "是否主项目": o = ob.getMain()==0?"否":"是"; break;
|
|
|
+ case "项目别类": o = ob.getCname(); break;
|
|
|
+ case "项目名称": o = ob.getCommodityName(); break;
|
|
|
+ case "项目数量": o = ob.getCommodityQuantity().toString(); break;
|
|
|
+ case "服务市价": o = ob.getCommodityPrice()!=null?ob.getCommodityPrice().toString():""; break;
|
|
|
+ case "证书編号": o = ob.getCertificateNumber(); break;
|
|
|
+ case "项目状态": o = ProjectNewStage.getValueByCode(ob.getProjectStatus()); break;
|
|
|
+ case "项目说明": o = ob.getTaskComment(); break;
|
|
|
+ case "外包(内部)公司": o = ob.getOutsourceName(); break;
|
|
|
+ case "外包(内部)价格": o = ob.getOutsourcePrice()!=null?ob.getOutsourcePrice().toString():""; 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();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|