Blame view

src/main/java/com/huaheng/pc/receipt/receiving/controller/ReceivingController.java 14.4 KB
1
2
package com.huaheng.pc.receipt.receiving.controller;
mahuandong authored
3
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
周鸿 authored
4
import com.huaheng.common.support.Convert;
周鸿 authored
5
import com.huaheng.common.utils.Wrappers;
游杰 authored
6
import com.huaheng.common.constant.QuantityConstant;
mahuandong authored
7
8
9
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.security.ShiroUtils;
10
11
12
13
import com.huaheng.framework.aspectj.lang.annotation.Log;
import com.huaheng.framework.aspectj.lang.constant.BusinessType;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
mahuandong authored
14
15
16
17
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
周鸿 authored
18
import com.huaheng.pc.monitor.job.task.RyTask;
19
import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
20
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
21
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerView;
22
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
mahuandong authored
23
24
25
26
import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
27
import com.huaheng.pc.receipt.receiving.domain.ReceivingDamain;
28
import com.huaheng.pc.receipt.receiving.service.ReceivingService;
29
30
31
import com.huaheng.pc.shipment.shipmentContainerHeader.domain.ShipmentContainerHeader;
import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainerHeaderService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
周鸿 authored
32
import com.huaheng.pc.task.taskHeader.service.ReceiptTaskService;
33
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
34
35
36
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.shiro.authz.annotation.RequiresPermissions;
周鸿 authored
37
38
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
39
import org.springframework.stereotype.Controller;
mahuandong authored
40
import org.springframework.ui.ModelMap;
41
42
43
44
45
46
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
47
import java.math.BigDecimal;
48
import java.util.ArrayList;
周鸿 authored
49
import java.util.Arrays;
mahuandong authored
50
51
import java.util.List;
import java.util.Map;
52
53
54
55
56
57
58
59
60
61
62
63

/**
 * @author mahua
 * @ClassName ReceivingController
 * @projectName huaheng
 * @description: 入库组盘
 * @date 2019/8/31 15:51
 */
@Controller
@RequestMapping("/receipt/receiving")
public class ReceivingController extends BaseController {
周鸿 authored
64
65
    private static final Logger logger = LoggerFactory.getLogger(ReceivingController.class);
66
67
68
69
70
71
72
73
    private String prefix = "receipt/receiving";

    @Resource
    private ReceivingService receivingService;
    @Resource
    private ReceiptContainerDetailService receiptContainerDetailService;
    @Resource
    private ReceiptContainerHeaderService receiptContainerHeaderService;
mahuandong authored
74
75
76
77
78
79
80
81
    @Resource
    private ReceiptDetailService receiptDetailService;
    @Resource
    private ReceiptHeaderService receiptHeaderService;
    @Resource
    private ContainerService containerService;
    @Resource
    private InventoryDetailService inventoryDetailService;
82
83
84
85
    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private ShipmentContainerHeaderService shipmentContainerHeaderService;
周鸿 authored
86
87
    @Resource
    private ReceiptTaskService receiptTaskService;
88
89
90
91

    @RequiresPermissions("receipt:receiving:view")
    @GetMapping()
    public String receiving() {
周鸿 authored
92
93
94
        if(ShiroUtils.getWarehouseCode().equals(QuantityConstant.WAREHOUSE_KS)){
            return prefix + "/receiving-new";
        }
95
96
97
98
99
100
101
102
103
        return prefix + "/receiving";
    }

    /**
     * 获取订单明细
     */
    @ResponseBody
    @PostMapping("/scanBill")
    @RequiresPermissions("receipt:receiving:receiving")
mahuandong authored
104
    @Log(title = "入库-获取订单明细", operating ="PC端扫描收货单号", action = BusinessType.OTHER)
105
106
107
108
109
110
    public AjaxResult scanBill(String code)  {
        AjaxResult result = receivingService.scanReceiptCode(code);
        return result;
    }

    /**
111
112
113
114
115
116
117
118
119
120
121
122
     * 获取订单明细
     */
    @ResponseBody
    @PostMapping("/scanReferCodeBill")
    @RequiresPermissions("receipt:receiving:add")
    @Log(title = "入库-入库单", operating ="PC端扫描收货单号", action = BusinessType.OTHER)
    public AjaxResult scanReferCodeBill(String code)  {
        AjaxResult result = receivingService.scanReferCodeBill(code);
        return result;
    }

