瀏覽代碼

销售报表接口,增加计算字段处理

guq 7 年之前
父節點
當前提交
a1add396ff

+ 50 - 1
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/dto/ListReqDTO.java

@@ -18,6 +18,55 @@ public class ListReqDTO implements Serializable {
      */
     private String mode;
 
+    private String calculateFields;
+
+    //将列拼成查询语句,直接查询出数据的格式为json
+    public String getCalculateFieldsSql() {
+        try {
+            JSONArray jsonArray = JSONArray.parseArray(this.calculateFields);
+            if (null != jsonArray && jsonArray.size() > 0) {
+                StringBuilder fieldsSql = new StringBuilder();
+                StringBuilder fieldSql = null;
+                Object field = null;
+                Object operation = null;
+                String sql = null;
+                for (int i = 0; i < jsonArray.size(); i++) {
+                    JSONObject obj = (JSONObject) jsonArray.get(i);
+                    field = obj.get("field");
+                    operation = obj.get("operation");
+                    if (null != field && null != operation && !"".equals(field) && !"".equals(operation)) {
+                        fieldSql = new StringBuilder("'{");
+                        fieldSql.append("\"" + field + "\":'");
+                        fieldSql.append(",");
+                        fieldSql.append(operation + "(" + field + ")");
+                        fieldSql.append(",");
+                        fieldSql.append("',\"operation\":\"" + operation + "\"");
+                        fieldSql.append("}'");
+                    }
+                    if (null != fieldSql) {
+                        fieldsSql.append(fieldSql + ",\",\",");
+                    }
+                }
+                if (fieldsSql.length() > 0) {
+                    sql = "concat('['," + fieldsSql.substring(0, fieldsSql.length() - 5) + ",']')";
+                }
+                return sql;
+            }
+            return null;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public String getCalculateFields() {
+        return calculateFields;
+    }
+
+    public void setCalculateFields(String calculateFields) {
+        this.calculateFields = calculateFields;
+    }
+
     public String getCondition() {
         return condition;
     }
@@ -87,7 +136,7 @@ public class ListReqDTO implements Serializable {
         }catch (Exception e){
             return null;
         }
-
     }
+
 }
 

+ 10 - 2
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/controller/SaleReportController.java

@@ -10,6 +10,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 /**
  * @author: guq
  * @create: 2018-11-09 11:23
@@ -23,13 +25,19 @@ public class SaleReportController {
 
     @GetMapping("/saleProfit")
     public Result SaleProfit(PageRequest page, ListReqDTO req) {
-        PageInfo listData = saleReportService.getSaleProfitData(page, req);
+        Map<String, Object> listData = saleReportService.getSaleProfitData(page, req);
         return Result.success(listData);
     }
 
     @GetMapping("/saleRec")
     public Result SaleRec(PageRequest page, ListReqDTO req) {
-        PageInfo listData = saleReportService.getSaleRecData(page, req);
+        Map<String, Object> listData = saleReportService.getSaleRecData(page, req);
+        return Result.success(listData);
+    }
+
+    @GetMapping("/saleDetail")
+    public Result saleDetail(PageRequest page, ListReqDTO req) {
+        Map<String, Object> listData = saleReportService.getSaleDetail(page, req);
         return Result.success(listData);
     }
 

+ 2 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/mapper/SaleListMapper.java

@@ -12,4 +12,6 @@ public interface SaleListMapper {
 
     List<SaleList> selectSaleByCondition(@Param("con") String con, @Param("companyId") Long companyId);
 
+    String selectCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
+
 }

+ 2 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/mapper/SaleProfitViewMapper.java

@@ -8,4 +8,6 @@ import java.util.List;
 public interface SaleProfitViewMapper {
 
     List<SaleProfitView> selectByCondition(@Param("con") String con, @Param("companyId") Long companyId);
+
+    String selectCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 }

+ 2 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/mapper/SalerecViewMapper.java

@@ -8,4 +8,6 @@ import java.util.List;
 public interface SalerecViewMapper {
 
     List<SalerecView> selectByCondition(@Param("con") String con, @Param("companyId") Long companyId);
+
+    String selectCalculateFields(@Param("fields") String fields, @Param("con") String con, @Param("companyId") Long companyId);
 }

+ 6 - 4
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/SaleReportService.java

@@ -1,12 +1,14 @@
 package com.usoftchina.saas.sale.service;
 
-import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.page.PageRequest;
-import com.usoftchina.saas.sale.po.report.SalerecView;
+
+import java.util.Map;
 
 public interface SaleReportService {
-    PageInfo getSaleProfitData(PageRequest page, ListReqDTO req);
+    Map<String, Object> getSaleProfitData(PageRequest page, ListReqDTO req);
+
+    Map<String, Object> getSaleRecData(PageRequest page, ListReqDTO req);
 
-    PageInfo getSaleRecData(PageRequest page, ListReqDTO req);
+    Map<String, Object> getSaleDetail(PageRequest page, ListReqDTO req);
 }

+ 74 - 17
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleReportServiceImpl.java

@@ -1,18 +1,23 @@
 package com.usoftchina.saas.sale.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.sale.mapper.SaleListMapper;
 import com.usoftchina.saas.sale.mapper.SaleProfitViewMapper;
 import com.usoftchina.saas.sale.mapper.SalerecViewMapper;
 import com.usoftchina.saas.sale.service.SaleReportService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author: guq
@@ -25,38 +30,90 @@ public class SaleReportServiceImpl implements SaleReportService{
     private SaleProfitViewMapper saleProfitViewMapper;
     @Autowired
     private SalerecViewMapper salerecViewMapper;
+    @Autowired
+    private SaleListMapper saleListMapper;
 
     @Override
-    public PageInfo getSaleProfitData(PageRequest page, ListReqDTO req) {
-        return getListDATA(page, req, "SaleProfit");
+    public Map<String, Object> getSaleProfitData(@PageDefault(size = 10) PageRequest page, ListReqDTO req) {
+        PageHelper.startPage(page.getNumber(), page.getSize());
+        Map<String, Object> map = new HashMap<String, Object>();
+        List list = null;
+        Long companyId = BaseContextHolder.getCompanyId();
+        String con = req.getFinalCondition();
+        String calculateFieldsSql = req.getCalculateFieldsSql();
+        JSONArray arr = null;
+        if (null == con) {
+            con = "1=1";
+        }
+        list = saleProfitViewMapper.selectByCondition(con, companyId);
+        //取分页信息
+        PageInfo pageInfo = new PageInfo(list);
+        //取对应计算数据
+        if (!StringUtils.isEmpty(calculateFieldsSql)) {
+            String res = saleProfitViewMapper.selectCalculateFields(calculateFieldsSql, con, companyId);
+            try {
+                arr = JSONArray.parseArray(res);
+            } catch (Exception e) {
+            }
+        }
+        map.put("list", pageInfo);
+        map.put("calculate", arr);
+        return map;
     }
 
     @Override
-    public PageInfo getSaleRecData(PageRequest page, ListReqDTO req) {
-        return getListDATA(page, req, "SaleRec");
-    }
-
-    private PageInfo getListDATA(@PageDefault(size = 10) PageRequest page, ListReqDTO req, String type) {
+    public Map<String, Object> getSaleRecData(@PageDefault(size = 10) PageRequest page, ListReqDTO req) {
         PageHelper.startPage(page.getNumber(), page.getSize());
-        //查询数据
-        List lists = getListByType(req, type);
+        Map<String, Object> map = new HashMap<String, Object>();
+        List list = null;
+        Long companyId = BaseContextHolder.getCompanyId();
+        String con = req.getFinalCondition();
+        String calculateFieldsSql = req.getCalculateFieldsSql();
+        JSONArray arr = null;
+        if (null == con) {
+            con = "1=1";
+        }
+        list = salerecViewMapper.selectByCondition(con, companyId);
         //取分页信息
-        PageInfo pageInfo = new PageInfo(lists);
-        return pageInfo;
+        PageInfo pageInfo = new PageInfo(list);
+        //取对应计算数据
+        if (!StringUtils.isEmpty(calculateFieldsSql)) {
+            String res = salerecViewMapper.selectCalculateFields(calculateFieldsSql, con, companyId);
+            try {
+                arr = JSONArray.parseArray(res);
+            } catch (Exception e) {
+            }
+        }
+        map.put("list", pageInfo);
+        map.put("calculate", arr);
+        return map;
     }
 
-    private List getListByType(ListReqDTO req, String type) {
+    @Override
+    public Map<String, Object> getSaleDetail(@PageDefault(size = 10) PageRequest page, ListReqDTO req) {
+        PageHelper.startPage(page.getNumber(), page.getSize());
+        Map<String, Object> map = new HashMap<String, Object>();
         List list = null;
         Long companyId = BaseContextHolder.getCompanyId();
         String con = req.getFinalCondition();
+        String calculateFieldsSql = req.getCalculateFieldsSql();
+        JSONArray arr = null;
         if (null == con) {
             con = "1=1";
         }
-        if ("SaleProfit".equals(type)) {
-            list = saleProfitViewMapper.selectByCondition(con, companyId);
-        } else if ("SaleRec".equals(type)){
-            list = salerecViewMapper.selectByCondition(con, companyId);
+        list = saleListMapper.selectSaleListByCondition(con, companyId);
+        //取分页信息
+        PageInfo pageInfo = new PageInfo(list);
+        //取对应计算数据
+        if (!StringUtils.isEmpty(calculateFieldsSql)) {
+            String res = saleListMapper.selectCalculateFields(calculateFieldsSql, con, companyId);
+            try {
+                arr = JSONArray.parseArray(res);
+            } catch (Exception e) {
+            }
         }
-        return list;
+        map.put("list", pageInfo);
+        map.put("calculate", arr);
+        return map;
     }
 }

+ 12 - 0
applications/sale/sale-server/src/main/resources/mapper/SaleListMapper.xml

@@ -108,4 +108,16 @@
         order by sa_id desc
     </select>
 
+    <select id="selectCalculateFields" resultType="string">
+        select  ${fields}  from sale left join saledetail on sa_id=sd_said left join product
+        on sd_prodid = pr_id and sale.companyId = product.companyid
+        <where>
+            <if test="con != null">
+                ${con}
+            </if>
+            <if test="companyId != null">
+                and   sale.companyId = #{companyId}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 12 - 0
applications/sale/sale-server/src/main/resources/mapper/SaleProfitViewMapper.xml

@@ -39,4 +39,16 @@
     </where>
     order by sa_date desc
   </select>
+
+  <select id="selectCalculateFields" resultType="string">
+    select   ${fields}  from Sale_Profit_View
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and  companyId = #{companyId}
+      </if>
+    </where>
+  </select>
  </mapper>

+ 12 - 0
applications/sale/sale-server/src/main/resources/mapper/SalerecViewMapper.xml

@@ -29,4 +29,16 @@
     </where>
     order by rb_date desc
   </select>
+
+  <select id="selectCalculateFields" resultType="string">
+    select   ${fields}  from Salerec_View
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and  companyId = #{companyId}
+      </if>
+    </where>
+  </select>
 </mapper>