|
|
@@ -1,10 +1,12 @@
|
|
|
package com.goafanti.order.service.impl;
|
|
|
|
|
|
-import java.io.FileNotFoundException;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
+import java.io.OutputStream;
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
@@ -12,12 +14,20 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.UUID;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
import org.apache.poi.ss.usermodel.Cell;
|
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
|
import org.apache.poi.ss.usermodel.Sheet;
|
|
|
import org.apache.poi.ss.usermodel.Workbook;
|
|
|
+import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFCell;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
|
|
|
+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;
|
|
|
@@ -40,15 +50,23 @@ import com.goafanti.common.model.TOrderNew;
|
|
|
import com.goafanti.common.model.TOrderTask;
|
|
|
import com.goafanti.common.model.TemporaryReceivables;
|
|
|
import com.goafanti.common.utils.DateUtils;
|
|
|
+import com.goafanti.common.utils.ExportExcelUtil;
|
|
|
import com.goafanti.common.utils.LoggerUtils;
|
|
|
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.OrderListBo;
|
|
|
+import com.goafanti.order.bo.OrderReportBo;
|
|
|
import com.goafanti.order.bo.ReceivablesListBo;
|
|
|
+import com.goafanti.order.bo.TOrderBonusBo;
|
|
|
import com.goafanti.order.bo.TemporaryReceivablesBo;
|
|
|
+import com.goafanti.order.enums.ApprovalNewState;
|
|
|
import com.goafanti.order.enums.BonusSubject;
|
|
|
import com.goafanti.order.enums.LiquidationNewState;
|
|
|
+import com.goafanti.order.enums.OrderNewState;
|
|
|
import com.goafanti.order.enums.ProcessStatus;
|
|
|
+import com.goafanti.order.enums.ProjectNewStage;
|
|
|
+import com.goafanti.order.service.FundManageOrderService;
|
|
|
import com.goafanti.order.service.OrderReceivablesService;
|
|
|
|
|
|
@Service
|
|
|
@@ -67,6 +85,9 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
|
|
|
@Autowired
|
|
|
private TOrderTaskMapper tOrderTaskMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private FundManageOrderService fundManageOrderService;
|
|
|
+
|
|
|
@Override
|
|
|
public int addReceivables(TemporaryReceivablesBo t) {
|
|
|
t.setAid(TokenManager.getAdminId());
|
|
|
@@ -237,17 +258,46 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
|
|
|
}
|
|
|
@SuppressWarnings("unchecked")
|
|
|
@Override
|
|
|
- public Pagination<ReceivablesListBo> listReceivables(String contractNo, String orderNo, String nickname,
|
|
|
- String depId,Integer pageSize,Integer pageNo) {
|
|
|
- Map<String,Object> map=new HashMap<String, Object>();
|
|
|
+ public Pagination<ReceivablesListBo> listReceivables(ReceivablesListBo rl,Integer status,String adminName, String adminDepId, String orderDepId, Integer pageSize,
|
|
|
+ Integer pageNo) {
|
|
|
+ Map<String,Object> parameter=new HashMap<String, Object>();
|
|
|
if(pageSize==null||pageSize<1)pageSize=10;
|
|
|
if(pageNo==null||pageNo<1)pageNo=1;
|
|
|
- if(StringUtils.isNotBlank(contractNo))map.put("contractNo", contractNo);
|
|
|
- if(StringUtils.isNotBlank(orderNo))map.put("orderNo", orderNo);
|
|
|
- if(StringUtils.isNotBlank(nickname))map.put("nickname", nickname);
|
|
|
- if(StringUtils.isNotBlank(depId))map.put("depId", depId);
|
|
|
- return (Pagination<ReceivablesListBo>) findPage("selectReceivablesList", "selectReceivablesCount", map, pageNo, pageSize);
|
|
|
+ if(StringUtils.isNotBlank(rl.getContractNo()))parameter.put("contractNo", rl.getContractNo());
|
|
|
+ if(StringUtils.isNotBlank(rl.getOrderNo()))parameter.put("orderNo", rl.getOrderNo());
|
|
|
+ if(StringUtils.isNotBlank(rl.getNickname()))parameter.put("nickname", rl.getNickname());
|
|
|
+ if(StringUtils.isNotBlank(rl.getCorporateName()))parameter.put("corporateName", rl.getCorporateName());
|
|
|
+ if(StringUtils.isNotBlank(adminName))parameter.put("adminName", adminName);
|
|
|
+ if(StringUtils.isNotBlank(adminDepId))parameter.put("adminDepId", adminDepId);
|
|
|
+ if(StringUtils.isNotBlank(orderDepId))parameter.put("orderDepId", orderDepId);
|
|
|
+ if(null!=status)parameter.put("status", status);
|
|
|
+ if(StringUtils.isNotBlank(TokenManager.getAdminId()))parameter.put("aid", TokenManager.getAdminId());
|
|
|
+ return (Pagination<ReceivablesListBo>) findPage("selectReceivablesList", "selectReceivablesCount", parameter, pageNo, pageSize);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> getCountlistReceivables(ReceivablesListBo rl, Integer status, String adminName,
|
|
|
+ String adminDepId, String orderDepId) {
|
|
|
+ Map<String,Object> parameter=new HashMap<String, Object>();
|
|
|
+ if(StringUtils.isNotBlank(rl.getContractNo()))parameter.put("contractNo", rl.getContractNo());
|
|
|
+ if(StringUtils.isNotBlank(rl.getOrderNo()))parameter.put("orderNo", rl.getOrderNo());
|
|
|
+ if(StringUtils.isNotBlank(rl.getNickname()))parameter.put("nickname", rl.getNickname());
|
|
|
+ if(StringUtils.isNotBlank(rl.getCorporateName()))parameter.put("corporateName", rl.getCorporateName());
|
|
|
+ if(StringUtils.isNotBlank(adminName))parameter.put("adminName", adminName);
|
|
|
+ if(StringUtils.isNotBlank(adminDepId))parameter.put("adminDepId", adminDepId);
|
|
|
+ if(StringUtils.isNotBlank(orderDepId))parameter.put("orderDepId", orderDepId);
|
|
|
+ if(null!=status)parameter.put("status", status);
|
|
|
+ if(StringUtils.isNotBlank(TokenManager.getAdminId()))parameter.put("aid", TokenManager.getAdminId());
|
|
|
+ //计算回收表的订单总金额与当前总收款额。
|
|
|
+ Map<String,Object> map=new HashMap<String, Object>();
|
|
|
+ map.put("amount", temporaryReceivablesMapper.getCountlistReceivablesAmount(parameter));
|
|
|
+ map.put("totalAmount", temporaryReceivablesMapper.getCountlistReceivablesTotalAmount(parameter));
|
|
|
+ return map;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
public void batchListReceivables(MultipartFile file) {
|
|
|
//获得Workbook工作薄对象
|
|
|
@@ -306,6 +356,8 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
|
|
|
}
|
|
|
}
|
|
|
trb.setAid(TokenManager.getAdminId());
|
|
|
+ trb.setCreateTime(new Date());
|
|
|
+ trb.setStatus(0);
|
|
|
list.add(trb);
|
|
|
}
|
|
|
}
|
|
|
@@ -366,5 +418,101 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
|
|
|
|
|
|
|
|
|
}
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Override
|
|
|
+ public void exportTemplate(HttpServletResponse response,OrderListBo order) throws Exception {
|
|
|
+ OutputStream out = response.getOutputStream();
|
|
|
+ //财务专员自己的id
|
|
|
+ order.setFinanceId(TokenManager.getAdminId());
|
|
|
+ //order.setProcessStatus(3);//分配给自己 改为前端 传3未分配 4已分配
|
|
|
+ order.setOrderStatus(2);//营销管理员审核通过
|
|
|
+ List<OrderListBo> list=(List<OrderListBo>) fundManageOrderService.financeList(order, 1, 9999).getList();
|
|
|
+ try {
|
|
|
+ //设计表头
|
|
|
+ String[] comment = {"订单编号", "合同编号","客户名称","订单部门","订单负责人","签单日期","下单日期",
|
|
|
+ "签单金额(万元)", "已开票金额(万元)", "已收金额(万元)","最近收款(万元)","结算状态","订单流程","是否特批"};
|
|
|
+ String fileName = "收款结算列表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
|
|
|
+ XSSFWorkbook wb =exportTemplateInfoS(comment,"收款结算",list);
|
|
|
+ //返回名称及参数
|
|
|
+ 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 XSSFWorkbook exportTemplateInfoS(String[] comment,String fileName,List<OrderListBo> list){
|
|
|
+
|
|
|
+ //map 数据 ,comment表头 (列名称)
|
|
|
+ //1,创建一个workbook,对应的是一个excel文件
|
|
|
+ XSSFWorkbook wb = new XSSFWorkbook();
|
|
|
+ int count = 0;
|
|
|
+ //遍历map
|
|
|
+ XSSFSheet sheet = wb.createSheet(fileName);
|
|
|
+ //3。创建一个row
|
|
|
+ XSSFRow row = sheet.createRow(0);
|
|
|
+ //4.创建一个cell
|
|
|
+ XSSFCell cell = row.createCell(0);
|
|
|
+ cell.setCellValue(fileName+"列表");
|
|
|
+ XSSFCellStyle style1 = ExportExcelUtil.setCellStyle1(wb);//标题
|
|
|
+ XSSFCellStyle style2 = ExportExcelUtil.setCellStyle2(wb);//正文
|
|
|
+ cell.setCellStyle(style1);
|
|
|
+ //合并列
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, comment.length-1));//合并单元格
|
|
|
+ //设置其他单位格式
|
|
|
+ //创建表头
|
|
|
+ XSSFRow row2 = sheet.createRow(1);
|
|
|
+ for(int i = 0; i < comment.length; i++){
|
|
|
+ sheet.setColumnWidth(i, 3000);//设置列宽
|
|
|
+ XSSFCell c = row2.createCell(i);
|
|
|
+ c.setCellValue(comment[i]);
|
|
|
+ c.setCellStyle(style2);
|
|
|
+ }
|
|
|
+ //根据列表编写文档
|
|
|
+ addSettlementReceivablesList(comment, list, sheet);
|
|
|
+
|
|
|
+ return wb;
|
|
|
+ }
|
|
|
+ private static void addSettlementReceivablesList(String[] comment, List<OrderListBo> list, XSSFSheet sheet) {
|
|
|
+ for (OrderListBo 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.getOrderNo().toString(); break;
|
|
|
+ case "合同编号": o = ob.getContractNo(); break;
|
|
|
+ case "客户名称": o = ob.getBuyerName(); break;
|
|
|
+ case "订单部门": o = ob.getDepartmentName(); break;
|
|
|
+ case "订单负责人": o = ob.getSellerName(); break;
|
|
|
+ case "签单日期": o = ob.getSignTime(); break;
|
|
|
+ case "下单日期": o = ob.getCreateTime(); break;
|
|
|
+ case "签单金额(万元)":o=ob.getSignTotalAmount();break;
|
|
|
+ case "已开票金额(万元)":o="";break;
|
|
|
+ case "已收金额(万元)":o=ob.getActuallyTotalAmount();break;
|
|
|
+ case "最近收款(万元)":o="";break;
|
|
|
+ case "结算状态":o=LiquidationNewState.getValueByCode(ob.getLiquidationStatus());break;
|
|
|
+ case "订单流程":o=ProcessStatus.getValueByCode(ob.getProcessStatus());break;
|
|
|
+ case "是否特批":o=ApprovalNewState.getValueByCode(ob.getApproval());break;
|
|
|
+ default: o = ""; break;
|
|
|
+ }
|
|
|
+ XSSFCell c = r.createCell(i);
|
|
|
+ c.setCellValue(o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|