lbq
12 小时以前 41cf0200e1b45c24fb521815465b83a5898dd501
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
package com.vincent.rsf.server.api.controller.mes;
 
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.common.annotation.OperationLog;
import com.vincent.rsf.server.manager.entity.Loc;
import com.vincent.rsf.server.manager.entity.LocItem;
import com.vincent.rsf.server.manager.service.LocItemService;
import com.vincent.rsf.server.manager.service.LocService;
import com.vincent.rsf.server.manager.service.AsnOrderService;
import com.vincent.rsf.server.manager.entity.WkOrder;
import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
import com.vincent.rsf.server.manager.enums.OrderType;
import com.vincent.rsf.server.manager.enums.OrderWorkType;
import com.vincent.rsf.server.system.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Date;
import org.springframework.web.bind.annotation.RequestBody;
 
@RestController
@RequestMapping("/mes")
@Api(tags = "MES")
public class MesController extends BaseController {
 
    @Resource
    private LocService locService;
    @Resource
    private LocItemService locItemService;
    @Resource
    private AsnOrderService asnOrderService;
 
 
    /**
     * @author Ryan
     * @date 2025/8/19
     * @description: 物料分类列表查询
     * @version 1.0
     */
    @ApiOperation(value = "模拟备料")
    @OperationLog("模拟备料")
    @PostMapping("/callMaterial")
    public R callMaterial(@RequestBody JSONObject params) {
        try {
            WkOrder order = new WkOrder();
            String orderNo = params.getString("orderNo");
            order.setCode(orderNo).setPoCode(orderNo).setType(OrderType.ORDER_OUT.type)
//                    .setWkType(OrderWorkType.ORDER_WORK_TYPE_MATERIAL_PREPARATION.type)
                    .setCreateBy(getLoginUserId())
                    .setUpdateBy(getLoginUserId());
            if (params.getInteger("prepareType") == 1) {
                order.setWkType(OrderWorkType.ORDER_WORK_TYPE_NORMAL_MATERIAL_PREPARATION.type);
            } else {
                order.setWkType(OrderWorkType.ORDER_WORK_TYPE_FEED_IN_MATERIAL_PREPARATION.type);
            }
 
            JSONArray jsonArray = params.getJSONArray("orderItems");
            List<Map<String, Object>> items = new java.util.ArrayList<>();
            for (int i = 0; i < jsonArray.size(); i++) {
                JSONObject item = jsonArray.getJSONObject(i);
                Map<String, Object> map = new java.util.HashMap<>();
                String matnrCode = item.getString("matNr");
                if (matnrCode == null) {
                    matnrCode = item.getString("matNr");
                }
                map.put("matnrCode", matnrCode);
                Double qty = item.getDouble("anfme");
                if (qty == null) {
                    qty = item.getDouble("anfme");
                }
                map.put("anfme", qty);
//                map.put("unit", item.getString("unit"));
//                map.put("splrCode", item.getString("splrCode"));
//                map.put("splrName", item.getString("splrName"));
//                map.put("splrBatch", item.getString("splrBatch"));
//                map.put("platItemId", item.getString("platItemId"));
                items.add(map);
            }
 
            AsnOrderAndItemsParams dto = new AsnOrderAndItemsParams();
            dto.setOrders(order);
            dto.setItems(items);
            R result = asnOrderService.saveOrderAndItems(dto, getLoginUserId());
            if (!result.get("code").equals(200)) {
                return result;
            }
 
            Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, "O").eq(Loc::getAreaId, 22).last("limit 1"));
            if (loc == null) {
                return R.error("没有可用库位");
            }
            String palletId = "AA" + String.format("%06d", (int) (Math.random() * 1000000));
 
            for (int i = 0; i < jsonArray.size(); i++) {
                JSONObject item = jsonArray.getJSONObject(i);
                loc.setBarcode(palletId);
                loc.setUseStatus("F");
                locService.updateById(loc);
 
                LocItem locItem = new LocItem();
                String matnrCode = item.getString("matNr");
                if (matnrCode == null) {
                    matnrCode = item.getString("matNr");
                }
                Double qty = item.getDouble("anfme");
                if (qty == null) {
                    qty = item.getDouble("anfme");
                }
                locItem.setLocId(loc.getId())
                        .setLocCode(loc.getCode())
                        .setOrderId(order.getId())
                        .setType(OrderType.ORDER_OUT.type)
//                        .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_MATERIAL_PREPARATION.type))
//                        .setMatnrId(item.getLong("matnrId"))
                        .setMatnrCode(matnrCode)
//                        .setMaktx(item.getString("maktx"))
                        .setQty(qty)
                        .setAnfme(qty)
//                        .setUnit(item.getString("unit"))
                        .setBarcode(palletId)
                        .setStatus(1)
                        .setDeleted(0)
                        .setCreateTime(new Date());
                if (params.getInteger("prepareType") == 1) {
                    locItem.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_NORMAL_MATERIAL_PREPARATION.type));
                } else {
                    locItem.setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_FEED_IN_MATERIAL_PREPARATION.type));
                }
                locItemService.save(locItem);
            }
 
            return R.ok().add(order.getId());
        } catch (Exception e) {
            return R.error("备料处理异常: " + e.getMessage());
        }
    }
 
}