Explorar el Código

财务管理员派单
财务专员驳回\新增流水等
静态网页新增

limin hace 7 años
padre
commit
c2510db08c

+ 5 - 1
src/main/java/com/goafanti/common/controller/WebpageController.java

@@ -448,6 +448,10 @@ public class WebpageController extends BaseController {
 		return modelview;
 	}
 	
-	
+	@RequestMapping(value = "/admin/statistics", method = RequestMethod.GET)
+	public ModelAndView adminStatistics(HttpServletRequest request, ModelAndView modelview) {
+		modelview.setViewName("/admin/statistics");
+		return modelview;
+	}
 	
 }

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

@@ -120,4 +120,6 @@ public interface TOrderNewMapper {
     
     
     int getCountByIdAndStatus(TOrderNew orderNew);
+    
+    String getSaleIdByOno(String ono);
 }

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

@@ -798,7 +798,7 @@
   
   <!-- 查看所有待财务管理员分配的订单数据 -->
   <select id="getAllUnassignedListOrder" parameterType="Map" resultType="com.goafanti.order.bo.OrderListBo">
-  	select o.order_no as orderNo, o.order_type orderType, o.create_time as createTime, o.process_status as processStatus
+  	select o.order_no as orderNo, o.order_type orderType, o.create_time as createTime, o.process_status as processStatus,
   	o.sign_time as signTime, u.nickname as buyerName,o.total_amount signTotalAmount, o.approval , a.name sellerName
   	from t_order_new o 
   	left join `user` u on o.buyer_id = u.id
@@ -823,10 +823,10 @@
   	<bind name="b" value="o.endTime + ' 23:59:59'"/>
   	and o.sign_time between #{a,jdbcType=VARCHAR} and #{a,jdbcType=VARCHAR}
   	</if>
-  	<if test="ob = 1">
+  	<if test="ob == 1">
   	order by o.sign_time
   	</if>
-  	<if test="ob = 2">
+  	<if test="ob == 2">
   	order by o.liquidation_status,o.sign_time
   	</if>
 	<if test="page_sql != null">
@@ -929,5 +929,64 @@
        and legal_person_tel = #{legalPersonTel,jdbcType=VARCHAR}
       </if>
   </select>
+  <!-- 财务专员查看需要待收款的数据 -->
+  <select id="financeList" parameterType="Map" resultType="com.goafanti.order.bo.OrderListBo">
+  select  o.order_no as orderNo, o.sign_time as signTime, u.nickname as buyerName, o.order_status as orderStatus, 
+  a.name as sellerName, o.salesman_id as sellerId, o.buyer_id as buyerId, o.liquidation_status as liquidationStatus , 
+  ifnull(b.amount,0) as actuallyTotalAmount
+  	 from t_order_new o 
+  	 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
+  	 where delete_sign = 0
+  		and process_status >= 3
+  		and (approval = 0 or approval = 2)
+	  	and o.finance_id = #{o.financeId,jdbcType=VARCHAR}
+  		<if test='o.orderNo != null and o.orderNo != ""'>
+	  	and o.order_no = #{o.orderNo,jdbcType=VARCHAR}
+	  	</if>
+	  	<if test='o.buyerName != null and o.buyerName != ""'>
+	  	<bind name="n" value="'%' + o.buyerName + '%'"/>
+	  	and u.nickname  like #{n,jdbcType=VARCHAR}
+	  	</if>
+	  	<if test='o.startTime != null and o.startTime != "" and o.endTime != null and o.endTime != ""'>
+	  	<bind name="a" value="o.startTime + ' 00:00:00'"/>
+	  	<bind name="b" value="o.endTime + ' 23:59:59'"/>
+	  	and o.sign_time between #{a,jdbcType=VARCHAR} and #{a,jdbcType=VARCHAR}
+	  	</if>
+	  	<if test="page_sql != null">
+			${page_sql}
+		</if>
+	  	order by o.liquidation_status, o.sign_time
+  </select>
+  <select id="financeCount" parameterType="Map" resultType="java.lang.Integer">
+  select count(*)
+  	 from t_order_new o 
+  	 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
+  	 where delete_sign = 0
+  		and process_status >= 3
+  		and (approval = 0 or approval = 2)
+	  	and o.finance_id = #{o.financeId,jdbcType=VARCHAR}
+  		<if test='o.orderNo != null and o.orderNo != ""'>
+	  	and o.order_no = #{o.orderNo,jdbcType=VARCHAR}
+	  	</if>
+	  	<if test='o.buyerName != null and o.buyerName != ""'>
+	  	<bind name="n" value="'%' + o.buyerName + '%'"/>
+	  	and u.nickname  like #{n,jdbcType=VARCHAR}
+	  	</if>
+	  	<if test='o.startTime != null and o.startTime != "" and o.endTime != null and o.endTime != ""'>
+	  	<bind name="a" value="o.startTime + ' 00:00:00'"/>
+	  	<bind name="b" value="o.endTime + ' 23:59:59'"/>
+	  	and o.sign_time between #{a,jdbcType=VARCHAR} and #{a,jdbcType=VARCHAR}
+	  	</if>
+  </select>
+  <!-- 通过订单编号获得订单的负责人(营销员) -->
+  <select id="getSaleIdByOno" parameterType="java.lang.String" resultType="java.lang.String">
+  	select salesman_id from t_order_new where order_no = #{_parameter,jdbcType=VARCHAR}
+  </select>
   
 </mapper>