    /**
123
124
125
126
127
     * 获取收货信息
     */
    @ResponseBody
    @PostMapping("/getReceiptInfoByBill")
    @RequiresPermissions("receipt:receiving:receiving")
mahuandong authored
128
    @Log(title = "入库-获取收货信息", operating ="获取收货信息", action = BusinessType.OTHER)
129
130
131
132
133
    public AjaxResult getReceiptInfoByBill(String code)  {
        AjaxResult result = receiptContainerDetailService.getReceiptInfoByBill(code);
        return result;
    }
xumiao authored
134
135
136
137
138
139
140
141
142
143
144
145
    /**
     * 获取收货信息
     */
    @ResponseBody
    @PostMapping("/getReceiptInfoByBillKS")
    @RequiresPermissions("receipt:receiving:receiving")
    @Log(title = "入库-获取收货信息", operating ="获取收货信息", action = BusinessType.OTHER)
    public AjaxResult getReceiptInfoByBillKS(String code,Integer id)  {
        AjaxResult result = receiptContainerDetailService.getReceiptInfoByBillKS(code,id);
        return result;
    }
146
147
148
149
150
151
152
153
154
155
156
157
    /**
     * 获取收货信息
     */
    @ResponseBody
    @PostMapping("/getReceiptInfoByReferBillKS")
    @RequiresPermissions("receipt:receiving:receiving")
    @Log(title = "入库-获取收货信息", operating ="获取收货信息", action = BusinessType.OTHER)
    public AjaxResult getReceiptInfoByReferBillKS(String code,Integer id)  {
        AjaxResult result = receiptContainerDetailService.getReceiptInfoByReferBillKS(code,id);
        return result;
    }
xumiao authored
158
159
160
161
162
163
164
165
    @ResponseBody
    @PostMapping("/getSelectSomething")
    public AjaxResult getSelectSomething(String materialCode,String companyCode,String uWarehouseCode)  {
        AjaxResult result = receiptContainerDetailService.getSelectSomething(materialCode,companyCode,uWarehouseCode);
        return result;
    }
166
167

    @GetMapping("/add")
mahuandong authored
168
169
170
    public String add(Long detailId, String containerCode, ModelMap modelMap) {
        modelMap.put("containerCode", containerCode);
        modelMap.put("receiptDetails", receiptDetailService.getById(detailId));
171
172
173
174
175
176
177
178
179
180
        return prefix + "/add";
    }

    /**
     * 保存收货
     */
    @ApiOperation(value="保存收货 ", notes="保存收货 ", httpMethod = "POST")
    @ResponseBody
    @PostMapping("/save")
    @RequiresPermissions("receipt:receiving:receiving")
mahuandong authored
181
    @Log(title = "入库-保存收货", operating ="PC端保存收货", action = BusinessType.OTHER)
182
    public AjaxResult save(ReceiptContainerView receivingDamain){
周鸿 authored
183
        if(receivingDamain.getQty().compareTo(new BigDecimal(0)) <=0) {
游杰 authored
184
185
            return AjaxResult.error("配盘数量必须大于0");
        }
186
187
188
189

        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
190
                AjaxResult ajaxResult = receiptContainerHeaderService.saveContainer(receivingDamain);
周鸿 authored
191
                if(ajaxResult!=null&&!ajaxResult.hasErr()){
周鸿 authored
192
                    //创建任务
周鸿 authored
193
                    LambdaQueryWrapper<ReceiptContainerHeader> lambdaQueryWrapper= Wrappers.lambdaQuery();
周鸿 authored
194
                    lambdaQueryWrapper.eq(ReceiptContainerHeader::getContainerCode,receivingDamain.getContainerCode());
周鸿 authored
195
                    lambdaQueryWrapper.le(ReceiptContainerHeader::getStatus,10);
周鸿 authored
196
197
198
199
200
201
202
203
204
205
206
                    List<ReceiptContainerHeader> receiptContainerHeaders=receiptContainerHeaderService.list(lambdaQueryWrapper);
                    for(ReceiptContainerHeader item:receiptContainerHeaders) {
                        String ids = item.getId().toString();
                        Integer[] idArray = Convert.toIntArray(ids);
                        List<Integer> islist= Arrays.asList(idArray);
                        try {
                            AjaxResult ajaxResult1=receiptTaskService.createReceiptTask(islist);
                        } catch (Exception e) {
                            e.printStackTrace();
                            logger.error("receipt/receiving/save:idArray="+idArray+"msg:"+e.getMessage());
                        }
周鸿 authored
207
                    }
周鸿 authored
208
                }
209
210
211
                return ajaxResult;
            }
        });
212
        return ajaxResult;
213
    }
mahuandong authored
214
215
216
217
218
219
220
221
222


    /**
     * 获取库存信息
     */
    @ResponseBody
    @PostMapping("/getInventoryInfo")
    @RequiresPermissions("receipt:receiving:add")
    @Log(title = "入库-入库单", operating ="获取库存信息", action = BusinessType.OTHER)
