自动化立体仓库 - WMS系统
1
zhang
12 小时以前 be5373a650a8a40e808ab1664e59c60807809a7c
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
package com.zy.asrs.task;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.param.GwmsGenerateInventoryDto;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.LocDetlService;
import com.zy.common.constant.MesConstant;
import com.zy.common.utils.HttpHandler;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 *
 */
@Component
@Slf4j
public class SyncLocDetlScheduler {
 
    @Autowired
    private LocDetlService locDetlService;
 
    @Autowired
    private ApiLogService apiLogService;
 
    @Autowired
    private ConfigService configService;
 
    @Scheduled(fixedRate = 3000)
    @Async("orderThreadPool")
    public void sync() {
        Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "sync"));
        if (config != null && config.getValue() != null && (config.getValue().equals("true") || config.getValue().equals("1"))) {
            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<>());
            GwmsGenerateInventoryDto gwmsGenerateInventoryDto = new GwmsGenerateInventoryDto();
            gwmsGenerateInventoryDto.setWarehouseType(4);
            List<GwmsGenerateInventoryDto.MatList> matLists = new ArrayList<>();
            for (LocDetl wrkDetl : locDetls) {
                gwmsGenerateInventoryDto.setBarcode(wrkDetl.getBarcode());
                //gwmsGenerateInventoryDto.setPalletizingNo(wrkMast.getStaNo());
 
                boolean flag = true;
                for (GwmsGenerateInventoryDto.MatList matList : matLists) {
                    if (matList.getPackageGroupNo().equals(wrkDetl.getBrand())) {
                        matList.getRolls().add(new GwmsGenerateInventoryDto.Rolls(wrkDetl.getModel(),
                                wrkDetl.getUnit(), wrkDetl.getMaktx(), wrkDetl.getLength(),
                                Integer.parseInt(wrkDetl.getSpecs()), wrkDetl.getWeight(), wrkDetl.getVolume(),
                                wrkDetl.getManuDate()));
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    GwmsGenerateInventoryDto.MatList matList = new GwmsGenerateInventoryDto.MatList();
                    matList.setBoxPos(wrkDetl.getOrigin());
                    matList.setPackageGroupNo(wrkDetl.getBrand());
                    matList.setOutOrIn("in");
                    matList.setStockType("成品入库");
                    matList.setBoxType(wrkDetl.getColor());
                    matList.setRollType(wrkDetl.getManu());
                    matList.setWideInWidth(wrkDetl.getItemNum());
                    matList.setThickness(wrkDetl.getSku());
                    List<GwmsGenerateInventoryDto.Rolls> rollsList = new ArrayList<>();
                    GwmsGenerateInventoryDto.Rolls roll = new GwmsGenerateInventoryDto.Rolls(wrkDetl.getModel(),
                            wrkDetl.getUnit(), wrkDetl.getMaktx(), wrkDetl.getLength(),
                            Integer.parseInt(wrkDetl.getSpecs()), wrkDetl.getWeight(), wrkDetl.getVolume(),
                            wrkDetl.getManuDate());
                    rollsList.add(roll);
                    matList.setRolls(rollsList);
                    matLists.add(matList);
                }
            }
            gwmsGenerateInventoryDto.setMatList(matLists);
            boolean success = false;
            // 获取请求头
            Map<String, Object> headers = new HashMap<>();
            headers.put("Content-Type", "application/json;charset=UTF-8");
 
            // 构造请求体
            String body = JSON.toJSONString(gwmsGenerateInventoryDto);
            String response = "";
            try {
                response = new HttpHandler.Builder()
                        .setUri(MesConstant.MES_CC_IP_PORT)
                        .setPath(MesConstant.MES_CC_KCTB_URL)
                        .setHeaders(headers)
                        .setJson(body)
                        .build()
                        .doGet();
                if (!Cools.isEmpty(response)) {
                    JSONObject jsonObject1 = JSONObject.parseObject(response);
                    int code = (int) jsonObject1.get("code");
                    boolean state = jsonObject1.getBoolean("state");
                    if (code == 200 && state) {
                        success = true;
                    }
                } else {
                    log.error("同步期初数据失败!!!url:{};request:{};response:{}", MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_KCTB_URL, body, response);
                }
            } catch (Exception e) {
                log.error("同步期初数据异常:{}", e.getMessage());
            } finally {
                config.setValue("0");
                configService.updateById(config);
                try {
                    // 保存接口日志
                    apiLogService.save(
                            "同步期初数据",
                            MesConstant.MES_CC_IP_PORT + MesConstant.MES_CC_KCTB_URL,
                            null,
                            "127.0.0.1",
                            null,
                            response,
                            success
                    );
                } catch (Exception e) {
                    log.error("", e);
                }
            }
        }
 
    }
 
}