+ 41 - 1
src/main/java/com/goafanti/order/controller/FundManagerOrderApiController.java

@@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.goafanti.common.bo.Result;
 import com.goafanti.common.controller.CertifyApiController;
+import com.goafanti.common.model.TOrderBack;
+import com.goafanti.common.model.TOrderBillNew;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.order.bo.OrderListBo;
 import com.goafanti.order.service.FundManageOrderService;
@@ -69,10 +71,48 @@ public class FundManagerOrderApiController extends CertifyApiController {
 		//财务专员自己的id
 		order.setFinanceId(TokenManager.getUserId());
 		order.setProjectStage(3);
-		res.setData(fundManageOrderServiceImpl.allUnassignedOrder(order, pageNo, pageSize,2));
+		res.setData(fundManageOrderServiceImpl.financeList(order, pageNo, pageSize));
 		return res;
 	}
 	
+	/**
+	 * 财务专员驳回
+	 * @param orderBack
+	 * @return
+	 */
+	@RequestMapping(value="/reject", method = RequestMethod.POST)
+	public Result reject(TOrderBack orderBack){
+		Result res = new Result();
+		Integer i = fundManageOrderServiceImpl.reject(orderBack);
+		if(i>0){
+			res.setData("驳回处理成功!");
+		}else{
+			res.getError().add(buildError("", "已经交款不能驳回"));
+		}
+		return res;
+	}
+	
+	/**
+	 * 财务专员新增流水记录并流转订单状态
+	 * @param billNew
+	 * @return
+	 */
+	@RequestMapping(value="/addReceiptsFlow", method = RequestMethod.POST)
+	public Result addReceiptsFlow(TOrderBillNew billNew){
+		Result res = new Result();
+		Integer i = fundManageOrderServiceImpl.addReceiptsFlow(billNew);
+		if(i>0){
+			res.setData("新增收款记录成功!");
+		}else{
+			res.getError().add(buildError("", "本次收款金额大于应收金额!"));
+		}
+		return res;
+	}
 	
+	@RequestMapping(value="/getRefundList", method = RequestMethod.POST)
+	public Result getRefundList(){
+		Result res = new Result();
+		return res;
+	}
 	
 }

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

@@ -1,5 +1,7 @@
 package com.goafanti.order.service;
 
+import com.goafanti.common.model.TOrderBack;
+import com.goafanti.common.model.TOrderBillNew;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.order.bo.OrderListBo;
 
