Blame view

src/main/java/com/huaheng/pc/config/warehouse/service/WarehouseU8ServiceImpl.java 8.81 KB
易文鹏 authored
1
2
3
4
package com.huaheng.pc.config.warehouse.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
tongzhonghao authored
5
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
6
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
易文鹏 authored
7
8
import com.huaheng.common.redis.service.IRedisService;
import com.huaheng.common.utils.StringUtils;
易文鹏 authored
9
import com.huaheng.common.utils.Wrappers;
易文鹏 authored
10
11
12
13
14
import com.huaheng.common.utils.http.HttpUtils;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.address.domain.Address;
import com.huaheng.pc.config.address.service.AddressService;
15
import com.huaheng.pc.config.warehouse.domain.WarehouseU8;
易文鹏 authored
16
17
import com.huaheng.pc.config.warehouse.domain.WorkOrderComponent;
import com.huaheng.pc.config.warehouse.domain.WorkOrderList;
18
import com.huaheng.pc.config.warehouse.mapper.WarehouseU8Mapper;
易文鹏 authored
19
20
21
22
23
24
25
26
import com.huaheng.pc.config.warehouse.mapper.WorkOrderListMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
易文鹏 authored
27
import java.util.Map;
28
import java.util.stream.Collectors;
易文鹏 authored
29
30

@Service("warehouseWu")
31
public class WarehouseU8ServiceImpl extends ServiceImpl<WarehouseU8Mapper, WarehouseU8> implements WarehouseU8Service {
易文鹏 authored
32
33
34
35
36
37
38
    @Resource
    private AddressService addressService;
    @Resource
    private IRedisService iRedisService;
    @Resource
    private WorkOrderListMapper workOrderListMapper;
周鸿 authored
39
易文鹏 authored
40
41
42
43
44
45
46
47
48
49
50


    @Override
    public AjaxResult GetCurrentStock(WorkOrderComponent data, String type) throws Exception {
        Address address = getU8Address();
        if (address == null){
            throw new Exception("未配置U8 API地址");
        }
        String url = address.getUrl() + "GetMoallocateMes";
        StringBuilder param = new StringBuilder();
        param.append("cCompanyCode=").append(data.getCCompanyCode())
51
//        param.append("cCompanyCode=").append("UFDATA_807_2018")
易文鹏 authored
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
                .append("&Mocode=").append(data.getMocode())
                .append("&Moseq=").append(data.getMoseq())
                .append("&CInvcode=").append(data.getCInvcode())
                .append("&MaterialCode=").append(data.getMaterialCode());
        String result = HttpUtils.sendPost(url, param.toString());
        if (StringUtils.isEmpty(result)){
            throw new Exception("未查询到工单子件数据!");
        }
        JSONObject json = JSONObject.parseObject(result);
        JSONArray array = json.getJSONArray("data");
        if (array == null || array.size() == 0){
            throw new Exception(json.getString("msg"));
        }
        List<WorkOrderList> list = this.dataFiltering(array, type);
        final int i = (int) (Math.random()* 10);
        if(type.equals("1")&&i==7){
            WorkOrderList w=new WorkOrderList();
            w.setWorkOrderNumber(list.get(0).getWorkOrderNumber());
            List<WorkOrderList> workOrderLists = workOrderListMapper.selectByOption(w);
            if(workOrderLists!=null&&workOrderLists.size()>0){
                workOrderListMapper.deleteList(workOrderLists.get(0).getWorkOrderNumber());
            }
            for(WorkOrderList  workOrderList:list){
                workOrderListMapper.insert(workOrderList);
            }
        }
        List<WorkOrderList> workOrderLists = this.optionData(list, data.getOption());
        if (list.size() == 0){
            throw new Exception("未查询到工单子件数据!");
        }
        AjaxResult ajax = AjaxResult.success();
        ajax.setData(workOrderLists);
        iRedisService.put("CS_work_order_list", list, -1);
        return ajax;
    }

    @Override
    public Address  getU8Address() {
tongzhonghao authored
90
91
92
        Address address = addressService.getOne(new LambdaQueryWrapper<Address>()
                .eq(Address::getParam, "QITAO")
                .eq(Address::getWarehouseCode, "KS0001"));
易文鹏 authored
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
153
154
155
156
157
158
        return address;
    }

