anderx пре 6 година
родитељ
комит
8b6638953b

+ 4 - 0
src/main/java/com/goafanti/common/dao/TOrderNewMapper.java

@@ -2,11 +2,14 @@ package com.goafanti.common.dao;
 
 import com.goafanti.common.model.TOrderNew;
 import com.goafanti.common.model.TOrderNewExample;
+import com.goafanti.order.bo.OrderListBo;
 import com.goafanti.order.bo.OrderRefundBo;
 import com.goafanti.order.bo.OrderRefundDetailBo;
 import com.goafanti.order.bo.TOrderNewBo;
 
 import java.util.List;
+import java.util.Map;
+
 import org.apache.ibatis.annotations.Param;
 
 public interface TOrderNewMapper {
@@ -90,5 +93,6 @@ public interface TOrderNewMapper {
 
 	int updateFinance(@Param("aid")String aid, @Param("orderNo")String orderNo, @Param("newFinance")String newFinance);
 	int checkContractNo(String sno);
+	Map<String, Object> countTotalAndActually(OrderListBo o);
 
 }

+ 1 - 1
src/main/java/com/goafanti/common/mapper/TOrderBillNewMapper.xml

@@ -493,7 +493,7 @@
   <select id="myBillList" parameterType="Map" resultType="com.goafanti.common.model.TOrderBillNew">
  select 
   	b.bill_no as billNo, b.order_no as orderNo, b.transaction_amount as transactionAmount,date_format(b.create_time,'%Y-%m-%d %H:%I:%S') as createTimes,
-  	b.payer_id as payerId, b.payee_id as payeeId, u.nickname as payerName, a.nickname as payeeName, 
+  	b.payer_id as payerId, b.payee_id as payeeId, u.nickname as payerName, a.nickname as payeeName,  b.remarks,o.contract_no contractNo,
   	b.transaction_subject as transactionSubject, b.transaction_channel as transactionChannel, 
   	date_format(b.financial_pay_time,'%Y-%m-%d') as financialPayTimes,b.financial_pay_no as financialPayNo,
   	b.creater, ad.name as createrName, o.salesman_id as saleId, oa.name as saleName,b.type

+ 3 - 3
src/main/java/com/goafanti/common/mapper/TOrderInvoiceMapper.xml

@@ -696,9 +696,9 @@
   </select>
   
   <select id="salesmanOrderInvoiceList" resultType="com.goafanti.order.bo.TOrderInvoiceBo">
-    select id ,order_no as orderNo,amount,date_format(create_time,'%Y-%m-%d %H:%i:%S') as createTime,
-	reject_reason as  rejectReason,status from t_order_invoice
-	where status !=4
+    select a.id ,a.order_no as orderNo,b.contract_no contractNo,a.amount,date_format(a.create_time,'%Y-%m-%d %H:%i:%S') as createTime,
+	a.reject_reason as  rejectReason,a.status from t_order_invoice a left join t_order_new b 
+	on a.order_no=b.order_no where a.status !=4
 	<if test="orderNo !=null">
 	and order_no = #{orderNo,jdbcType=VARCHAR}
 	</if>

+ 43 - 1
src/main/java/com/goafanti/common/mapper/TOrderNewMapper.xml

@@ -1498,5 +1498,47 @@ where super_id is null ) e on e.order_no=a.order_no
   <select id="checkContractNo" resultType="java.lang.Integer">
   	select count(contract_no) from t_order_new
 	where contract_no= #{0}
