ソースを参照

导出流水表开发

anderx 6 年 前
コミット
aff3fed878

+ 12 - 21
src/main/java/com/goafanti/common/mapper/TemporaryReceivablesMapper.xml

@@ -387,12 +387,10 @@
     where aid = #{aid,jdbcType=INTEGER}
   </select>
   <select id="selectReceivablesList" parameterType="java.lang.String" resultType="com.goafanti.order.bo.ReceivablesListBo">
-  	select a.order_no orderNo,b.contract_no contractNo,a.corporate_name corporateName,c.nickname,b.total_amount totalAmount,d.name depName,a.status ,
+  	select a.id,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}
@@ -404,7 +402,7 @@
 	and a.order_no = #{orderNo}
 	</if>
 	<if test="adminName != null">
-	and  b.salesman_id like concat('%',#{adminName},'%')
+	and e.name like concat('%',#{adminName},'%')
 	</if>
 	<if test="nickname != null">
 	and c.nickname like concat('%',#{nickname},'%')
@@ -428,9 +426,7 @@
   </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}
@@ -442,7 +438,7 @@
 	and a.order_no = #{orderNo}
 	</if>
 	<if test="adminName != null">
-	and  b.salesman_id like concat('%',#{adminName},'%')
+	and e.name like concat('%',#{adminName},'%')
 	</if>
 	<if test="nickname != null">
 	and c.nickname like concat('%',#{nickname},'%')
@@ -461,17 +457,14 @@
 	</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>
+  select  ifnull(sum(a.amount),0) 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 left join admin e on b.salesman_id=e.id 
 	where 1=1
 	<if test="aid != null">
 	and  a.aid= #{aid}
 	</if>
 	<if test="contractNo != null">
-	b.contract_no like concat('%',#{contractNo},'%')
+	and b.contract_no like concat('%',#{contractNo},'%')
 	</if> 
 	<if test="orderNo != null">
 	and a.order_no = #{orderNo}
@@ -497,18 +490,15 @@
 	</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>
+  select ifnull(sum(x.total_amount),0) 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 
+	left join admin e on b.salesman_id=e.id 
 	where 1=1
 	<if test="aid != null">
 	and  a.aid= #{aid}
 	</if>
 	<if test="contractNo != null">
-	b.contract_no like concat('%',#{contractNo},'%')
+	and b.contract_no like concat('%',#{contractNo},'%')
 	</if> 
 	<if test="orderNo != null">
 	and a.order_no = #{orderNo}
@@ -529,8 +519,9 @@
 	and  e.department_id= #{adminDepId}
 	</if>
 	<if test="status != null">
-	and a.status= #{status} group by b.order_no)x
+	and a.status= #{status} 
 	</if>
+	group by b.order_no)x
 	</select>
   
     <insert id="insertBatch" parameterType="com.goafanti.common.model.TemporaryReceivables">

+ 21 - 7
src/main/java/com/goafanti/order/bo/ReceivablesListBo.java

@@ -1,13 +1,15 @@
 package com.goafanti.order.bo;
 
 public class ReceivablesListBo {
+	private Integer id;
 	private String orderNo;
 	private String contractNo;
 	private String corporateName;
 	private String nickname;
 	private String totalAmount;
 	private String depName;
-	private String statusamount;
+	private Integer status;
+	private String amount;
 	private String receivablesTimes;
 	private String createTimes;
 	private String remarks;
@@ -47,12 +49,6 @@ public class ReceivablesListBo {
 	public void setDepName(String depName) {
 		this.depName = depName;
 	}
-	public String getStatusamount() {
-		return statusamount;
-	}
-	public void setStatusamount(String statusamount) {
-		this.statusamount = statusamount;
-	}
 	public String getReceivablesTimes() {
 		return receivablesTimes;
 	}
@@ -71,6 +67,24 @@ public class ReceivablesListBo {
 	public void setRemarks(String remarks) {
 		this.remarks = remarks;
 	}
+	public Integer getStatus() {
+		return status;
+	}
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+	public String getAmount() {
+		return amount;
+	}
+	public void setAmount(String amount) {
+		this.amount = amount;
+	}
+	public Integer getId() {
+		return id;
+	}
+	public void setId(Integer id) {
+		this.id = id;
+	}
 	
 	
 

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

@@ -28,10 +28,12 @@ import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.controller.CertifyApiController;
 import com.goafanti.common.enums.AttachmentType;
 import com.goafanti.common.model.Attachment;
+import com.goafanti.common.model.TOrderBillNew;
 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.OrderBillService;
 import com.goafanti.order.service.OrderReceivablesService;
 
 @RestController
@@ -42,6 +44,8 @@ public class AdminOrderReceivablesApiController extends CertifyApiController {
 	private OrderReceivablesService orderReceivablesService;
 	@Resource
 	private AttachmentService	attachmentService;
+	@Resource
+	private OrderBillService	orderBillService;
 	/**
 	 * 	新增预计回款信息
 	 * @param t
@@ -189,19 +193,56 @@ public class AdminOrderReceivablesApiController extends CertifyApiController {
      * @param response
      * @return
      */
-    @RequestMapping(value = "/exportTemplate" , method = RequestMethod.GET)
-    public Result exportTemplate(HttpServletResponse response,OrderListBo o,Integer pageSize ,Integer pageNo)  {
+    @RequestMapping(value = "/exportReceivables" , method = RequestMethod.GET)
+    public Result exportReceivables(HttpServletResponse response,OrderListBo o,Integer pageSize ,Integer pageNo)  {
     	Result res=new Result();
 			try {
-				orderReceivablesService.exportTemplate( response, o,pageSize,pageNo);
+				orderReceivablesService.exportReceivables( response, o,pageSize,pageNo);
 			} catch (Exception e) {
 				res.getError().add(buildError("格式不正确"));
 				e.printStackTrace();
 				return res;
 			}
-		
          res.data(1); 
     	return res;
     }
     
+    /**
+	 * 	导出开票
+     * 
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/exportInvoice" , method = RequestMethod.GET)
+    public Result exportInvoice(HttpServletResponse response,String orderNo,Integer pageSize ,Integer pageNo)  {
+    	Result res=new Result();
+			try {
+				orderReceivablesService.exportInvoice( response, orderNo,pageSize,pageNo);
+			} catch (Exception e) {
+				res.getError().add(buildError("格式不正确"));
+				e.printStackTrace();
+				return res;
+			}
+         res.data(1); 
+    	return res;
+    }
+    /**
+	 * 	导出流水
+     * 
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/exportMyBill" , method = RequestMethod.GET)
+    public Result exportMyBill(HttpServletResponse response,String orderNo,Integer pageSize ,Integer pageNo)  {
+    	Result res=new Result();
+			try {
+				orderReceivablesService.exportMyBill( response, orderNo,pageSize,pageNo);
+			} catch (Exception e) {
+				res.getError().add(buildError("格式不正确"));
+				e.printStackTrace();
+				return res;
+			}
+         res.data(1); 
+    	return res;
+    }
 }

+ 11 - 3
src/main/java/com/goafanti/order/enums/TransactionSubject.java

@@ -10,11 +10,11 @@ import java.util.Map;
  */
 public enum TransactionSubject {
 	/** 代收 **/
-	SUPPLY_COLLECT(0,"SUPPLY_COLLECT"),
+	SUPPLY_COLLECT(0,"代收"),
 	/** 代付 **/
-	SUPPLY_PAY(1,"SUPPLY_PAY"),
+	SUPPLY_PAY(1,"代付"),
 	/** 退款 **/
-	REFUND(2,"REFUND"),
+	REFUND(2,"退款"),
 	/** 无效 **/
 	INVALID(10, "INVALID");
 	
@@ -36,6 +36,14 @@ public enum TransactionSubject {
 		}
 		return INVALID;
 	}
+	public static String getValueByCode(Integer code){
+        for(TransactionSubject transactionSubject:TransactionSubject.values()){
+            if(code.equals(transactionSubject.getCode())){
+                return transactionSubject.getDesc();
+            }
+        }
+        return  null;
+    }	
 	public static boolean containsType(Integer code) {
 		return subjects.containsKey(code);
 	}

+ 5 - 2
src/main/java/com/goafanti/order/service/OrderReceivablesService.java

@@ -4,7 +4,6 @@ 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;
@@ -34,7 +33,11 @@ public interface OrderReceivablesService {
 	Map<String, Object> getCountlistReceivables(ReceivablesListBo rl, Integer status, String adminName, String adminDepId,
 			String orderDepId);
 
-	void exportTemplate(HttpServletResponse response,OrderListBo o, Integer pageSize, Integer pageNo)throws Exception;
+	void exportReceivables(HttpServletResponse response,OrderListBo o, Integer pageSize, Integer pageNo)throws Exception;
+
+	void exportInvoice(HttpServletResponse response, String orderNo, Integer pageSize, Integer pageNo)throws Exception;
+
+	void exportMyBill(HttpServletResponse response, String orderNo, Integer pageSize, Integer pageNo)throws Exception;
 
 
 }

+ 163 - 8
src/main/java/com/goafanti/order/service/impl/OrderReceivablesServiceImpl.java

@@ -19,6 +19,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.formula.functions.T;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -59,6 +60,7 @@ 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.TOrderInvoiceBo;
 import com.goafanti.order.bo.TemporaryReceivablesBo;
 import com.goafanti.order.enums.ApprovalNewState;
 import com.goafanti.order.enums.BonusSubject;
@@ -66,7 +68,10 @@ 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.enums.TransactionSubject;
 import com.goafanti.order.service.FundManageOrderService;
+import com.goafanti.order.service.OrderBillService;
+import com.goafanti.order.service.OrderInvoiceService;
 import com.goafanti.order.service.OrderReceivablesService;
 
 @Service
@@ -87,6 +92,11 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 	
 	@Resource
 	private FundManageOrderService fundManageOrderService;
+	@Resource
+	private OrderInvoiceService	orderInvoiceService;
+	
+	@Resource
+	private OrderBillService	orderBillService;
 	
 	@Override
 	public int addReceivables(TemporaryReceivablesBo t) {
@@ -420,7 +430,7 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 	}
 		@SuppressWarnings("unchecked")
 		@Override
-		public void exportTemplate(HttpServletResponse response,OrderListBo order, Integer pageSize, Integer pageNo) throws Exception {
+		public void exportReceivables(HttpServletResponse response,OrderListBo order, Integer pageSize, Integer pageNo) throws Exception {
 			 OutputStream out = response.getOutputStream();
 			 	//	财务专员自己的id
 				order.setFinanceId(TokenManager.getAdminId());
@@ -429,12 +439,13 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 				if(pageSize==null||pageSize<0)pageSize=9999;
 				if(pageNo==null||pageNo<0)pageNo=1;
 				List<OrderListBo> list=(List<OrderListBo>) fundManageOrderService.financeList(order, pageNo, pageSize).getList();
+				if(list.isEmpty())throw new BusinessException(new Error("数据是空的。"));
 		    	try {
 		    		//设计表头
 		    		String[] comment = {"订单编号", "合同编号","客户名称","订单部门","订单负责人","签单日期","下单日期", 
 							"签单金额(万元)", "已开票金额(万元)", "已收金额(万元)","最近收款(万元)","最近收款时间","结算状态","订单流程","是否特批"};
 		    		String fileName = "收款结算列表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
-		    		XSSFWorkbook wb =exportTemplateInfoS(comment,"收款结算",list);
+		    		XSSFWorkbook wb =exportTemplateInfoS(comment,"收款结算",list,0);
 		    		//根据列表编写文档
 					
 		    		//返回名称及参数
@@ -452,14 +463,84 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 				}
 		}
 		
+		@SuppressWarnings("unchecked")
+		@Override
+		public void exportInvoice(HttpServletResponse response, String orderNo, Integer pageSize, Integer pageNo)throws Exception {
+
+			 OutputStream out = response.getOutputStream();
+				if(pageSize==null||pageSize<0)pageSize=9999;
+				if(pageNo==null||pageNo<0)pageNo=1;
+				List<TOrderInvoiceBo>list=(List<TOrderInvoiceBo>) orderInvoiceService.salesmanOrderInvoiceList( orderNo, pageNo,pageSize).getList();
+				if(list.isEmpty())throw new BusinessException(new Error("数据是空的。"));
+		    	try {
+		    		//设计表头
+		    		String[] comment = {"编号","订单编号","开票金额(万元)","申请时间","开票状态"};
+		    		String fileName = "开票记录列表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
+		    		//type 0 收款 1开票 2流水
+		    		XSSFWorkbook wb =exportTemplateInfoS(comment,"开票记录",list,1);
+		    		//根据列表编写文档
+					
+		    		//返回名称及参数
+					 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){
+		}
+		
+		@SuppressWarnings("unchecked")
+		@Override
+		public void exportMyBill(HttpServletResponse response, String orderNo, Integer pageSize, Integer pageNo)throws Exception {
+
+			 OutputStream out = response.getOutputStream();
+				if(pageSize==null||pageSize<0)pageSize=9999;
+				if(pageNo==null||pageNo<0)pageNo=1;
+				TOrderBillNew billNew=new TOrderBillNew();
+				List<TOrderBillNew>list=(List<TOrderBillNew>) orderBillService.myBillList(billNew, pageNo, pageSize).getList();
+		    	try {
+		    		//设计表头
+		    		String[] comment = {"收款时间","财务流水时间","财务流水号","金额(万元)","收款方","付款方","流水科目","平台流水号","收款类型","备注"};
+		    		String fileName = "流水记录列表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
+		    		//type 0 收款 1开票 2流水
+		    		XSSFWorkbook wb =exportTemplateInfoS(comment,"流水记录",list,2);
+		    		//根据列表编写文档
+					
+		    		//返回名称及参数
+					 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(); 
+				}
+		
+		}
+		/**
+		 * 
+		 * @param comment
+		 * @param fileName
+		 * @param list
+		 * @param type  0收款  1开票 2流水
+		 * @return
+		 */
+		public static XSSFWorkbook exportTemplateInfoS(String[] comment,String fileName,List<?> list,Integer type){
 			 
 			//map 数据 ,comment表头 (列名称)
 			//1,创建一个workbook,对应的是一个excel文件
 			XSSFWorkbook wb = new XSSFWorkbook();
-			int count = 0;
 			//遍历map
 			XSSFSheet sheet = wb.createSheet(fileName);
 			//3。创建一个row
@@ -481,11 +562,84 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 				c.setCellValue(comment[i]);
 				c.setCellStyle(style2);
 			}
-			addSettlementReceivablesList(comment, list, sheet);
+			switch (type) {
+			case 0:
+				addSettlementReceivablesList(comment, list, sheet);
+				break;
+			case 1:
+				addSettlementInvoiceList(comment, list, sheet);
+				break;
+			case 2:
+				addSettlementMyBillList(comment, list, sheet);
+				break;
+			}
+			
 			return wb;
 		}
-		private static void addSettlementReceivablesList(String[] comment, List<OrderListBo> list, XSSFSheet sheet) {
-			for (OrderListBo ob : list) {
+		
+		@SuppressWarnings("unchecked")
+		private static void addSettlementMyBillList(String[] comment, List<?> list, XSSFSheet sheet) {
+			for (TOrderBillNew ob : (List<TOrderBillNew>)list) {
+				//新增一行
+				XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1);
+				for (int i = 0; i < comment.length; i++) {
+					//当前列的只
+					String o = "";
+					switch (comment[i]) {
+//					String[] comment = {"收款时间","财务流水时间","财务流水号","金额(万元)","收款方","付款方","流水科目","平台流水号","收款类型","备注"};
+					case "收款时间": o = ob.getCreateTimes(); break;
+					case "财务流水时间": o = ob.getFinancialPayTimes(); break;
+					case "财务流水号": o = ob.getFinancialPayNo(); break;
+					case "金额(万元)": o = ob.getTransactionAmount().toString(); break;
+					case "收款方": o = ob.getPayeeName(); break;
+					case "付款方": o = ob.getPayerName(); break;
+					case "流水科目": o = TransactionSubject.getValueByCode(ob.getTransactionSubject()); break;
+					case "平台流水号": o = ob.getBillNo(); break;
+					case "收款类型": 
+						if(ob.getType()==0) {
+							o = "手工收款"; break;
+						}else if(ob.getType()==1) {
+							o = "批量收款"; break;
+						}
+					case "备注": o = ob.getRemarks(); break;
+					default: o = ""; break;
+					}
+					XSSFCell c = r.createCell(i);
+					c.setCellValue(o);
+				}
+			}
+		}
+		@SuppressWarnings("unchecked")
+		private static void addSettlementInvoiceList(String[] comment, List<?> list, XSSFSheet sheet) {
+			for (TOrderInvoiceBo ob : (List<TOrderInvoiceBo>)list) {
+				//新增一行
+				XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1);
+				for (int i = 0; i < comment.length; i++) {
+					//当前列的只
+					String o = "";
+					switch (comment[i]) {
+//					String[] comment = {"编号","订单编号","开票金额(万元)","申请时间","开票状态"};
+					case "编号": o = ob.getId().toString(); break;
+					case "订单编号": o = ob.getOrderno(); break;
+					case "开票金额(万元)": o = ob.getAmount().toString(); break;
+					case "申请时间": o = ob.getCreateTime(); break;
+					case "开票状态":
+//						状态 0未提交 1处理中 2通过 3拒绝 4 撤销
+						switch(ob.getStatus()) {
+						case 1 :o = "处理中"; break;
+						case 2 :o = "通过"; break;
+						}
+						break;
+					default: o = ""; break;
+					}
+					XSSFCell c = r.createCell(i);
+					c.setCellValue(o);
+				}
+			}
+		}
+		@SuppressWarnings("unchecked")
+		private static void addSettlementReceivablesList(String[] comment, List<?> list, XSSFSheet sheet) {
+			for (OrderListBo ob : (List<OrderListBo>)list) {
 				//新增一行
 				XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1);
 				for (int i = 0; i < comment.length; i++) {
@@ -516,6 +670,7 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 				}
 			}
 		}
+
 		
 
 }

+ 4 - 4
src/main/resources/props/config_local.properties

@@ -60,12 +60,12 @@ template.cacheable=false
 portal.host=//sf.jishutao.com/portal/2.0.6
 avatar.upload.host=//sb.jishutao.com/upload
 #连接开发
-static.host=//sb.jishutao.com/1.1.22
-avatar.host=//sb.jishutao.com
+#static.host=//sb.jishutao.com/1.1.22
+#avatar.host=//sb.jishutao.com
 
 #连测试
-#avatar.host=//static.jishutao.com
-#static.host=//static.jishutao.com/1.1.22
+avatar.host=//static.jishutao.com
+static.host=//static.jishutao.com/1.1.22
 
 upload.path=F:/data/public/upload
 upload.private.path=F:/data/private/upload