自动化立体仓库 - WMS系统
pang.jiabao
2025-04-17 391dd89a6583e0f1eceaf1297fd852e3da32bf68
src/main/java/com/zy/system/controller/SaasLogController.java
@@ -1,18 +1,15 @@
package com.zy.system.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.system.entity.SaasLog;
import com.zy.system.service.SaasLogService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.core.common.*;
import com.zy.common.web.BaseController;
import com.zy.system.entity.SaasLog;
import com.zy.system.mapper.SaasLogMapper;
import com.zy.system.service.SaasLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -23,6 +20,9 @@
    @Autowired
    private SaasLogService saasLogService;
    @Autowired
    private SaasLogMapper saasLogMapper;
    @RequestMapping(value = "/saasLog/{id}/auth")
    @ManagerAuth
@@ -45,6 +45,132 @@
        return R.ok(saasLogService.selectPage(new Page<>(curr, limit), wrapper));
    }
    @RequestMapping(value = "/saasLogSummary/list/auth")
    @ManagerAuth
    public R saasLogSummarylist(@RequestParam Map<String, Object> param){
        String io_time = (String) param.get("io_time");
        Date sDate = null;
        Date eDate = null;
        if(!Cools.isEmpty(io_time) && io_time.contains(RANGE_TIME_LINK)) {
            String[] dates = io_time.split(RANGE_TIME_LINK);
            sDate = DateUtils.convert(dates[0]);
            eDate = DateUtils.convert(dates[1]);
        }
        String type = (String) param.get("type");
        String owner = (String) param.get("owner");
        ArrayList<SaasLog> list = saasLogMapper.selectListSummary(sDate,eDate,type,owner);
        double sum = list.stream().mapToDouble(SaasLog::getAnfme).sum();
        ListIterator<SaasLog> saasLogListIterator = list.listIterator();
        String a = null;
        while (saasLogListIterator.hasNext()){
            SaasLog next = saasLogListIterator.next();
            if (!next.getOwner().equals(a)){
                if (a != null) {
                    ArrayList<SaasLog> list1 = saasLogMapper.selectListSummaryBySubtotal(a,sDate,eDate,type);
                    for (SaasLog saasLog : list1) {
                        saasLogListIterator.previous();
                        saasLog.setMatnr("小计");
                        saasLogListIterator.add(saasLog);
                        saasLogListIterator.next();
                    }
                    saasLogListIterator.previous();
                    SaasLog saasLog1 = new SaasLog();
                    saasLog1.setOwner(a);
                    saasLog1.setMatnr("合计");
                    saasLog1.setAnfme(list1.stream().mapToDouble(SaasLog::getAnfme).sum());
                    saasLogListIterator.add(saasLog1);
                    saasLogListIterator.next();
                }
                a = next.getOwner();
            }
        }
        ArrayList<SaasLog> list1 = saasLogMapper.selectListSummaryBySubtotal(a,sDate,eDate,type);
        for (SaasLog saasLog : list1) {
            saasLog.setMatnr("小计");
            saasLogListIterator.add(saasLog);
        }
        SaasLog saasLog1 = new SaasLog();
        saasLog1.setOwner(a);
        saasLog1.setMatnr("合计");
        saasLog1.setAnfme(list1.stream().mapToDouble(SaasLog::getAnfme).sum());
        saasLogListIterator.add(saasLog1);
        SaasLog saasLog = new SaasLog();
        saasLog.setOwner("总计");
        saasLog.setAnfme(sum);
        list.add(saasLog);
        return R.ok(list);
    }
    @RequestMapping(value = "/saasLogSummary/export/auth")
    @ManagerAuth
    public R summaryExport(@RequestBody JSONObject param){
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("saasLog"));
        String io_time = (String) map.get("io_time");
        Date sDate = null;
        Date eDate = null;
        if(!Cools.isEmpty(io_time) && io_time.contains(RANGE_TIME_LINK)) {
            String[] dates = io_time.split(RANGE_TIME_LINK);
            sDate = DateUtils.convert(dates[0]);
            eDate = DateUtils.convert(dates[1]);
        }
        String type = (String) map.get("type");
        String owner = (String) map.get("owner");
        ArrayList<SaasLog> list = saasLogMapper.selectListSummary(sDate,eDate,type,owner);
        double sum = list.stream().mapToDouble(SaasLog::getAnfme).sum();
        ListIterator<SaasLog> saasLogListIterator = list.listIterator();
        String a = null;
        while (saasLogListIterator.hasNext()){
            SaasLog next = saasLogListIterator.next();
            if (!next.getOwner().equals(a)){
                if (a != null) {
                    ArrayList<SaasLog> list1 = saasLogMapper.selectListSummaryBySubtotal(a,sDate,eDate,type);
                    for (SaasLog saasLog : list1) {
                        saasLogListIterator.previous();
                        saasLog.setMatnr("小计");
                        saasLogListIterator.add(saasLog);
                        saasLogListIterator.next();
                    }
                    saasLogListIterator.previous();
                    SaasLog saasLog1 = new SaasLog();
                    saasLog1.setOwner(a);
                    saasLog1.setMatnr("合计");
                    saasLog1.setAnfme(list1.stream().mapToDouble(SaasLog::getAnfme).sum());
                    saasLogListIterator.add(saasLog1);
                    saasLogListIterator.next();
                }
                a = next.getOwner();
            }
        }
        ArrayList<SaasLog> list1 = saasLogMapper.selectListSummaryBySubtotal(a,sDate,eDate,type);
        for (SaasLog saasLog : list1) {
            saasLog.setMatnr("小计");
            saasLogListIterator.add(saasLog);
        }
        SaasLog saasLog1 = new SaasLog();
        saasLog1.setOwner(a);
        saasLog1.setMatnr("合计");
        saasLog1.setAnfme(list1.stream().mapToDouble(SaasLog::getAnfme).sum());
        saasLogListIterator.add(saasLog1);
        SaasLog saasLog = new SaasLog();
        saasLog.setOwner("总计");
        saasLog.setAnfme(sum);
        list.add(saasLog);
        return R.ok(exportSupport(list, fields));
    }
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
        for (Map.Entry<String, Object> entry : map.entrySet()){
            String val = String.valueOf(entry.getValue());