-  </select>										
+  </select>	
+  
+  <select id="countTotalAndActually" parameterType="Map" resultType="java.util.Map">
+  select sum(ifnull(b.amount,0)) actuallyTotalAmount,sum(o.total_amount) signTotalAmount from t_order_new o left join department d   on o.order_dep=d.id left join `user` u on o.buyer_id = u.id 
+  left join admin a on o.salesman_id = a.id left join (select sum(transaction_amount) as amount ,order_no from t_order_bill_new group by order_no ) b
+  on b.order_no = o.order_no left join (select order_no,max(name) as name from outsource_organization group by order_no) e 
+  on o.order_no=e.order_no left join (select transaction_amount ,order_no,date_format(max(create_time), '%Y-%m-%d %H:%i:%s')finalReceivablesTime from t_order_bill_new group by order_no) f 
+  on o.order_no=f.order_no left join (select order_no ,sum(amount) invoiceAmount  from t_order_invoice where status=2 group by order_no ) g
+  on o.order_no=g.order_no  where delete_sign != 1  and outsource=  #{outsource,jdbcType=INTEGER}
+  	 	<if test="processStatus == 3">
+	  	and o.process_status = #{processStatus,jdbcType=INTEGER}
+	  	</if>
+	  	<if test="processStatus == 4">
+	  	and o.process_status &gt;= #{processStatus,jdbcType=INTEGER}
+	  	</if>
+  		and (approval = 0 or approval = 2)
+	  	and o.finance_id = #{financeId,jdbcType=VARCHAR}
+  		<if test="orderStatus != null and orderStatus != &quot;&quot;">
+	  	and o.order_status = #{orderStatus,jdbcType=INTEGER}
+	  	</if>
+  		<if test="departmentId != null and departmentId != &quot;&quot;">
+	  	and o.order_dep = #{departmentId,jdbcType=INTEGER}
+	  	</if>
+	  	<if test="contractNo != null and contractNo != &quot;&quot;">
+  	and o.contract_no like CONCAT('%',#{contractNo,jdbcType=VARCHAR},'%')
+  	</if>
+  		<if test="liquidationStatus != null and liquidationStatus != &quot;&quot;">
+	  	and o.liquidation_status = #{liquidationStatus,jdbcType=INTEGER}
+	  	</if>
+  		
+  		<if test="orderNo != null and orderNo != &quot;&quot;">
+	  	and o.order_no = #{orderNo,jdbcType=VARCHAR}
+	  	</if>
+	  	<if test="buyerName != null and buyerName != &quot;&quot;">
+	  	<bind name="n" value="'%' + buyerName + '%'" />
+	  	and u.nickname  like #{n,jdbcType=VARCHAR}
+	  	</if>
+	  	<if test="startTime != null and startTime != &quot;&quot; and endTime != null and endTime != &quot;&quot;">
+	  	<bind name="a" value="startTime + ' 00:00:00'" />
+	  	<bind name="b" value="endTime + ' 23:59:59'" />
+	  	and o.create_time between #{a,jdbcType=VARCHAR} and #{b,jdbcType=VARCHAR}
+	  	</if>									
+	  	</select>	
 </mapper>

+ 9 - 0
src/main/java/com/goafanti/common/model/TOrderBillNew.java

@@ -388,6 +388,7 @@ public class TOrderBillNew {
     private String saleName;
     private String departmentName;
 	private String createTimes;
+	private String contractNo;
     
     public String getFinancialPayTimes() {
 		return this.financialPayTimes;
@@ -476,4 +477,12 @@ public class TOrderBillNew {
 	public void setCreateTimes(String createTimes) {
 		this.createTimes = createTimes;
 	}
+
+	public String getContractNo() {
+		return contractNo;
+	}
+
+	public void setContractNo(String contractNo) {
+		this.contractNo = contractNo;
+	}
 }

+ 7 - 0
src/main/java/com/goafanti/order/bo/TOrderInvoiceBo.java

@@ -4,6 +4,7 @@ public class TOrderInvoiceBo {
 	private Integer id;
 	private String unitName;
 	private String orderno;
+	private String contractNo;
 	private String name;
 	private Integer projectStatus;
 	private Integer processStatus;
@@ -100,6 +101,12 @@ public class TOrderInvoiceBo {
 	public void setProcessStatus(Integer processStatus) {
 		this.processStatus = processStatus;
 	}
+	public String getContractNo() {
+		return contractNo;
+	}
+	public void setContractNo(String contractNo) {
+		this.contractNo = contractNo;
+	}
 	
 	
 }

+ 2 - 6
src/main/java/com/goafanti/order/controller/AdminOrderReceivablesApiController.java

@@ -5,8 +5,6 @@ package com.goafanti.order.controller;
 
 
 
-import java.io.IOException;
-import java.io.OutputStream;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -15,7 +13,6 @@ 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;
@@ -28,7 +25,6 @@ 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;
@@ -174,12 +170,12 @@ public class AdminOrderReceivablesApiController extends CertifyApiController {
     	Result res=new Result();
     	//判断文件是否存在
         if(null == file){
-      	  res.getError().add(buildError("文件不存在!"));
+      	  res.getError().add(buildError("文件不存在!","文件不存在!"));
       	  return res;
         }
     	String fileName = file.getOriginalFilename();
     	if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
-        	  res.getError().add(buildError("格式不正确"));
+        	  res.getError().add(buildError("格式不正确","格式不正确"));
         	  return res;
           }
     	orderReceivablesService.batchListReceivables(file);

+ 2 - 1
src/main/java/com/goafanti/order/service/FundManageOrderService.java

@@ -1,6 +1,7 @@
 package com.goafanti.order.service;
 
 import java.util.List;
+import java.util.Map;
 
 import com.goafanti.common.model.TOrderBack;
 import com.goafanti.common.model.TOrderBillNew;
@@ -26,7 +27,7 @@ public interface FundManageOrderService {
 	 * @param pageSize
 	 * @return
 	 */
-	Pagination<OrderListBo> financeList(OrderListBo order,Integer pageNo,Integer pageSize);
+	Map<String, Object> financeList(OrderListBo order,Integer pageNo,Integer pageSize);
 
 	/**
 	 * 财务管理员分派订单给财务专员

+ 6 - 2
src/main/java/com/goafanti/order/service/impl/FundManagerOrderServiceImpl.java

@@ -147,13 +147,17 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 	
 	@SuppressWarnings("unchecked")
 	@Override
-	public Pagination<OrderListBo> financeList(OrderListBo order,
+	public Map<String, Object> financeList(OrderListBo order,
 			Integer pageNo, Integer pageSize) {
+		Map<String, Object> result = new HashMap<String, Object>();
 		Map<String, Object> params = new HashMap<String, Object>();
 		if (order.getOutsource()==null)order.setOutsource(0);//默认非外包 
 		params.put("o", order);
 		Pagination<OrderListBo> data = (Pagination<OrderListBo>)findPage("financeList", "financeCount", params, pageNo, pageSize);
-		return data;
+		result.put("pagination", data);
+		Map<String, Object> count = tOrderNewMapper.countTotalAndActually(order);
+		result.put("count", count);
+		return result;
 	}
 
 	@Override

+ 95 - 62
src/main/java/com/goafanti/order/service/impl/OrderReceivablesServiceImpl.java

@@ -322,66 +322,95 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
         //创建一个对象,用来存储数据
         List<TemporaryReceivablesBo> list=new ArrayList<>();
         if(workbook != null){
-        	for(int sheetNum = 0;sheetNum < workbook.getNumberOfSheets();sheetNum++){
         	//获得当前sheet工作表
-        		Sheet sheet = workbook.getSheetAt(sheetNum);
-        		if(sheet == null){
-        			continue;
-        		}
-        		//获得当前sheet的开始行
-        		int firstRowNum = sheet.getFirstRowNum();
-        		//获得当前sheet的结束行
-        		int lastRowNum = sheet.getLastRowNum();
-        		//循环除了第2行的所有行
-        		for(int rowNum = firstRowNum+2;rowNum <= lastRowNum;rowNum++){
-	        			//获得当前行
-	        				Row row = sheet.getRow(rowNum);
-	        				if(row == null){
-	        					continue;
-	        				}
-		        	//获得当前行的开始列
-		        	int firstCellNum = row.getFirstCellNum();
-		        	//获得当前行的列数
-		        	int lastCellNum = row.getLastCellNum();
-			        //循环当前行 cellNum = (firstCellNum+1) 则是除开第一例
-		        	TemporaryReceivablesBo trb=new TemporaryReceivablesBo();
-			        for(int cellNum = (firstCellNum); cellNum < lastCellNum;cellNum++){
-				        Cell cell = row.getCell(cellNum);
-				    	try {
-				        switch (cellNum) {
-						case 0:
-							trb.setFinancialPayNo(getCellValue(cell));
-							break;
-						case 1:
-							trb.setOrderNo(getCellValue(cell));
-							break;
-						case 2:
-							trb.setCorporateName(getCellValue(cell));
-							break;
-						case 3:
-							trb.setAmount(new BigDecimal((null==getCellValue(cell)?"0":getCellValue(cell))));
-							break;
-						case 4:
-							trb.setReceivablesTime(DateUtils.StringToDate(getCellValue(cell), AFTConstants.YYYYMMDD));
-							break;
-						case 5:
-							trb.setRemarks(getCellValue(cell));
-							break;
-						}
-				    	} catch (ParseException e) {
-				    		throw new BusinessException(new Error("表格第"+(rowNum+1)+"行输入内容不正确。"));
-						}
-			        }
-			        trb.setAid(TokenManager.getAdminId());
-			        trb.setCreateTime(new Date());
-			        trb.setStatus(0);
-			        list.add(trb);
-        		}
-        	}
+    		Sheet sheet = workbook.getSheetAt(0);
+    		if(sheet == null){
+    			return;
+    		}
+    		
+    		//获得当前sheet的开始行
+    		int firstRowNum = sheet.getFirstRowNum();
+    		//获得当前sheet的结束行
+    		int lastRowNum = sheet.getLastRowNum();
+    		//处理空白行
+    		for (int i = firstRowNum; i <= sheet.getLastRowNum();i++) {
+    			Row r = sheet.getRow(i);
+    			if(r == null){
+    				// 如果是空行(即没有任何数据、格式),直接把它以下的数据往上移动
+    				sheet.shiftRows(i+1, sheet.getLastRowNum(),-1);
+    				continue;
+    			}
+    			boolean flag = false;
+    			for(Cell c:r){
+    				if(c.getCellType() != Cell.CELL_TYPE_BLANK){
+    					flag = true;
+    					break;
+    				}
+    			}
+    			if(flag){
+    				i++;
+    				continue;
+    			} else{//如果是空白行(即可能没有数据,但是有一定格式)
+    				if(i == sheet.getLastRowNum())//如果到了最后一行,直接将那一行remove掉
+    					sheet.removeRow(r);
+    				else//如果还没到最后一行,则数据往上移一行
+    				    sheet.shiftRows(i+1, sheet.getLastRowNum(),-1);
+    			}
+    		}
+    		lastRowNum=sheet.getLastRowNum();
+    		if (lastRowNum<2) {
+    			throw new BusinessException(new Error("未找到正确的参数。"));
+			}
+    		//循环除了第2行的所有行
+    		for(int rowNum = firstRowNum+2;rowNum <= lastRowNum;rowNum++){
+        		//获得当前行
+				Row row = sheet.getRow(rowNum);
+				if(row == null){
+					continue;
+				}
+	        	//获得当前行的开始列
+	        	int firstCellNum = row.getFirstCellNum();
+	        	//获得当前行的列数
+	        	int lastCellNum = row.getLastCellNum();
+		        //循环当前行 cellNum = (firstCellNum+1) 则是除开第一例
+	        	TemporaryReceivablesBo trb=new TemporaryReceivablesBo();
+		        for(int cellNum = (firstCellNum); cellNum < lastCellNum;cellNum++){
+			        Cell cell = row.getCell(cellNum);
+			    	try {
+			        switch (cellNum) {
+					case 0:
+						trb.setFinancialPayNo(getCellValue(cell));
+						break;
+					case 1:
+						trb.setOrderNo(getCellValue(cell));
+						break;
+					case 2:
+						trb.setCorporateName(getCellValue(cell));
+						break;
+					case 3:
+						trb.setAmount(new BigDecimal((null==getCellValue(cell)?"0":getCellValue(cell))));
+						break;
+					case 4:
+						trb.setReceivablesTime(DateUtils.StringToDate(getCellValue(cell), AFTConstants.YYYYMMDD));
+						break;
+					case 5:
+						trb.setRemarks(getCellValue(cell));
+						break;
+					}
+			    	} catch (ParseException e) {
+			    		throw new BusinessException(new Error("表格第"+(rowNum+1)+"行输入内容不正确。"));
+					}
+		        }
+		        trb.setAid(TokenManager.getAdminId());
+		        trb.setCreateTime(new Date());
+		        trb.setStatus(0);
+		        list.add(trb);
+    		}
+        }
         	temporaryReceivablesMapper.insertBatch(list);
         	//计算重复的单
         	temporaryReceivablesMapper.updateRepeatOrderNo(TokenManager.getAdminId());
-        }
+        
     }
       
         public static Workbook getWorkBook(MultipartFile file) {
@@ -445,7 +474,8 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 				order.setOrderStatus(2);//营销管理员审核通过
 				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();
+				Pagination<OrderListBo> p=(Pagination<OrderListBo>) fundManageOrderService.financeList(order, pageNo, pageSize).get("pagination");
+				List<OrderListBo> list=(List<OrderListBo>)p.getList() ;
 				if(list.isEmpty())throw new BusinessException(new Error("数据是空的。"));
 		    	try {
 		    		//设计表头
@@ -478,11 +508,11 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 				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("数据是空的。"));
+//				if(list.isEmpty())throw new BusinessException(new Error("数据是空的。"));
 		    	try {
 		    		//设计表头
 		    		String[] comment = {"编号","订单编号","开票金额(万元)","申请时间","开票状态"};
-		    		String fileName = "开票记录列表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
+		    		String fileName = orderNo+"开票记录列表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
 		    		//type 0 收款 1开票 2流水
 		    		XSSFWorkbook wb =exportTemplateInfoS(comment,"开票记录",list,1);
 		    		//根据列表编写文档
@@ -511,11 +541,12 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 				if(pageSize==null||pageSize<0)pageSize=9999;
 				if(pageNo==null||pageNo<0)pageNo=1;
 				TOrderBillNew billNew=new TOrderBillNew();
+				billNew.setOrderNo(orderNo);
 				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";
+		    		String[] comment = {"订单编号","合同编号","收款时间","财务流水时间","财务流水号","金额(万元)","收款方","付款方","流水科目","平台流水号","收款类型","备注"};
+		    		String fileName = orderNo+"流水记录列表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
 		    		//type 0 收款 1开票 2流水
 		    		XSSFWorkbook wb =exportTemplateInfoS(comment,"流水记录",list,2);
 		    		//根据列表编写文档
@@ -593,7 +624,9 @@ public class OrderReceivablesServiceImpl extends BaseMybatisDao<TemporaryReceiva
 					//当前列的只
 					String o = "";
 					switch (comment[i]) {
-//					String[] comment = {"收款时间","财务流水时间","财务流水号","金额(万元)","收款方","付款方","流水科目","平台流水号","收款类型","备注"};
+//					String[] comment = {"订单编号","合同编号","收款时间","财务流水时间","财务流水号","金额(万元)","收款方","付款方","流水科目","平台流水号","收款类型","备注"};
+					case "订单编号": o = ob.getOrderNo(); break;
+					case "合同编号": o = ob.getContractNo(); break;
 					case "收款时间": o = ob.getCreateTimes(); break;
 					case "财务流水时间": o = ob.getFinancialPayTimes(); break;
 					case "财务流水号": o = ob.getFinancialPayNo(); break;

+ 2 - 2
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
+static.host=//sb.jishutao.com/1.1.23
 avatar.host=//sb.jishutao.com
 
 #连测试
 #avatar.host=//static.jishutao.com
-#static.host=//static.jishutao.com/1.1.22
+#static.host=//static.jishutao.com/1.1.23
 
 upload.path=F:/data/public/upload
 upload.private.path=F:/data/private/upload

+ 1 - 1
src/main/resources/props/config_test.properties

@@ -54,7 +54,7 @@ session.validate.timespan=18000000
 app.name=AFT
 template.cacheable=false
 
-static.host=//static.jishutao.com/1.1.22
+static.host=//static.jishutao.com/1.1.23
 portal.host=//static.jishutao.com/portal/2.0.6
 avatar.host=//static.jishutao.com
 avatar.upload.host=//static.jishutao.com/upload