    @Override
    public List dataFiltering(JSONArray array, String type) {
        List<WorkOrderList> list = new ArrayList<>();
        for (int i = 0; i< array.size(); i++){
            BigDecimal needQuantity = null;
            if (array.getJSONObject(i).containsKey("应领数量")){
                needQuantity = array.getJSONObject(i).getBigDecimal("应领数量");
            }
            BigDecimal workOrderQuantity = null;
            if (array.getJSONObject(i).containsKey("工单数量")){
                workOrderQuantity = array.getJSONObject(i).getBigDecimal("工单数量");
            }
            BigDecimal receiveQuantity = null;
            if (array.getJSONObject(i).containsKey("已领数量")){
                receiveQuantity = array.getJSONObject(i).getBigDecimal("已领数量");
            }
            if ("0".equals(type) && needQuantity !=null && receiveQuantity != null && needQuantity.compareTo(receiveQuantity) == 0){
                continue;
            }
            String materialCode = array.getJSONObject(i).getString("材料编码");
            if (StringUtils.isEmpty(materialCode)){
                continue;
            }
            WorkOrderList workOrderList = new WorkOrderList();
            workOrderList.setMaterialName(array.getJSONObject(i).getString("材料名称"));
            workOrderList.setOrderDate(array.getJSONObject(i).getString("订单日期"));
            workOrderList.setOrderBomCode(array.getJSONObject(i).getString("订单物料编码"));
            workOrderList.setNeedQuantity(needQuantity);
            workOrderList.setMaterialCode(materialCode);
            workOrderList.setSpecification1(array.getJSONObject(i).getString("规格1"));
            workOrderList.setName(array.getJSONObject(i).getString("名称"));
            workOrderList.setSpecification(array.getJSONObject(i).getString("规格"));
            workOrderList.setLineNumber(array.getJSONObject(i).getString("行号"));
            workOrderList.setWorkOrderQuantity(workOrderQuantity);
            workOrderList.setWorkOrderNumber(array.getJSONObject(i).getString("工单号"));
            workOrderList.setWorkOrderId(array.getJSONObject(i).getInteger("工单ID"));
            workOrderList.setWorkOrderSonId(array.getJSONObject(i).getInteger("工单子件行ID"));
            workOrderList.setReceiveQuantity(receiveQuantity);
            list.add(workOrderList);
        }
        return list;
    }

    private List<WorkOrderList> optionData(List<WorkOrderList> list,String option){
        Iterator<WorkOrderList> iterator = list.iterator();
        if(iterator.hasNext()){
            WorkOrderList next = iterator.next();
            WorkOrderList workOrderList1=new WorkOrderList();
            workOrderList1.setWorkOrderNumber(next.getWorkOrderNumber());
            workOrderList1.setMaterialCode(next.getMaterialCode());
            workOrderList1.setUserDef1(option);
            List<WorkOrderList> workOrderLists = workOrderListMapper.selectByOption(workOrderList1);
            if(workOrderLists!=null&& workOrderLists.size()>1){
                for(WorkOrderList workOrderList:workOrderLists){
                    final String materialCode = workOrderList.getMaterialCode();
                    if(materialCode.equals(next.getMaterialCode())){
                       iterator.remove();
                    }
                }
            }
        }
        return list;
    }
易文鹏 authored
159
160
161
162
163
164
165
    @Override
    public List<Map<String, Object>> getName() {
        LambdaQueryWrapper<WarehouseU8> lambda = Wrappers.lambdaQuery();
        lambda.select(WarehouseU8::getUWarehouseCode, WarehouseU8::getId, WarehouseU8::getUWarehouseName)
                .eq(WarehouseU8::getWarehouseCode, ShiroUtils.getWarehouseCode());
        return this.listMaps(lambda);
    }
易文鹏 authored
166
易文鹏 authored
167
168
169
170
    @Override
    public List<WarehouseU8> selectList() {
        return this.list(new LambdaQueryWrapper<WarehouseU8>().eq(WarehouseU8::getWarehouseCode,ShiroUtils.getWarehouseCode()));
    }
周鸿 authored
171
172
173
174

    @Override
    public List<WarehouseU8> getByDomain(WarehouseU8 warehouseU8) {
        LambdaQueryWrapper<WarehouseU8> lambda = Wrappers.lambdaQuery();
175
        lambda.eq(StringUtils.isNotEmpty(warehouseU8.getWarehouseCode()),WarehouseU8::getWarehouseCode, warehouseU8.getWarehouseCode());
周鸿 authored
176
177
178
179
        lambda.eq(StringUtils.isNotEmpty(warehouseU8.getUCompanyCode()),WarehouseU8::getUCompanyCode, warehouseU8.getUCompanyCode());
        lambda.eq(StringUtils.isNotEmpty(warehouseU8.getUWarehouseCode()),WarehouseU8::getUWarehouseCode, warehouseU8.getUWarehouseCode());
        return this.list(lambda);
    }
180
    @Override
181
    public Map<String, List<WarehouseU8>> getAllWarehouseWu(){
182
        LambdaQueryWrapper<WarehouseU8> lambda = Wrappers.lambdaQuery();
183
184
185
186
        List<WarehouseU8> list = list(lambda);
        Map<String, List<WarehouseU8>> map = list.stream().collect(Collectors.groupingBy(WarehouseU8::getUCompanyCode));

        return map;
187
    }
易文鹏 authored
188
}