Pārlūkot izejas kodu

合同变更导出

anderx 6 gadi atpakaļ
vecāks
revīzija
9bc44bfdbe

+ 6 - 0
src/main/java/com/goafanti/common/dao/TemporaryReceivablesMapper.java

@@ -5,6 +5,8 @@ import com.goafanti.common.model.TemporaryReceivablesExample;
 import com.goafanti.order.bo.TemporaryReceivablesBo;
 
 import java.util.List;
+import java.util.Map;
+
 import org.apache.ibatis.annotations.Param;
 
 public interface TemporaryReceivablesMapper {
@@ -91,6 +93,10 @@ public interface TemporaryReceivablesMapper {
 
 	void updateRepeatOrderNo(String adminId);
 
+	int  getCountlistReceivablesAmount(Map<String, Object> parameter);
+
+	int getCountlistReceivablesTotalAmount(Map<String, Object> parameter);
+
 
 	
 }

+ 115 - 7
src/main/java/com/goafanti/common/mapper/TemporaryReceivablesMapper.xml

@@ -390,40 +390,148 @@
   	select a.order_no orderNo,b.contract_no contractNo,a.corporate_name corporateName,c.nickname,b.total_amount totalAmount,d.name depName,a.status ,
 	a.amount,date_format(a.receivables_time, '%Y-%m-%d')receivablesTimes,date_format(a.create_time, '%Y-%m-%d %H:%i:%S')createTimes,a.remarks
 	from temporary_receivables a left join t_order_new b on a.order_no=b.order_no left join user c on b.buyer_id=c.id left join department d on b.order_dep=d.id
+	<if test="adminDepId != null">
+	left join admin e on b.salesman_id=e.id 
+	</if>
 	where 1=1
+	<if test="aid != null">
+	and  a.aid= #{aid}
+	</if>
 	<if test="contractNo != null">
 	b.contract_no like concat('%',#{contractNo},'%')
 	</if> 
 	<if test="orderNo != null">
-	and a.order_no like concat('%',#{orderNo},'%')
+	and a.order_no = #{orderNo}
+	</if>
+	<if test="adminName != null">
+	and  b.salesman_id like concat('%',#{adminName},'%')
 	</if>
 	<if test="nickname != null">
 	and c.nickname like concat('%',#{nickname},'%')
 	</if>
-	<if test="depId != null">
-	and b.order_dep= #{depId}
+	<if test="corporateName != null">
+	and a.corporate_name like concat('%',#{corporateName},'%')
+	</if>
+	<if test="orderDepId != null">
+	and b.order_dep= #{orderDepId}
+	</if>
+	<if test="adminDepId != null">
+	and  e.department_id= #{adminDepId}
+	</if>
+	<if test="status != null">
+	and a.status= #{status}
 	</if>
-	order by b.contract_no,a.create_time desc
+	order by a.status desc,b.contract_no,a.create_time desc
 	<if test="page_sql!=null">
 	${page_sql}
 	</if>
   </select>
   <select id="selectReceivablesCount"  resultType="java.lang.Integer">
   	select count(*) from temporary_receivables a left join t_order_new b on a.order_no=b.order_no left join user c on b.buyer_id=c.id left join department d on b.order_dep=d.id
+	<if test="adminDepId != null">
+	left join admin e on b.salesman_id=e.id 
+	</if>
 	where 1=1
+	<if test="aid != null">
+	and  a.aid= #{aid}
+	</if>
 	<if test="contractNo != null">
 	b.contract_no like concat('%',#{contractNo},'%')
 	</if> 
 	<if test="orderNo != null">
-	and a.order_no like concat('%',#{orderNo},'%')
+	and a.order_no = #{orderNo}
+	</if>
+	<if test="adminName != null">
+	and  b.salesman_id like concat('%',#{adminName},'%')
 	</if>
 	<if test="nickname != null">
 	and c.nickname like concat('%',#{nickname},'%')
 	</if>
-	<if test="depId != null">
-	and b.order_dep= #{depId}
+	<if test="corporateName != null">
+	and a.corporate_name like concat('%',#{corporateName},'%')
+	</if>
+	<if test="orderDepId != null">
+	and b.order_dep= #{orderDepId}
+	</if>
+	<if test="adminDepId != null">
+	and  e.department_id= #{adminDepId}
+	</if>
+	<if test="status != null">
+	and a.status= #{status}
 	</if>
   </select>
+  <select id="getCountlistReceivablesAmount" parameterType="Map" resultType="java.lang.Integer">
+  select  sum(a.amount) amount from temporary_receivables a left join t_order_new b on a.order_no=b.order_no 
+	left join user c on b.buyer_id=c.id left join department d on b.order_dep=d.id 
+	<if test="adminDepId != null">
+	left join admin e on b.salesman_id=g.id 
+	</if>
+	where 1=1
+	<if test="aid != null">
+	and  a.aid= #{aid}
+	</if>
+	<if test="contractNo != null">
+	b.contract_no like concat('%',#{contractNo},'%')
+	</if> 
+	<if test="orderNo != null">
+	and a.order_no = #{orderNo}
+	</if>
+	<if test="adminName != null">
+	and  b.salesman_id like concat('%',#{adminName},'%')
+	</if>
+	<if test="nickname != null">
+	and c.nickname like concat('%',#{nickname},'%')
+	</if>
+	<if test="corporateName != null">
+	and a.corporate_name like concat('%',#{corporateName},'%')
+	</if>
+	<if test="orderDepId != null">
+	and b.order_dep= #{orderDepId}
+	</if>
+	<if test="adminDepId != null">
+	and  e.department_id= #{adminDepId}
+	</if>
+	<if test="status != null">
+	and a.status= #{status}
+	</if>
+	</select>
+	
+	<select id="getCountlistReceivablesTotalAmount" parameterType="Map" resultType="java.lang.Integer">
+  select sum(x.total_amount) from (
+	select  b.order_no,b.total_amount  from temporary_receivables a left join t_order_new b on a.order_no=b.order_no 
+	left join user c on b.buyer_id=c.id left join department d on b.order_dep=d.id 
+	<if test="adminDepId != null">
+	left join admin e on b.salesman_id=g.id 
+	</if>
+	where 1=1
+	<if test="aid != null">
+	and  a.aid= #{aid}
+	</if>
+	<if test="contractNo != null">
+	b.contract_no like concat('%',#{contractNo},'%')
+	</if> 
+	<if test="orderNo != null">
+	and a.order_no = #{orderNo}
+	</if>
+	<if test="adminName != null">
+	and  b.salesman_id like concat('%',#{adminName},'%')
+	</if>
+	<if test="nickname != null">
+	and c.nickname like concat('%',#{nickname},'%')
+	</if>
+	<if test="corporateName != null">
+	and a.corporate_name like concat('%',#{corporateName},'%')
+	</if>
+	<if test="orderDepId != null">
+	and b.order_dep= #{orderDepId}
+	</if>
+	<if test="adminDepId != null">
+	and  e.department_id= #{adminDepId}
+	</if>
+	<if test="status != null">
+	and a.status= #{status} group by b.order_no)x
+	</if>
+	</select>
   
     <insert id="insertBatch" parameterType="com.goafanti.common.model.TemporaryReceivables">
     insert into temporary_receivables (id, order_no, corporate_name, amount, receivables_time,

+ 30 - 3
src/main/java/com/goafanti/common/utils/ExportExcelUtil.java

@@ -13,6 +13,8 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFCellStyle;
@@ -36,17 +38,42 @@ import com.goafanti.techproject.enums.TaskState;
 public class ExportExcelUtil {
 	
 	//设置单元格格式
-	private static XSSFCellStyle setCellStyle1(XSSFWorkbook workbook){
+	public static XSSFCellStyle setCellStyle1(XSSFWorkbook workbook){
 		// 设置字体  
 		XSSFFont font = workbook.createFont();  
 		// font.setColor(HSSFFont.COLOR_RED);  
 		font.setFontName("微软雅黑");
-		font.setFontHeightInPoints((short) 10);//字体大小  
+		font.setFontHeightInPoints((short) 22);//字体大小  
 		  
 		// 设置样式  
 		XSSFCellStyle cellStyle = workbook.createCellStyle();  
 		cellStyle.setFont(font);  //字体
-		
+        
+        // 设置单元格内容水平对其方式   
+        // XSSFCellStyle.ALIGN_CENTER       居中对齐   
+        // XSSFCellStyle.ALIGN_LEFT         左对齐   
+        // XSSFCellStyle.ALIGN_RIGHT        右对齐   
+		cellStyle.setAlignment(HorizontalAlignment.CENTER);  
+		//设置自动换行
+		cellStyle.setWrapText(true);
+		return cellStyle;
+	}
+	public static XSSFCellStyle setCellStyle2(XSSFWorkbook workbook){
+		// 设置字体  
+		XSSFFont font = workbook.createFont();  
+		// font.setColor(HSSFFont.COLOR_RED);  
+		font.setFontName("微软雅黑");
+		font.setFontHeightInPoints((short) 12);//字体大小  
+		  
+		// 设置样式  
+		XSSFCellStyle cellStyle = workbook.createCellStyle();  
+		cellStyle.setFont(font);  //字体
+        
+        // 设置单元格内容水平对其方式   
+        // XSSFCellStyle.ALIGN_CENTER       居中对齐   
+        // XSSFCellStyle.ALIGN_LEFT         左对齐   
+        // XSSFCellStyle.ALIGN_RIGHT        右对齐   
+		cellStyle.setAlignment(HorizontalAlignment.CENTER);  
 		//设置自动换行
 		cellStyle.setWrapText(true);
 		return cellStyle;

+ 37 - 4
src/main/java/com/goafanti/order/controller/AdminOrderReceivablesApiController.java

@@ -5,11 +5,17 @@ package com.goafanti.order.controller;
 
 
 
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -23,6 +29,8 @@ import com.goafanti.common.controller.CertifyApiController;
 import com.goafanti.common.enums.AttachmentType;
 import com.goafanti.common.model.Attachment;
 import com.goafanti.common.utils.LoggerUtils;
+import com.goafanti.order.bo.OrderListBo;
+import com.goafanti.order.bo.ReceivablesListBo;
 import com.goafanti.order.bo.TemporaryReceivablesBo;
 import com.goafanti.order.service.OrderReceivablesService;
 
@@ -102,9 +110,14 @@ public class AdminOrderReceivablesApiController extends CertifyApiController {
 	}
 	
 	@RequestMapping(value ="/listReceivables",method = RequestMethod.GET)
-	public Result listReceivables(String contractNo,String orderNo,String nickname,String depId,Integer pageSize,Integer pageNo){
+	public Result listReceivables(ReceivablesListBo rl,Integer status,String adminName,String adminDepId,String orderDepId,Integer pageSize,Integer pageNo){
 		Result res = new Result();
-		res.data(orderReceivablesService.listReceivables( contractNo, orderNo, nickname, depId, pageSize, pageNo));
+		Map<String, Object>map =new HashMap<>();
+		//列表数据
+		map.put("pagination", orderReceivablesService.listReceivables(  rl,status,adminName,  adminDepId, orderDepId, pageSize, pageNo));
+		//统计数据
+		map.put("count",orderReceivablesService.getCountlistReceivables(  rl,status,adminName,  adminDepId, orderDepId));
+		res.data(map);
 		return res;
 	}
 	/**
@@ -153,7 +166,7 @@ public class AdminOrderReceivablesApiController extends CertifyApiController {
      * @return
      */
     @RequestMapping(value = "/import" , method = RequestMethod.POST)
-    public Result importTeacher(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {
+    public Result importTemplate(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {
     	Result res=new Result();
     	//判断文件是否存在
         if(null == file){
@@ -168,7 +181,27 @@ public class AdminOrderReceivablesApiController extends CertifyApiController {
     	orderReceivablesService.batchListReceivables(file);
          res.data(1); 
     	return res;
-    	
+    }
+    
+    /**
+	 * 	导出回款
+     * 
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/exportTemplate" , method = RequestMethod.GET)
+    public Result exportTemplate(HttpServletResponse response,OrderListBo o)  {
+    	Result res=new Result();
+			try {
+				orderReceivablesService.exportTemplate( response, o);
+			} catch (Exception e) {
+				res.getError().add(buildError("格式不正确"));
+				e.printStackTrace();
+				return res;
+			}
+		
+         res.data(1); 
+    	return res;
     }
     
 }

+ 8 - 0
src/main/java/com/goafanti/order/enums/ApprovalNewState.java

@@ -27,6 +27,14 @@ public enum ApprovalNewState {
 			status.put(value.getCode(), value);
 		}
 	}
+	public static String getValueByCode(Integer code){
+        for(ApprovalNewState approvalNewState:ApprovalNewState.values()){
+            if(code.equals(approvalNewState.getCode())){
+                return approvalNewState.getDesc();
+            }
+        }
+        return  null;
+    }
 	public static ApprovalNewState getStatus(Integer code) {
 		if (containsType(code)) {
 			return status.get(code);

+ 8 - 0
src/main/java/com/goafanti/order/enums/ProcessStatus.java

@@ -64,4 +64,12 @@ public enum ProcessStatus {
 	public void setDesc(String desc) {
 		this.desc = desc;
 	}
+	public static String getValueByCode(Integer code){
+        for(ProcessStatus processStatus:ProcessStatus.values()){
+            if(code.equals(processStatus.getCode())){
+                return processStatus.getDesc();
+            }
+        }
+        return  null;
+    }	
 }

+ 1 - 1
src/main/java/com/goafanti/order/enums/ProjectNewStage.java

@@ -63,7 +63,7 @@ public enum ProjectNewStage {
                 return projectNewStage.getDesc();
             }
         }
-        return  null;
+        return  "";
     }
 	public static boolean containsType(Integer code) {
 		return status.containsKey(code);

+ 15 - 1
src/main/java/com/goafanti/order/service/OrderReceivablesService.java

@@ -1,8 +1,14 @@
 package com.goafanti.order.service;
 
+import java.util.Map;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.web.multipart.MultipartFile;
 
 import com.goafanti.core.mybatis.page.Pagination;
+import com.goafanti.order.bo.OrderListBo;
 import com.goafanti.order.bo.ReceivablesListBo;
 import com.goafanti.order.bo.TemporaryReceivablesBo;
 
@@ -18,8 +24,16 @@ public interface OrderReceivablesService {
 
 	int batchImport();
 
-	Pagination<ReceivablesListBo>  listReceivables(String contractNo, String orderNo, String nickname, String depId,Integer pageSize,Integer pageNo);
 
 	void batchListReceivables(MultipartFile file);
 
+	Pagination<ReceivablesListBo> listReceivables(ReceivablesListBo rl,Integer status,String adminName, String adminDepId, String orderDepId, Integer pageSize,
+			Integer pageNo);
+
+
+	Map<String, Object> getCountlistReceivables(ReceivablesListBo rl, Integer status, String adminName, String adminDepId,
+			String orderDepId);
+
+	void exportTemplate(HttpServletResponse response,OrderListBo o)throws Exception;
+
 }

+ 157 - 9
src/main/java/com/goafanti/order/service/impl/OrderReceivablesServiceImpl.java

@@ -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);
+				}
+			}
+		}
+		
 
 }