@@ -13,6 +15,14 @@ public interface FundManageOrderService {
 	 * @return
 	 */
 	Pagination<OrderListBo> allUnassignedOrder(OrderListBo order,Integer pageNo,Integer pageSize,Integer ob);
+	/**
+	 * 财务专员查看分配给自己的订单
+	 * @param order
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	Pagination<OrderListBo> financeList(OrderListBo order,Integer pageNo,Integer pageSize);
 
 	/**
 	 * 财务管理员分派订单给财务专员
@@ -21,6 +31,18 @@ public interface FundManageOrderService {
 	 * @return
 	 */
 	Integer distributionFinance(String orderid, String financeId, Integer approval);
-
 	
+	/**
+	 * 财务专员驳回
+	 * @param back
+	 * @return
+	 */
+	Integer reject(TOrderBack back);
+	
+	/**
+	 * 财务专员添加收款流水
+	 * @param billNew
+	 * @return
+	 */
+	Integer addReceiptsFlow(TOrderBillNew billNew);
 }

+ 95 - 3
src/main/java/com/goafanti/order/service/impl/FundManagerOrderServiceImpl.java

@@ -1,5 +1,6 @@
 package com.goafanti.order.service.impl;
 
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -7,10 +8,16 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.goafanti.common.dao.AdminMapper;
+import com.goafanti.common.dao.TOrderBackMapper;
+import com.goafanti.common.dao.TOrderBillNewMapper;
 import com.goafanti.common.dao.TOrderNewMapper;
+import com.goafanti.common.model.TOrderBack;
+import com.goafanti.common.model.TOrderBillNew;
 import com.goafanti.common.model.TOrderNew;
 import com.goafanti.core.mybatis.BaseMybatisDao;
+import com.goafanti.core.mybatis.JDBCIdGenerator;
 import com.goafanti.core.mybatis.page.Pagination;
+import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.order.bo.OrderListBo;
 import com.goafanti.order.service.FundManageOrderService;
 
@@ -21,6 +28,12 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 	private TOrderNewMapper	tOrderNewMapper;
 	@Autowired
 	private AdminMapper	adminMapper;
+	@Autowired
+	private TOrderBillNewMapper billNewMapper;
+	@Autowired
+	private TOrderBackMapper backMapper;
+	@Autowired
+	JDBCIdGenerator	idGenerator;
 
 	@SuppressWarnings("unchecked")
 	@Override
@@ -34,7 +47,7 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 	}
 	
 	@Override
