张晓波
2023-09-19 164694c47c35d6654df69b533e8dbf8b5423efc5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package com.thhy.materials.modules.biz.materialsplan.controller;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.api.utils.StringUtils;
import com.github.pagehelper.PageInfo;
import com.thhy.general.common.BasicResult;
import com.thhy.general.common.BasicStatus;
import com.thhy.general.config.GlobalConfig;
import com.thhy.general.exception.BasicException;
import com.thhy.general.utils.ExcelUtils;
import com.thhy.general.utils.PagingUtils;
import com.thhy.general.utils.TitleField;
import com.thhy.materials.modules.biz.materialsplan.entity.*;
import com.thhy.materials.modules.biz.materialsplan.service.RsbMaterialPlanService;
import org.redisson.api.RBucket;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * @author zhang_xiao_bo
 * @since 2023-04-18 10:26:11
 */
@RestController
@RequestMapping("rsbMaterialPlan")
public class RsbMaterialPlanController {
 
 
    @Autowired
    private RsbMaterialPlanService rsbMaterialPlanService;
 
    @Autowired
    private RedissonClient redissonClient;
 
    @Autowired
    private GlobalConfig globalConfig;
 
 
    @RequestMapping("findList")
    public BasicResult findList(@RequestBody(required = false) RsbMaterialPlan rsbMaterialPlan,HttpServletRequest req){
        List<HashMap<String,Object>> headers = rsbMaterialPlanService.TableHeader();
        for(int i=0;i<headers.size();i++){
            HashMap<String,Object> map = headers.get(i);
            map.put("fieldName","field"+i);
        }
        PagingUtils.setPageParam(req);
        List<HashMap<String,Object>> rsbMaterialPlanList = rsbMaterialPlanService.findList(rsbMaterialPlan);
        PageInfo<HashMap<String,Object>> pageInfo = new PageInfo<>(rsbMaterialPlanList);
        for(HashMap<String,Object> map : rsbMaterialPlanList){
            String materialValue = rsbMaterialPlanService.queryGroup(map.get("id").toString());
            String[] valueArray = materialValue.split(",");
            for(int i=0;i<headers.size();i++){
                map.put("field"+i,new BigDecimal(valueArray[i]).setScale(4, RoundingMode.HALF_UP));
            }
        }
        Map<String,Object> map = new HashMap<>();
        map.put("tableHeader",headers);
        map.put("pageInfo",pageInfo);
        return BasicResult.success(map);
    }
 
    @RequestMapping("export")
    public void export(String authcode, HttpServletResponse resp){
        List<TitleField> list = new ArrayList<>();
        list.add(new TitleField("序号","seq"));
        list.add(new TitleField("项目名称","proName"));
        list.add(new TitleField("尺寸","sizeName"));
        list.add(new TitleField("配筋","reinforcementName"));
        list.add(new TitleField("块号","blockNumName"));
        List<HashMap<String,Object>> headers = rsbMaterialPlanService.TableHeader();
        for(int i=0;i<headers.size();i++){
            HashMap<String,Object> map = headers.get(i);
            map.put("fieldName","field"+i);
            list.add(new TitleField(map.get("headName").toString(),"field"+i));
        }
        list.add(new TitleField("创建时间","createTime"));
        list.add(new TitleField("创建人","createUserName"));
 
        RBucket<String> rBucket = redissonClient.getBucket(globalConfig.getFilePreKey()+":authcode:"+authcode);
        String param = rBucket.getAndDelete();
        if(StringUtils.isEmpty(param)){
            throw new BasicException(BasicStatus.TOKEN_IS_NULL);
        }
        JSONObject jsonObject = JSON.parseObject(param);
        RsbMaterialPlan rsbMaterialPlan = JSON.toJavaObject(jsonObject,RsbMaterialPlan.class);
 
        List<HashMap<String,Object>> rsbMaterialPlanList = rsbMaterialPlanService.findListForExport(rsbMaterialPlan,jsonObject.getString("token"));
        for(HashMap<String,Object> map : rsbMaterialPlanList){
            String materialValue = rsbMaterialPlanService.queryGroup(map.get("id").toString());
            String[] valueArray = materialValue.split(",");
            for(int i=0;i<headers.size();i++){
                map.put("field"+i,valueArray[i]);
            }
        }
        ExcelUtils.downExcel(rsbMaterialPlanList,list,resp,"钢筋原料理论放料列表");
    }
 
    @RequestMapping("addRsbMaterialPlan")
    public BasicResult addRsbMaterialPlan(@RequestBody RsbMaterialPlanDto rsbMaterialPlanDto){
        rsbMaterialPlanService.addRsbMaterialPlan(rsbMaterialPlanDto);
        return BasicResult.success();
    }
 
    @RequestMapping("info")
    public BasicResult info(@RequestBody RsbMaterialPlanDto rsbMaterialPlanDto){
        List<RsbMaterialDict> rsbMaterialPlanList = rsbMaterialPlanService.info(rsbMaterialPlanDto);
        return BasicResult.success(rsbMaterialPlanList);
    }
 
    /**
    @RequestMapping("update")
    public BasicResult update(@RequestBody RsbMaterialPlan rsbMaterialPlan){
        rsbMaterialPlanService.update(rsbMaterialPlan);
        return BasicResult.success();
    }**/
 
    @RequestMapping("delete")
    public BasicResult delete(@RequestBody RsbMaterialPlan rsbMaterialPlan){
        rsbMaterialPlanService.delete(rsbMaterialPlan.getId());
        return BasicResult.success();
    }
 
    @RequestMapping("RsbStat")
    public BasicResult RsbStat(@RequestBody RsbStatDto rsbStatDto){
        Map<String,Object> map = rsbMaterialPlanService.RsbStat(rsbStatDto);
        return BasicResult.success(map);
    }
 
    @RequestMapping("statExport")
    public void statExport(String authcode,HttpServletResponse response){
        RBucket<String> rBucket = redissonClient.getBucket(globalConfig.getFilePreKey()+":authcode:"+authcode);
        String param = rBucket.getAndDelete();
        if(StringUtils.isEmpty(param)){
            throw new BasicException(BasicStatus.TOKEN_IS_NULL);
        }
        JSONObject jsonObject = JSON.parseObject(param);
        RsbStatDto rsbStatDto = JSON.toJavaObject(jsonObject,RsbStatDto.class);
        rsbMaterialPlanService.statExport(rsbStatDto,jsonObject.getString("token"),response);
    }
}