package com.iamberry.rst.controllers.dm; import com.iamberry.rst.core.cm.PostageInfo; import com.iamberry.rst.core.cm.SalesOrder; import com.iamberry.rst.core.cm.StoreInfo; import com.iamberry.rst.core.dm.ClaimOrder; import com.iamberry.rst.core.dm.DmDealer; import com.iamberry.rst.core.dm.FinancialReceipt; import com.iamberry.rst.core.order.ProductColor; import com.iamberry.rst.core.page.PageRequest; import com.iamberry.rst.core.page.PagedResult; import com.iamberry.rst.core.sys.Admin; import com.iamberry.rst.faces.cm.CompanyInfoService; import com.iamberry.rst.faces.cm.SalesOrderService; import com.iamberry.rst.faces.cm.StoreInfoService; import com.iamberry.rst.faces.dm.*; import com.iamberry.rst.faces.product.ProductService; import com.iamberry.rst.faces.sys.SysService; import com.iamberry.rst.utils.AdminUtils; import com.iamberry.rst.utils.StitchAttrUtil; import com.iamberry.wechat.tools.ResponseJson; import net.sf.json.JSONArray; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; @Controller @RequestMapping("/admin/financial_receipt") public class FinanciaReceController { private Logger logger = LoggerFactory.getLogger(FinanciaReceController.class); @Autowired private SysService sysService; @Autowired private FinancialReceiptService financialReceiptService; @Autowired private DmDealerService dmDealerService; @Autowired private ClaimOrderService claimOrderService; @Autowired private SalesOrderService salesOrderService; @Autowired private DealerChannelService dealerChannelService; @Autowired private DealerProductService dealerProductService; @Autowired private CompanyInfoService companyInfoService; @Autowired private StoreInfoService storeInfoService; @Autowired private ProductService productService; /** * 查询客户基本信息列表 * * @return * @author * @date */ @RequiresPermissions("dm:financialReceipt:list") @RequestMapping("/list_page_fr") public ModelAndView listCustomerBasic(HttpServletRequest request, FinancialReceipt financialReceipt, @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize, @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO, @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) { ModelAndView mv = new ModelAndView("dm/financialReceipt/fr_list"); Admin admin = AdminUtils.getLoginAdmin(); mv.addObject("admin",admin); if(admin.getAdminDept() != 1 && admin.getAdminDept() != 5){ //获取登录员工id Integer adminId = AdminUtils.getLoginAdminId(); financialReceipt.setDealerAdminId(adminId); } // 封装请求数据 PageRequest pageRequest = new PageRequest<>(financialReceipt, pageNO, pageSize, totalNum == 0); // 查询订单列表 PagedResult result = financialReceiptService.listFinancialReceiptPage(pageRequest); if (totalNum != 0) { result.setTotal(totalNum); } StitchAttrUtil.getSa().setModelAndView(financialReceipt, mv, "/admin/financial_receipt/list_page_fr", result); return mv; } /** * 添加客户页面 * @return * @author * @date */ @RequiresPermissions("dm:financialReceipt:add") @RequestMapping("/to_add_finan_rece") public ModelAndView toAddFinanRece(HttpServletRequest request) { ModelAndView mv = new ModelAndView("dm/financialReceipt/add_fr"); DmDealer dmDealer = new DmDealer(); dmDealer.setDealerStatus(1); List dmDealerList = dmDealerService.getDmDealerListToFr(dmDealer); mv.addObject("dmDealerList",dmDealerList); return mv; } /** * 添加 回款信息 * @param request * @return */ @ResponseBody @RequiresPermissions("dm:financialReceipt:add") @RequestMapping("/finan_rece_save") public ResponseJson finanReceSave(HttpServletRequest request, FinancialReceipt financialReceipt) { ResponseJson rj = ResponseJson.getSUCCESS(); //获取登录员工id Integer adminId = AdminUtils.getLoginAdminId(); financialReceipt.setCreateAdminId(adminId); if(financialReceipt.getDealerId() == null || financialReceipt.getDealerId() == 0){ financialReceipt.setFrClaimStatus(2); //frClaimStatus }else{ DmDealer dmDealer = dmDealerService.getDmDealerById(financialReceipt.getDealerId()); if(dmDealer == null){ rj = ResponseJson.getFAILURE(); rj.setResultMsg("添加回款信息,失败原因:客户信息查询失败"); return rj; } financialReceipt.setFrClaimStatus(1); financialReceipt.setFrClaimAdminId(dmDealer.getCreateId()); financialReceipt.setFrClaimDate(new Date()); } Integer flag = 0; try{ flag = financialReceiptService.save(financialReceipt); }catch (Exception e){ e.printStackTrace(); rj = ResponseJson.getFAILURE(); rj.setResultMsg("添加回款信息,失败原因:"+e.getMessage()); return rj; } if(flag > 0){ rj.setResultMsg("添加成功"); return rj; }else{ rj = ResponseJson.getFAILURE(); return rj; } } /** * to修改客户页面 * @return * @author * @date */ @RequiresPermissions("dm:dealer:update") @RequestMapping("/to_update_finan_rece") public ModelAndView toUpdateDealer(HttpServletRequest request,Integer frId) { ModelAndView mv = new ModelAndView("dm/financialReceipt/update_fr"); FinancialReceipt financialReceipt = financialReceiptService.getFinancialReceiptById(frId); mv.addObject("financialReceipt",financialReceipt); DmDealer dmDealer = new DmDealer(); dmDealer.setDealerStatus(1); List dmDealerList = dmDealerService.getDmDealerListToFr(dmDealer); mv.addObject("dmDealerList",dmDealerList); return mv; } /** * 修改客户信息 * @param request * @return */ @ResponseBody @RequiresPermissions("dm:supplier:update") @RequestMapping("/finan_rece_update") public ResponseJson dealereUpdate(HttpServletRequest request,FinancialReceipt financialReceipt) { ResponseJson rj = ResponseJson.getSUCCESS(); FinancialReceipt fr = financialReceiptService.getFinancialReceiptById(financialReceipt.getFrId()); if(financialReceipt.getDealerId() == null || financialReceipt.getDealerId() == 0){ financialReceipt.setFrClaimStatus(2); }else{ if(!Objects.equals(fr.getDealerId(), financialReceipt.getDealerId())){ DmDealer dmDealer = dmDealerService.getDmDealerById(financialReceipt.getDealerId()); if(dmDealer == null){ rj = ResponseJson.getFAILURE(); rj.setResultMsg("添加回款信息,失败原因:客户信息查询失败"); return rj; } financialReceipt.setFrClaimStatus(1); financialReceipt.setFrClaimAdminId(dmDealer.getCreateId()); financialReceipt.setFrClaimDate(new Date()); } } Integer flag = 0; try{ flag = financialReceiptService.update(financialReceipt); }catch (Exception e){ e.printStackTrace(); rj = ResponseJson.getFAILURE(); rj.setResultMsg("修改客户信息,失败原因:"+e.getMessage()); return rj; } if(flag > 0){ rj.setResultMsg("修改成功"); return rj; }else{ rj = ResponseJson.getFAILURE(); return rj; } } /** * to修改客户页面 * @return * @author * @date */ @RequiresPermissions("dm:financialReceipt:recognize") @RequestMapping("/to_claim_delaer") public ModelAndView toClaimDelaer(HttpServletRequest request,Integer frId,Integer type) { ModelAndView mv = new ModelAndView("dm/financialReceipt/claim_delaer"); mv.addObject("frId",frId); mv.addObject("type",type); FinancialReceipt fr = financialReceiptService.getFinancialReceiptById(frId); mv.addObject("fr",fr); //获取登录员工id Integer adminId = AdminUtils.getLoginAdminId(); DmDealer dmDealer = new DmDealer(); dmDealer.setDealerStatus(1); dmDealer.setCreateId(adminId); List dmDealerList = dmDealerService.getDmDealerListToFr(dmDealer); mv.addObject("dmDealerList",dmDealerList); return mv; } /** * 修改认款 * @param request * @return */ @ResponseBody @RequiresPermissions("dm:financialReceipt:recognize") @RequestMapping("/claim_delaer") public ResponseJson claimDelaer(HttpServletRequest request,Integer frId,Integer dealerId,Integer type) { ResponseJson rj = ResponseJson.getSUCCESS(); //1:已认领 2:未认领 Integer flag = 0; if(type == 2){ FinancialReceipt fr = new FinancialReceipt(); fr.setFrId(frId); fr.setFrClaimDate(null); fr.setDealerId(null); fr.setFrClaimStatus(2); fr.setFrClaimAdminId(null); flag = financialReceiptService.update(fr); }else if(type == 1){ Integer adminId = AdminUtils.getLoginAdminId(); FinancialReceipt fr = new FinancialReceipt(); fr.setFrId(frId); fr.setFrClaimDate(new Date()); fr.setDealerId(dealerId); fr.setFrClaimStatus(1); fr.setFrClaimAdminId(adminId); flag = financialReceiptService.update(fr); }else{ rj = ResponseJson.getFAILURE(); rj.setResultMsg("绑定客户失败"); return rj; } if(flag > 0){ rj.setResultMsg("修改成功"); return rj; }else{ rj = ResponseJson.getFAILURE(); return rj; } } /** * to修改客户页面 * @return * @author * @date */ @RequiresPermissions("dm:financialReceipt:recognize") @RequestMapping("/to_order_desc") public ModelAndView toOrderDesc(HttpServletRequest request,Integer frId) { ModelAndView mv = new ModelAndView("dm/financialReceipt/order_desc"); mv.addObject("frId",frId); FinancialReceipt fr = financialReceiptService.getFinancialReceiptById(frId); mv.addObject("fr",fr); ClaimOrder claimOrder = new ClaimOrder(); claimOrder.setFrId(frId); List claimOrderList = claimOrderService.getClaimOrderList(claimOrder); mv.addObject("claimOrderList",claimOrderList); return mv; } /** * 绑定订单 * @param request * @return */ @ResponseBody @RequiresPermissions("dm:financialReceipt:recognize") @RequestMapping("/claim_order") public ResponseJson claimOrder(HttpServletRequest request,Integer frId,String claimOrderJson) { ResponseJson rj = ResponseJson.getSUCCESS(); List claimOrderList = new ArrayList<>(); if(claimOrderJson != null && !"".equals(claimOrderJson)){ JSONArray jsonArray = JSONArray.fromObject(claimOrderJson); claimOrderList = (List) JSONArray.toCollection(jsonArray, ClaimOrder.class); }else{ rj = ResponseJson.getFAILURE(); return rj; } //删除所有绑定的订单 claimOrderService.deleteByFrId(frId); for (ClaimOrder claimOrder:claimOrderList) { claimOrder.setFrId(frId); } Integer flag = claimOrderService.saveList(claimOrderList); if(flag > 0){ FinancialReceipt financialReceipt = new FinancialReceipt(); financialReceipt.setFrId(frId); financialReceipt.setFrClaimStatus(3); financialReceiptService.update(financialReceipt); } if(flag > 0){ rj.setResultMsg("绑定成功"); return rj; }else{ rj = ResponseJson.getFAILURE(); return rj; } } /** * 获取订单集合 * @param request * @param salesOrder * @return */ @ResponseBody @RequestMapping(value = "/fr_select_order_desc") public ResponseJson selectOrderDesc(HttpServletRequest request, SalesOrder salesOrder, String ids,Integer frId,Integer dealerId) { if (ids != null && ids.indexOf("_") > -1) { String[] salesIds = ids.split("_"); salesOrder.setSalesIds(salesIds); } List salesOrderList = salesOrderService.salesOrderListAndItem(salesOrder); // DmDealer dmDealer = dmDealerService.getDmDealerById(dealerId); // // 是否自营 1:自营 2:非自营 // if(dmDealer.getDealerSelfOperated() == 2){ // DealerChannel dealerChannel = new DealerChannel(); // dealerChannel.setDealerId(dealerId); // List dealerChannelList = dealerChannelService.getDealerChannelList(dealerChannel); // // DealerProduct dealerProduct = new DealerProduct(); // dealerProduct.setDealerId(dealerId); // List dealerProductList = dealerProductService.getDealerProductAndStoreList(dealerProduct); // // for (SalesOrder so : salesOrderList) { // for (SalesOrderItem salesOrderItem:so.getSalesOrderItemList()) { // salesOrderItem.setItemTotal(0); // for (DealerProduct dp:dealerProductList) { // if(Objects.equals(salesOrderItem.getItemColorId(), dp.getColorId())){ // if(dp.getDealProdStoreArea() == 1){ // //店铺范围 1:全部店铺 // for (DealerChannel dc:dealerChannelList) { // if(Objects.equals(dc.getStoreId(), so.getSalesStoreId())){ // salesOrderItem.setItemTotal(salesOrderItem.getItemNum() * dp.getDealProdPrice()); // break; // } // } // }else if (dp.getDealProdStoreArea() == 2){ // //2:部分店铺 // for (DealerProductStore dps:dp.getDealerProductStoreList()) { // if(Objects.equals(so.getSalesStoreId(), dps.getStoreId())){ // salesOrderItem.setItemTotal(salesOrderItem.getItemNum() * dp.getDealProdPrice()); // break; // } // } // } // break; // } // } // } // } // } ResponseJson rj = new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("salesOrderList", salesOrderList); return rj; } /** * 到选择订单页面 * @param request * @return */ @RequestMapping("/to_select_order") public ModelAndView toSelectOrder(HttpServletRequest request){ ModelAndView mv = new ModelAndView("dm/financialReceipt/select_order_list"); List productColorList = productService.listproductAndColor(new ProductColor()); SalesOrder salesOrder = new SalesOrder(); String salesStatusStr = request.getParameter("salesStatus"); if(salesStatusStr != null && !"".equals(salesStatusStr)){ salesOrder.setSalesStatus(Integer.valueOf(salesStatusStr)); } String orderIscostTotal = request.getParameter("orderIscostTotal"); if(orderIscostTotal != null && !"".equals(orderIscostTotal)){ salesOrder.setOrderIscostTotal(Integer.valueOf(orderIscostTotal)); } //获取销售公司 // List companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo()); // mv.addObject("companyInfoList", companyInfoList); DmDealer dmDealer = new DmDealer(); dmDealer.setDealerStatus(1); List dmDealerList = dmDealerService.getDmDealerList(dmDealer); mv.addObject("dmDealerList", dmDealerList); mv.addObject("productColorList", productColorList); mv.addObject("salesOrder", salesOrder); return mv; } /** * 到选择订单页面 * @param request * @return */ @RequestMapping("/to_select_post") public ModelAndView toSelectPost(HttpServletRequest request,Integer dealerId){ ModelAndView mv = new ModelAndView("dm/financialReceipt/select_post_list"); //获取销售公司 // List companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo()); // mv.addObject("companyInfoList", companyInfoList); DmDealer dmDealer = new DmDealer(); dmDealer.setDealerStatus(1); List dmDealerList = dmDealerService.getDmDealerList(dmDealer); mv.addObject("dmDealerList", dmDealerList); mv.addObject("dealerId", dealerId); return mv; } /** * 获取店铺集合 * @param request * @param storeInfo * @return */ @ResponseBody @RequestMapping(value = "/select_storeInfo_by_dealer") public ResponseJson selectStoreInfoByDealer(HttpServletRequest request, StoreInfo storeInfo) { storeInfo.setStoreStatus(1); List storeInfoList = storeInfoService.listStoreByDealer(storeInfo); ResponseJson rj = new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("storeInfoList", storeInfoList); return rj; } /** * 删除收款 * @param request * @param frId * @return */ @ResponseBody @RequiresPermissions("dm:financialReceipt:delete") @RequestMapping(value = "/delete_fr") public ResponseJson deleteFr(HttpServletRequest request, Integer frId) { Integer flag = financialReceiptService.delete(frId); if(flag > 0){ ResponseJson rj = ResponseJson.getSUCCESS(); return rj; }else{ ResponseJson rj = ResponseJson.getFAILURE(); return rj; } } /** * 获取邮费列表 * @param request * @return */ @ResponseBody @RequestMapping(value = "/select_post") public ResponseJson selectPost(HttpServletRequest request,PostageInfo postageInfo, @RequestParam(value = "pageSize", defaultValue = "100", required = false) Integer pageSize, @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO, @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) { ResponseJson rj = new ResponseJson(200, "查询成功", 200); // 封装请求数据 PageRequest pageRequest = new PageRequest<>(postageInfo, pageNO, pageSize, totalNum == 0); // 查询订单列表 PagedResult pagedResult = financialReceiptService.getPostageInfoList(pageRequest); if (totalNum != 0) { pagedResult.setTotal(totalNum); } rj.addResponseKeyValue("pagedResult", pagedResult); return rj; } /** * 查询客户基本信息列表 * * @return * @author * @date */ @RequiresPermissions("dm:FinancialReceipt:statistic") @RequestMapping("/fr_statistic") public ModelAndView frStatistic(HttpServletRequest request, DmDealer dmDealer, @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize, @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO, @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) { ModelAndView mv = new ModelAndView("dm/financialReceipt/fr_statistics"); // 封装请求数据 PageRequest pageRequest = new PageRequest<>(dmDealer, pageNO, pageSize, totalNum == 0); // 查询订单列表 long x = System.currentTimeMillis(); PagedResult result = dmDealerService.listDmDealerStatistic(pageRequest); long y = System.currentTimeMillis(); System.out.println("long tima : " + (y-x)); if (totalNum != 0) { result.setTotal(totalNum); } StitchAttrUtil.getSa() .addDatePro("yyyy-MM-dd HH:mm:ss","startDate","endDate") .addNoPro("dealerContactList","dealerChannelList","dealerProductList","cooperationAgreeList") .setModelAndView(dmDealer, mv, "/admin/financial_receipt/fr_statistic", result); return mv; } }