Prechádzať zdrojové kódy

财务添加导入功能,下载模板,列表添加检索(时间检索)

wangxiaoming 5 rokov pred
rodič
commit
0331a91961

+ 33 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/dm/FinancialReceipt.java

@@ -38,6 +38,8 @@ public class FinancialReceipt  implements  Serializable{
     private Date frDate;
     //备注
     private String frRemake;
+    //备注
+    private String frFilePath;
     //创建人
     private Integer createAdminId;
     //创建时间'
@@ -45,6 +47,13 @@ public class FinancialReceipt  implements  Serializable{
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     private Date createDate;
 
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
+    private Date startDate;                 //开始时间
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
+    private Date endDate;                   //结束时间
+
     //客户跟进管理id
     private Integer dealerAdminId;
 
@@ -159,4 +168,28 @@ public class FinancialReceipt  implements  Serializable{
     public void setDealerAdminId(Integer dealerAdminId) {
         this.dealerAdminId = dealerAdminId;
     }
+
+    public String getFrFilePath() {
+        return frFilePath;
+    }
+
+    public void setFrFilePath(String frFilePath) {
+        this.frFilePath = frFilePath;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
 }

+ 6 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/dm/FinancialReceiptService.java

@@ -60,5 +60,11 @@ public interface FinancialReceiptService {
      */
     PagedResult<PostageInfo> getPostageInfoList(PageRequest<PostageInfo> pageRequest);
 
+    /**
+     * 增加数据 <集合>
+     * @param  financialReceiptList
+     * @return Integer
+     */
+    Integer  saveList(List<FinancialReceipt>  financialReceiptList);
 
 }

+ 10 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/dm/FinancialReceiptServiceImpl.java

@@ -83,4 +83,14 @@ public class FinancialReceiptServiceImpl  implements FinancialReceiptService {
         return PageUtil.getPage(postageInfoList);
     }
 
+    /**
+     * 增加数据 <集合>
+     * @param  financialReceiptList
+     * @return Integer
+     */
+    @Override
+    public  Integer  saveList(List<FinancialReceipt>  financialReceiptList){
+        return  financialReceiptMapper.saveList(financialReceiptList);
+    }
+
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/dm/mapper/FinancialReceiptMapper.java

@@ -57,4 +57,11 @@ public interface FinancialReceiptMapper {
      * @return List
      */
     List<PostageInfo> getPostageInfoList(PostageInfo  postageInfo);
+
+    /**
+     * 增加数据 <集合>
+     * @param  financialReceiptList
+     * @return Integer
+     */
+    Integer  saveList(List<FinancialReceipt>  financialReceiptList);
 }

+ 40 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/dm/mapper/financialReceiptMapper.xml

@@ -71,6 +71,12 @@
             <if test="dealerAdminId != null ">
                 AND (t.fr_claim_status = 2 OR  dd.create_id = #{dealerAdminId})
             </if >
+            <if test="startDate != null and startDate != ''">
+                AND t.create_date <![CDATA[>=]]> #{startDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                AND t.create_date <![CDATA[<=]]> #{endDate}
+            </if>
         </where>
         ORDER BY t.fr_id DESC
     </select>
@@ -196,4 +202,38 @@
         </where>
         ORDER BY rpi.postage_id DESC
     </select>
+
+
+    <insert id="saveList" parameterType="java.util.List" >
+        insert into
+        tb_rst_dm_financial_receipt
+        (
+        dealer_id,
+        fr_claim_admin_id,
+        fr_claim_date,
+        fr_claim_status,
+        fr_bank,
+        fr_amount,
+        fr_date,
+        fr_remake,
+        fr_file_path,
+        create_admin_id
+        )
+        values
+        <foreach collection="list" item="node" index="index" separator="," open="" close="">
+            (
+            #{node.dealerId},
+            #{node.frClaimAdminId},
+            #{node.frClaimDate},
+            #{node.frClaimStatus},
+            #{node.frBank},
+            #{node.frAmount},
+            #{node.frDate},
+            #{node.frRemake},
+            #{node.frFilePath},
+            #{node.createAdminId}
+            )
+        </foreach >
+    </insert>
+
 </mapper>

+ 55 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/dm/FinanciaReceController.java

@@ -17,6 +17,7 @@ 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.ExcelUtil;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
 import net.sf.json.JSONArray;
@@ -32,6 +33,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -165,6 +167,59 @@ public class FinanciaReceController {
     }
 
     /**
+     * 导入 回款信息
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("dm:financialReceipt:add")
+    @RequestMapping("/upload_finan_rece_save")
+    public ResponseJson uploadFinanReceSave(HttpServletRequest request, String frFilePath) {
+        ResponseJson rj = ResponseJson.getSUCCESS();
+
+        //获取登录员工id
+        Integer adminId = AdminUtils.getLoginAdminId();
+        String path  = request.getServletContext().getRealPath(frFilePath);
+        List<FinancialReceipt> financialReceiptList = new ArrayList<>();
+        try {
+           financialReceiptList = ExcelUtil.readFr(path);
+        } catch (IOException e) {
+            e.printStackTrace();
+            rj = ResponseJson.getFAILURE();
+            rj.setResultMsg("导入回款信息失败,失败原因:"+e.getMessage());
+            return  rj;
+        }
+
+        if(financialReceiptList == null || financialReceiptList.size()<1 ){
+            rj = ResponseJson.getFAILURE();
+            rj.setResultMsg("添加回款信息失败,未检索到回款信息");
+            return  rj;
+        }
+
+        for (FinancialReceipt fr:financialReceiptList) {
+            fr.setCreateAdminId(adminId);
+            fr.setFrClaimStatus(2);
+        }
+
+        Integer flag = 0;
+        try{
+            flag = financialReceiptService.saveList(financialReceiptList);
+        }catch (Exception e){
+            e.printStackTrace();
+            rj = ResponseJson.getFAILURE();
+            rj.setResultMsg("添加回款信息失败,失败原因:"+e.getMessage());
+            return  rj;
+        }
+        if(flag > 0){
+            rj.setResultMsg("导入成功,成功导入"+ financialReceiptList.size() +"条回款记录");
+            return rj;
+        }else{
+            rj = ResponseJson.getFAILURE();
+            return  rj;
+        }
+    }
+
+    /**
      * to修改回款页面
      * @return
      * @author

+ 88 - 0
watero-rst-web/src/main/java/com/iamberry/rst/utils/ExcelUtil.java

@@ -1,5 +1,6 @@
 package com.iamberry.rst.utils;
 
+import com.iamberry.rst.core.dm.FinancialReceipt;
 import com.iamberry.rst.core.order.EfastOrder;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.pts.PtsBomComponents;
@@ -21,6 +22,7 @@ import org.springframework.stereotype.Component;
 
 import java.io.*;
 import java.text.DecimalFormat;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -1158,4 +1160,90 @@ public class ExcelUtil {
             }
             return list;
         }
+
+
+    /**
+     *  获取财务打款
+     * @param filePath
+     * @return
+     * @throws IOException
+     */
+    public static List<FinancialReceipt> readFr(String filePath)throws IOException {
+        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
+
+        List<FinancialReceipt> financialReceiptList = new ArrayList<>();
+        // 判断文件是否存在
+        File file = new File(filePath);
+        if (!file.exists()) {
+            return null;
+        }
+        // 获取Workbook
+        InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
+        Workbook wb = null;
+        if (filePath.endsWith("xls")) {
+            wb = new HSSFWorkbook(inputStream);
+        } else {
+            wb = new XSSFWorkbook(inputStream);
+        }
+        inputStream.close();
+
+        // 获取Sheet
+        Sheet sheet = wb.getSheetAt(0);
+        Iterator<Row> rows = sheet.rowIterator();
+
+        int returnNum = 0;
+        int i=0;
+        // 读取数据
+        while (rows.hasNext()) {
+            Row temp = rows.next();
+            if(i == 0){
+                i++;
+                continue;
+            }
+            FinancialReceipt fr = new FinancialReceipt();
+            String frBank = getValue(temp.getCell(0)).trim();//来源
+            String frRemake = getValue(temp.getCell(2)).trim();//备注
+            String frDate = getValue(temp.getCell(3)).trim();//付款时间
+
+            if(frBank == null || "".equals(frBank)){
+                returnNum ++;
+                continue;
+            }else{
+                frBank = frBank.replaceAll("\\r|\\r|\\n","");
+            }
+            if(returnNum > 3){
+                break;
+            }
+
+            String amount = "-1";
+            amount = getValue(temp.getCell(1)).trim();
+            if(amount != null && !"".equals(amount)){
+                amount = amount.replaceAll("\\r|\\r|\\n","");
+            }
+            if(amount == null || "".equals(amount) || "-1".equals(amount)){
+                amount = "0";
+            }
+            Double frAmount = Double.valueOf(amount);
+            frAmount = frAmount * 100;
+            fr.setFrAmount(frAmount.intValue());
+            fr.setFrBank(frBank);
+            fr.setFrRemake(frRemake);
+            try {
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(fmt.parse(frDate));
+                calendar.set(Calendar.HOUR_OF_DAY, 9);
+                fr  .setFrDate(calendar.getTime());
+            } catch (ParseException e) {
+                logger.info("时间错误,设置当前时间为回款时间");
+                fr.setFrDate(new Date());
+            }
+            financialReceiptList.add(fr);
+        }
+
+        // 写入
+        OutputStream output = new BufferedOutputStream(new FileOutputStream(filePath));
+        wb.write(output);
+        output.close();
+        return financialReceiptList;
+    }
 }

+ 2 - 2
watero-rst-web/src/main/webapp/WEB-INF/views/dm/financialReceipt/add_fr.ftl

@@ -71,9 +71,9 @@
 
 
             <div class="row cl" id="" style="">
-                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>回款账号:</label>
+                <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>回款来源:</label>
                 <div class="formControls col-3 col-sm-3">
-                    <input type="text" class="input-text trim_input" value="" placeholder="填写回款账号" id="frBank" name="frBank" datatype="*1-50" errormsg="回款账号必填,不能超过50个字符。" >
+                    <input type="text" class="input-text trim_input" value="" placeholder="填写回款账号,名称" id="frBank" name="frBank" datatype="*1-50" errormsg="回款账号必填,不能超过50个字符。" >
                 </div>
             </div>
 

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 113 - 12
watero-rst-web/src/main/webapp/WEB-INF/views/dm/financialReceipt/fr_list.ftl


+ 15 - 13
watero-rst-web/src/main/webapp/WEB-INF/views/dm/financialReceipt/order_desc.ftl

@@ -94,14 +94,14 @@
             </div>
 
 
-            <div class="row cl">
+         <#--   <div class="row cl">
                 <label class="form-label col-3">
                     <div class="tit-2">订单信息</div>
                 </label>
                 <div class="formControls col-9">
                 </div>
             </div>
-
+-->
             <#if (admin.adminDept == 2 || admin.adminDept == 1)>
                 <div class="row cl" id="" style="">
                     <div class="formControls col-5 col-sm-5" style="padding-top: 3px;">
@@ -164,13 +164,13 @@
                 </div>
             </div>
 
-            <div class="row cl">
+          <#--  <div class="row cl">
                 <label class="form-label col-3">
                     <div class="tit-2">退货信息</div>
                 </label>
                 <div class="formControls col-9">
                 </div>
-            </div>
+            </div>-->
             <#if (admin.adminDept == 2 || admin.adminDept == 1)>
                 <div class="row cl" id="" style="">
                     <div class="formControls col-5 col-sm-5" style="padding-top: 3px;">
@@ -205,12 +205,12 @@
                                         <tr class="text-c order_item itemNum_return_${claimOrder_index}"  orderItem="2">
                                             <input type="hidden" class="itemId" value="${claimOrder.itemId}">
                                             <input type="hidden" class="itemProductDiscount" value="${((claimOrder.itemProductDiscount/100/claimOrder.claimOrderNum)?string("0.##"))!''}">
-                                            <td class="itemTotal">${((claimOrder.frPrice/100)?string("0.##"))!''}</td>
+                                            <td class="itemTotal">${((claimOrder.frPrice/100*-1)?string("0.##"))!''}</td>
                                             <td>${claimOrder.salesDealCode!''}</td>
                                             <td>${claimOrder.storeName!''}</td>
                                             <td>${claimOrder.itemProductName!''}</td>
                                             <td>${claimOrder.itemProductColor!''}</td>
-                                            <td>${((claimOrder.frPrice/100*-1)?string("0.##"))!''}</td>
+                                            <td>${((claimOrder.frPrice/100)?string("0.##"))!''}</td>
                                             <td class="itemNum">${claimOrder.itemNum!'0'}</td>
                                             <td style="width: 70px;"><input type="text" style="text-align: center;" class="input-text input-number decimal_input itemReturnNum" value="${claimOrder.claimOrderNum}"    onkeyup="keyFun($(this),${claimOrder.itemNum!'999'},0)" onpaste="keyFun($(this),${claimOrder.itemNum!'999'},0)" ></td>
                                             <td>${(claimOrder.salesPayTime?string("yyyy-MM-dd"))!''}</td>
@@ -233,13 +233,13 @@
                 </div>
             </div>
 
-            <div class="row cl">
+          <#--  <div class="row cl">
                 <label class="form-label col-3">
                     <div class="tit-2">退货邮费</div>
                 </label>
                 <div class="formControls col-9">
                 </div>
-            </div>
+            </div>-->
             <#if (admin.adminDept == 2 || admin.adminDept == 1)>
                 <div class="row cl" id="" style="">
                     <div class="formControls col-5 col-sm-5" style="padding-top: 3px;">
@@ -269,8 +269,8 @@
                                     <tr class="text-c order_item itemNum_post_${claimOrder_index}" orderitem="3">
                                         <input type="hidden" class="itemId" value="${claimOrder.itemId}">
                                         <input type="hidden" class="postageAmount" value="${((claimOrder.frPrice/100)?string("0.##"))!''}">
-                                        <td class="itemTotal">${((claimOrder.frPrice/100)?string("0.##"))!''}</td>
-                                        <td>${((claimOrder.frPrice/100*-1)?string("0.##"))!''}</td>
+                                        <td class="itemTotal">${((claimOrder.frPrice/100*-1)?string("0.##"))!''}</td>
+                                        <td>${((claimOrder.frPrice/100)?string("0.##"))!''}</td>
                                         <td>${claimOrder.postageAlipayName!''}</td>
                                         <td>${claimOrder.postageAlipay!''}</td>
                                         <td>
@@ -443,7 +443,7 @@
                                 html = '<tr class="text-c order_item itemNum_'+ itemNum +'"  orderItem="2">' +
                                         '<input type="hidden" class="itemId" value="'+  salesOrderItem.itemId +'">' +
                                         '<input type="hidden" class="itemProductDiscount" value="'+dis +'">' +
-                                        ' <td class="itemTotal">'+ accMul(dis,salesOrderItem.itemReturnNum) +'</td>' +
+                                        ' <td class="itemTotal">'+ -accMul(dis,salesOrderItem.itemReturnNum) +'</td>' +
                                         ' <td>'+ salesOrder.salesDealCode +'</td>' +
                                         ' <td>'+ salesOrder.storeName +'</td>' +
                                         ' <td>'+ salesOrderItem.itemProductName +'</td>' +
@@ -598,20 +598,22 @@
                 var claimOrderAyyar = new Array();
                 $(".order_item").each(function () {
                     var claimOrder = new Object();
+                    var  frPrice =  $(this).find(".itemTotal").text();
                     claimOrder.itemId = $(this).find(".itemId").val();
                     if($(this).attr("orderItem") == 1){
                         claimOrder.claimOrderType = 1;
                         claimOrder.claimOrderNum = $(this).find(".itemNum").text();
+                        claimOrder.frPrice =  accMul(frPrice,100);
                     }else  if($(this).attr("orderItem") == 2){
                         claimOrder.claimOrderType = 2;
                         claimOrder.claimOrderNum = $(this).find(".itemReturnNum").val();
+                        claimOrder.frPrice =  accMul(frPrice,-100);
                     }else  if($(this).attr("orderItem") == 3){
                         claimOrder.claimOrderType = 3;
                         claimOrder.claimOrderNum = 1;
+                        claimOrder.frPrice =  accMul(frPrice,-100);
                     }
 
-                    var  frPrice =  $(this).find(".itemTotal").text();
-                    claimOrder.frPrice =  accMul(frPrice,100);
                     if(claimOrder.claimOrderNum > 0){
                         claimOrderAyyar.push(claimOrder);
                     }

+ 2 - 14
watero-rst-web/src/main/webapp/WEB-INF/views/order/salesOrder/sales_order_list.ftl

@@ -16,20 +16,8 @@
         .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
         .table-bg thead th{background-color: #e2f6ff;}
         .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
-        .my-order{border: 1px solid #50a2ea;
-            padding: 1px 25px;
-            height: 36px;
-            background-color: #fff;
-            color: #50a2ea;}
-        .my-select {
-            border: 1px solid rgba(0,0,0,.1);
-            padding: 6px 50px 6px 15px;
-            height: 34px;
-            -webkit-appearance: none;
-            appearance: none;
-            background: url(/common/images/pts/select-11.png) right center no-repeat;
-            background-size: auto 100%;
-        }
+        .my-order{border: 1px solid #50a2ea; padding: 1px 25px;height: 36px;background-color: #fff;color: #50a2ea;}
+        .my-select {border: 1px solid rgba(0,0,0,.1); padding: 6px 50px 6px 15px;height: 34px;-webkit-appearance: none;appearance: none;  background: url(/common/images/pts/select-11.png) right center no-repeat;  background-size: auto 100%; }
         .label-default{background-color: #e6e6e6; color: #50a2ea;}
         .radio-box input[type=radio]{position: relative;-webkit-appearance: none;appearance: none;cursor: pointer;width: 17px;height: 17px;border: 1px solid #333;border-radius: 50%;}
         .radio-box input[type=radio]:focus {outline: none;}