223
    public AjaxResult getInventoryInfo(String code,Integer id) throws Exception {
mahuandong authored
224
225
226
227
228
        //找到主单的账套和仓库
        LambdaQueryWrapper<ReceiptHeader> lambdaQueryWrapper= Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(ReceiptHeader::getCode,code)
        .eq(ReceiptHeader::getWarehouseCode, ShiroUtils.getWarehouseCode());
        ReceiptHeader receiptHeader=receiptHeaderService.getOne(lambdaQueryWrapper);
229
        if(receiptHeader == null) {
mahuandong authored
230
231
232
233
234
235
236
237
238
            throw new ServiceException("找不到主单");
        }

        //找到子单物料
        LambdaQueryWrapper<ReceiptDetail> lambdaQuery=Wrappers.lambdaQuery();
        lambdaQuery.eq(ReceiptDetail::getReceiptCode,code)
                .eq(ReceiptDetail::getWarehouseCode, ShiroUtils.getWarehouseCode())
        .eq(ReceiptDetail::getId,id);
        ReceiptDetail receiptDetail=receiptDetailService.getOne(lambdaQuery);
239
        if(receiptDetail == null) {
mahuandong authored
240
241
242
            throw new ServiceException("找不到子单");
        }
肖超群 authored
243
        //排除有任务的托盘
244
245
246
247
248
249
250
251
252
253
//        List<TaskHeader> unCompleteTaskList = taskHeaderService.getUnCompleteTaskList();
//        List<ShipmentContainerHeader> shipmentContainerHeaderList =
//                shipmentContainerHeaderService.getUnCompleteCombineList();
//        List<String> containerList = new ArrayList<>();
//        if(unCompleteTaskList != null && unCompleteTaskList.size() > 0) {
//            for(TaskHeader taskHeader : unCompleteTaskList) {
//                String containerCode = taskHeader.getContainerCode();
//                containerList.add(containerCode);
//            }
//        }
254
肖超群 authored
255
        //排除有出库组盘的托盘
256
257
258
259
260
261
262
263
//        if(shipmentContainerHeaderList != null && shipmentContainerHeaderList.size() > 0) {
//            for(ShipmentContainerHeader shipmentContainerHeader : shipmentContainerHeaderList) {
//                String containerCode = shipmentContainerHeader.getContainerCode();
//                if(!containerList.contains(containerCode)) {
//                    containerList.add(containerCode);
//                }
//            }
//        }
264
mahuandong authored
265
266
267
268
269
270
271
272
        //本物料库存
        LambdaQueryWrapper<InventoryDetail> inventoryDetailLambda = Wrappers.lambdaQuery();
        inventoryDetailLambda.eq(InventoryDetail::getWarehouseCode,ShiroUtils.getWarehouseCode())
                .eq(InventoryDetail::getCompanyCode,receiptHeader.getCompanyCode())
                .eq(InventoryDetail::getMaterialCode,receiptDetail.getMaterialCode())
                .eq((StringUtils.isNotEmpty(receiptDetail.getProjectNo())),InventoryDetail::getProjectNo,
                    receiptDetail.getProjectNo());
        List<InventoryDetail> inventoryList = inventoryDetailService.list(inventoryDetailLambda);
273
        List<InventoryDetail> removeInventoryList = new ArrayList<>();
mahuandong authored
274
275
276
277
278

        //空容器
        LambdaQueryWrapper<Container> container=Wrappers.lambdaQuery();
        container.eq(Container::getWarehouseCode,ShiroUtils.getWarehouseCode())
                .eq(Container::getCompanyCode,receiptHeader.getCompanyCode())
游杰 authored
279
                .eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_EMPTY);
280
281
282
        List<Container> emptyContainerList=containerService.list(container);
        List<Container> removeEmptyContainerList = new ArrayList<>();
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
//        for(String containerCode : containerList) {
//            if(inventoryList != null && inventoryList.size() > 0) {
//                for (InventoryDetail inventoryDetail : inventoryList) {
//                    if (inventoryDetail.getContainerCode().equals(containerCode)) {
//                        removeInventoryList.add(inventoryDetail);
//                    }
//                }
//            }
//            if(emptyContainerList != null && emptyContainerList.size() > 0) {
//                for (Container container1 : emptyContainerList) {
//                    if (container1.getCode().equals(containerCode)) {
//                        removeEmptyContainerList.add(container1);
//                    }
//                }
//            }
//        }
299
300
        inventoryList.removeAll(removeInventoryList);
        emptyContainerList.removeAll(removeEmptyContainerList);
mahuandong authored
301
302
303

        Map map=new ModelMap();
        map.put("inventoryList",inventoryList);
304
        map.put("containerList",emptyContainerList);
mahuandong authored
305
306
        return AjaxResult.success(map);
    }
xumiao authored
307
308
309
310
311
312
313
314
315
316
317
318
319

    /**
     * 批量收货
     */
    @ResponseBody
    @PostMapping("/saveAll")
    @RequiresPermissions("receipt:receiving:add")
    @Log(title = "入库-入库单", operating ="PC端保存收货", action = BusinessType.OTHER)
    public synchronized AjaxResult saveAll(String ids,String receiptContainerCode) throws Exception {
        final List<String> list = Arrays.asList(ids.split(","));
        for(String i:list){
            final ReceiptDetail receiptDetail = receiptDetailService.getById(Integer.valueOf(i));
            ReceiptContainerView receiptContainerView=new ReceiptContainerView();
周鸿 authored
320
            receiptContainerView.setReceiptCode(receiptDetail.getReceiptCode());
xumiao authored
321
322
323
324
325
326
327
328
            receiptContainerView.setQty(receiptDetail.getQty());
            receiptContainerView.setContainerCode(receiptContainerCode);
            receiptContainerView.setReceiptDetailId(Integer.valueOf(i));
            save(receiptContainerView);
        }
        return AjaxResult.success();

    }
329
}