-	public Integer distributionFinance(String orderid, String financeId, Integer approval) {
+	public Integer distributionFinance(String orderNo, String financeId, Integer approval) {
 		// 先判断订单id和财务专员是否存在或者能够使用
 		TOrderNew onew = new TOrderNew();
 		//判断是不是特批的数据
@@ -43,7 +56,7 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 		}else if(approval != 2){//特批未通过
 			return -1;
 		}
-		onew.setOrderNo(orderid);
+		onew.setOrderNo(orderNo);
 		onew.setDeleteSign(0);//正常
 		onew.setProcessStatus(2);//已派财务管理员
 		onew.setApproval(approval);//特批状态
@@ -55,7 +68,7 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 		if(idCount == 1 && fidCount == 1){
 			//修改订单流程状态
 			TOrderNew record = new TOrderNew();
-			record.setOrderNo(orderid);
+			record.setOrderNo(orderNo);
 			record.setFinanceId(financeId);
 			record.setProjectStatus(3);
 			r = tOrderNewMapper.updateByPrimaryKeySelective(record);
@@ -65,6 +78,85 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 		}
 		return r;
 	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public Pagination<OrderListBo> financeList(OrderListBo order,
+			Integer pageNo, Integer pageSize) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		params.put("o", order);
+		Pagination<OrderListBo> data = (Pagination<OrderListBo>)findPage("financeList", "financeCount", params, pageNo, pageSize);
+		return data;
+	}
+
+	@Override
+	public Integer reject(TOrderBack back) {
+		// 是否已经收款
+		BigDecimal bd = billNewMapper.getAmountByOid(back.getOrderNo());
+		if(bd.compareTo(new BigDecimal(0.0)) == 1){
+			return 0;//已经收款不能驳回
+		}
+		//否 可以处理驳回
+		
+		//修改订单状态
+		TOrderNew orderNew = new  TOrderNew();
+		orderNew.setOrderNo(back.getOrderNo());
+		orderNew.setOrderStatus(5);
+		int c = tOrderNewMapper.updateByPrimaryKeySelective(orderNew);
+		
+		//新增驳回数据
+		if(c>0){
+			back.setBackStatus(0);
+			System.out.println(TokenManager.getUserId());
+			System.out.println(TokenManager.getAdminId());
+			back.setInitiate(TokenManager.getUserId());//发起人
+			back.setAccept(tOrderNewMapper.getSaleIdByOno(back.getOrderNo()));	//查看该订单的负责人	
+			c = backMapper.insertSelective(back);
+		}
+		return c;
+	}
+
+	@Override
+	public Integer addReceiptsFlow(TOrderBillNew billNew) {
+		//判断有没有要加入的金额有没有超过总金额
+		BigDecimal bd = billNewMapper.getAmountByOid(billNew.getOrderNo());
+		//获得的单个订单金额数据(首付金额和总金额)
+		TOrderNew o = tOrderNewMapper.selectByPrimaryKey(billNew.getOrderNo());
+		
+		bd.add(billNew.getTransactionAmount());
+		int lstaus = 0;
+		
+		//如果订单流水总额大于总金额 return -1
+		//如果订单流水等于于总金额 lstaus 2
+		//如果订单流水小于总金额大于首付 lstaus 1
+		//如果订单流水小于首付 lstaus 0
+		if(bd.compareTo(o.getTotalAmount()) == 1){
+			return -1;//超过不能添加
+		}else if(bd.compareTo(o.getTotalAmount()) == 0){
+			lstaus = 2;
+		}else if(bd.compareTo(o.getTotalAmount()) == -1 && bd.compareTo(o.getFirstAmount()) == 1){
+			lstaus = 1;
+		}
+		//否则新增流水信息
+		billNew.setBillNo(idGenerator.generateId().toString());
+		billNew.setCreater(TokenManager.getUserId());
+		int result = billNewMapper.insertSelective(billNew);
+		
+		//修改订单结算金额和结算状态
+		//如果已经首付并且流程状态是没有派给咨询师的修改流程状态为4
+		TOrderNew orderNew = new TOrderNew();
+		orderNew.setOrderNo(billNew.getOrderNo());
+		orderNew.setSettlementAmount(bd);
+		orderNew.setLiquidationStatus(lstaus);
+		if(lstaus == 1 && o.getProcessStatus() == 3){
+			orderNew.setProcessStatus(4);
+		}
+		if(result > 0){
+			result = tOrderNewMapper.updateByPrimaryKeySelective(orderNew);
+		}
+		
+		return result;
+	}
 	
 
 	

+ 24 - 0
src/main/webapp/WEB-INF/views/admin/statistics.html

@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org">
+<head th:replace="common::header(~{::title},~{::link})">
+<meta charset="utf-8">
+<title>管理员-数据统计</title>
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap.min.css">
+<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/latest/css/bootstrap-theme.min.css">
+
+<link th:href="${staticHost+'/dll/dll.css'}" rel="stylesheet">
+<link th:href="${staticHost+'/admin/statistics.css'}" rel="stylesheet">
+</head>
+
+<body>
+	<div id="root"></div>
+	
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/dll/dll.js'}"></script>
+		<script type="text/javascript" th:src="${staticHost+'/admin/statistics.js'}"></script>
+	</div>
+</body>
+
+</html>