Blame view

src/main/java/com/huaheng/pc/u8/service/ICSReceiptAPIService.java 28.7 KB
1
2
3
package com.huaheng.pc.u8.service;
4
5
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
6
7
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
8
import com.huaheng.pc.config.warehouse.domain.Warehouse;
9
10
import com.huaheng.pc.referenceCode.domain.U8Reference;
import com.huaheng.pc.referenceCode.service.U8ReferenceService;
11
12
13
14
import com.huaheng.common.utils.http.HttpUtils;
import com.huaheng.pc.config.address.service.AddressService;
import com.huaheng.pc.config.company.domain.CompanyU8;
import com.huaheng.pc.config.company.service.CompanyU8Service;
tongzhonghao authored
15
import com.huaheng.pc.u8.domain.*;
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
import com.huaheng.api.general.domain.ReceiptDomain;
import com.huaheng.api.general.service.ReceiptApiService;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.DateUtils;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.company.service.CompanyService;
import com.huaheng.pc.config.documentWarning.service.IDocumentWarningService;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.config.warehouse.domain.WarehouseU8;
import com.huaheng.pc.config.warehouse.service.WarehouseService;
import com.huaheng.pc.config.warehouse.service.WarehouseU8Service;
import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
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;
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;

import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
tongzhonghao authored
49
import java.util.Calendar;
50
51
import java.util.Date;
import java.util.List;
52
import java.util.stream.Collectors;
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

/**
 * u8-wms入库下发或回传接口服务层
 *  @author huaheng
 *  @date 2019-1-4
 *
 */

@Service
public class ICSReceiptAPIService {

    @Resource
    private WarehouseU8Service warehouseU8Service;
    @Resource
    private WarehouseService warehouseService;
    @Resource
    private CompanyService companyService;
    @Resource
    private IDocumentWarningService documentWarningService;
    @Resource
    private ICSReceiptHeaderService icsReceiptHeaderService;
    @Resource
    private ICSReceiptDetailService icsReceiptDetailService;
    @Resource
    private ReceiptHeaderService receiptHeaderService;
    @Resource
    private ReceiptDetailService receiptDetailService;
    @Resource
    private ReceiptContainerHeaderService receiptContainerHeaderService;
    @Resource
    private ReceiptContainerDetailService receiptContainerDetailService;
    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private TaskDetailService taskDetailService;
    @Resource
    private MaterialService materialService;
    @Resource
    private ReceiptApiService receiptApiService;
92
93
94
95
    @Resource
    private CompanyU8Service companyU8Service;
    @Resource
    private AddressService addressService;
96
97
    @Resource
    private U8ReferenceService u8ReferenceService;
98
99
100
101
102
103
104
105




    //入库单下发
    //采购入库
    @Transactional
    public AjaxResult procureReceipt(@RequestBody ICSReceiptModel icsReceiptModel) {
106
        icsReceiptModel = assign(icsReceiptModel);
107
108
109
        ICSReceiptHeader icsReceiptHeader=icsReceiptModel.getIcsReceiptHeader();
        List<ICSReceiptDetail> icsReceiptDetails=icsReceiptModel.getIcsReceiptDetails();
110
        //是否更新
111
112
113
        if(StringUtils.isEmpty(icsReceiptHeader.getIsNew())){
            return AjaxResult.error("isNew为空");
        }
tongzhonghao authored
114
115
116
117
118
119
120
        boolean isFlag = "0".equals(icsReceiptHeader.getIsNew()) ? true : false;
        //仓库编码
        String currentWarehouseCode = icsReceiptHeader.getWarehouseCode();
        if(StringUtils.isEmpty(currentWarehouseCode)){
            return AjaxResult.error("仓库编码warehouseCode:不能为空");
        }
        //入库类型
121
        String type=icsReceiptHeader.getType();
122
123
        if (receiptTypeCheck(type)) {
            return AjaxResult.error("入库类型不匹配");
124
        }
tongzhonghao authored
125
        String typeName = getReceiptTypeName(type);
126
        String stock=icsReceiptHeader.getStock();
tongzhonghao authored
127
128
        //U8companyCode
        String U8CompanyCode = icsReceiptHeader.getCompanyCode();
129
        //判断U8货主
tongzhonghao authored
130
        CompanyU8 companyU8 = companyU8Service.getCompanyByU8CodeWarehouseCode(U8CompanyCode, currentWarehouseCode);
131
        if(companyU8==null){
tongzhonghao authored
132
            return AjaxResult.error("系统没有此货主:【"+U8CompanyCode+"】");
133
        }
134
135
136
137
138
139
140
141
142
        companyService.checkwarehouseCompany(companyU8.getCompanyCode());
        //判断U8仓库
        if(!StringUtils.isEmpty(stock)){
            LambdaQueryWrapper<WarehouseU8> queryWrapper = Wrappers.lambdaQuery();
            queryWrapper.eq(WarehouseU8::getUCompanyCode,icsReceiptHeader.getCompanyCode())
                    .eq(WarehouseU8::getUWarehouseCode,stock);
            WarehouseU8 one = warehouseU8Service.getOne(queryWrapper);
            if(one==null){
                return AjaxResult.error("系统没有此仓库:【"+stock+"】");
143
144
            }
        }
145
146
147
148
149
150
151
152
153
154
155
156
        //u8关联表 检查上游单号是否重复
        U8Reference one = u8ReferenceService.getOne(new LambdaQueryWrapper<U8Reference>()
                .eq(U8Reference::getReferCode, icsReceiptHeader.getReferCode())
                .eq(U8Reference::getReferType, icsReceiptHeader.getType())
                .eq(U8Reference::getWarehouseCode, currentWarehouseCode));
        //入库单表 检查上游单号是否重复
        ReceiptHeader receiptHeader1 = receiptHeaderService.getOne(new LambdaQueryWrapper<ReceiptHeader>()
                .eq(ReceiptHeader::getReferCode, icsReceiptHeader.getReferCode()));
        if(one != null && !isFlag && receiptHeader1 != null){
            return AjaxResult.error(typeName + ":请不要重复下发 "+icsReceiptHeader.getReferCode());
        }
        //判断是否更新
tongzhonghao authored
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
        checkReceiptBill(isFlag, icsReceiptHeader.getReferCode(),icsReceiptHeader.getType());

        boolean save = icsReceiptHeaderService.save(icsReceiptHeader);
        if(!save){
            throw new ServiceException("下发失败");
        }
        for (ICSReceiptDetail icsReceiptDetail : icsReceiptDetails) {
            icsReceiptDetail.setHeaderId(icsReceiptHeader.getRid());
        }
        save = icsReceiptDetailService.saveBatch(icsReceiptDetails);
        if(!save){
            throw new ServiceException("下发失败");
        }
172
        //根据icsReceiptHeader生成receiptHeader
173
174
175
176
        ReceiptHeader receiptHeader=new ReceiptHeader();
        String maker = icsReceiptHeader.getCMaker();
        receiptHeader.setReceiptType(type);
        receiptHeader.setCreatedBy(maker);
177
        receiptHeader.setUWarehouseCode(icsReceiptHeader.getStock());
178
        receiptHeader.setCreated(icsReceiptHeader.getCreated());
179
        receiptHeader.setTypeName(icsReceiptHeader.getCBusType());
180
        receiptHeader.setDeptCode(icsReceiptHeader.getCDepCode());
周鸿 authored
181
        receiptHeader.setCDeptName(icsReceiptHeader.getCDepName());
182
183
        receiptHeader.setReceiptNote(icsReceiptHeader.getCMemo());
        receiptHeader.setSupplierCode(icsReceiptHeader.getCVenCode());
184
185
186
        receiptHeader.setWarehouseCode(currentWarehouseCode);
        receiptHeader.setReferCode(icsReceiptHeader.getReferCode());
        receiptHeader.setCompanyCode(companyU8.getCompanyCode());
187
188
189
190
191
192
        //根据icsShipmentDetail生成shipmentAetail
        List<ReceiptDetail> receiptDetails = new ArrayList<ReceiptDetail>();
        for (ICSReceiptDetail item : icsReceiptDetails) {
            //查找物料
            LambdaQueryWrapper<Material> queryWrapper1 = Wrappers.lambdaQuery();
            queryWrapper1.eq(Material::getCode,item.getCInvCode())
193
                    .eq(Material::getWarehouseCode,currentWarehouseCode);
194
195
196
197
198
199
200
            Material material = materialService.getOne(queryWrapper1);
            if (material == null) {
                documentWarningService.ErpSendWarning(receiptHeader.getReferCode(), "该物料不存在:" + item.getCInvCode());
                throw new ServiceException("该物料不存在:" + item.getCInvCode());
            }

            ReceiptDetail receiptDetail = new ReceiptDetail();
201
            receiptDetail.setAutoId(item.getAutoID());
202
            receiptDetail.setReferId(item.getReferId());
203
204
205
206
            if (icsReceiptHeader.getType().equals("TI")) {
                receiptDetail.setAutoId(item.getITrIds());
            }
            receiptDetail.setReferCode(receiptHeader.getReferCode());
207
            receiptDetail.setMoCode(item.getMoCode());
208
209
210
211
212
213
214
            if(StringUtils.isNotEmpty(item.getCDefine22())) {
                Boolean flag = StringUtils.isChineseChar(item.getCDefine22());
                if (item.getCDefine22().length() == 19 && flag == false) {
                    receiptDetail.setMoCode(item.getCDefine22());
                } else {
                    receiptDetail.setBatch(item.getCDefine22());
                }
tongzhonghao authored
215
216
217
            }
            receiptDetail.setLot(item.getCDefine23());
            receiptDetail.setProjectNo(item.getCDefine23());
218
            receiptDetail.setWarehouseCode(currentWarehouseCode);
219
220
            receiptDetail.setMaterialCode(item.getCInvCode());
            receiptDetail.setZoneCode(material.getZoneCode());
221
            receiptDetail.setCreated(icsReceiptHeader.getCreated());
222
223
            receiptDetail.setMaterialUnit(item.getCComUnitName());
            receiptDetail.setCreatedBy(maker);
224
            receiptDetail.setCompanyCode(companyU8.getCompanyCode());
225
226
227
228
229
230
231
232
233
234
235
236
237
238
            receiptDetail.setProjectNo(item.getCItemName());
            receiptDetail.setQty(item.getIQuantity().abs());
            receiptDetail.setInventorySts(QuantityConstant.GOOD);
            if (item.getIrowno() != null && StringUtils.isNotEmpty(item.getIrowno().toString())) {
                receiptDetail.setReferLineNum(item.getIrowno().toString());
            }
            receiptDetails.add(receiptDetail);
        }

        //调用公共API
        ReceiptDomain receiptDomain = new ReceiptDomain();
        receiptDomain.setReceiptHeader(receiptHeader);
        receiptDomain.setReceiptDetails(receiptDetails);
        AjaxResult ajaxResult = receiptApiService.receipt(receiptDomain);
239
240
241
242
243
        if(!ajaxResult.hasErr() && !isFlag){
            U8Reference reference = new U8Reference();
            reference.setReferType(icsReceiptHeader.getType());
            reference.setReferCode(icsReceiptHeader.getReferCode());
            reference.setStock(stock);
244
            reference.setCompanyCode(companyU8.getCompanyCode());
245
246
247
248
249
250
            reference.setWarehouseCode(currentWarehouseCode);
            reference.setTypeName(typeName);
            reference.setCreated(DateUtils.getNowDate());
            u8ReferenceService.save(reference);
        }
        if(ajaxResult.getCode()==200&& !isFlag ){
251
            return AjaxResult.success("入库单下发成功");
252
        }else if (ajaxResult.getCode()==200 && isFlag) {
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
            return AjaxResult.success("入库单更新成功");
        }else {
            return ajaxResult;
        }
    }

    /**
     * 采购到货 or 退货入库
     * 采购到货单 | 销售退货入库单
     * @param icsReceiptModel
     * @return
     * @throws ParseException
     */
    @Transactional
    public AjaxResult procureArrive(ICSReceiptModel icsReceiptModel){
268
        icsReceiptModel = assign(icsReceiptModel);
269
270
        ICSReceiptHeader icsReceiptHeader = icsReceiptModel.getIcsReceiptHeader();
        List<ICSReceiptDetail> icsReceiptDetails = icsReceiptModel.getIcsReceiptDetails();
271
        //是否更新
tongzhonghao authored
272
273
274
        if(StringUtils.isEmpty(icsReceiptHeader.getIsNew())){
            return AjaxResult.error("isNew为空");
        }
275
        boolean isUpdate = "0".equals(icsReceiptHeader.getIsNew()) ? true : false;
276
        String currentWarehouseCode = icsReceiptHeader.getWarehouseCode();
tongzhonghao authored
277
278
279
        if (StringUtils.isEmpty(currentWarehouseCode)) {
            return AjaxResult.error("仓库编码warehouseCode:不能为空");
        }
280
281
282
283
284
        Warehouse warehouse = warehouseService.getOne(new LambdaQueryWrapper<Warehouse>()
                .eq(Warehouse::getCode, currentWarehouseCode));
        if(warehouse==null){
            return AjaxResult.error("本系统中没有编号:【"+currentWarehouseCode+"】的仓库。");
        }
tongzhonghao authored
285
        //入库类型
286
287
        String type = icsReceiptHeader.getType();
        if (receiptTypeCheck(type)) {
288
289
            return AjaxResult.error("入库类型不匹配");
        }
tongzhonghao authored
290
        String typeName = getReceiptTypeName(type);
291
292
293
294
295
296
297
298
299
300
        //u8关联表 检查上游单号是否重复
        U8Reference one = u8ReferenceService.getOne(new LambdaQueryWrapper<U8Reference>()
                .eq(U8Reference::getReferCode, icsReceiptHeader.getReferCode())
                .eq(U8Reference::getReferType, icsReceiptHeader.getType())
                .eq(U8Reference::getWarehouseCode, currentWarehouseCode));
        //入库单表 检查上游单号是否重复
        ReceiptHeader receiptHeader1 = receiptHeaderService.getOne(new LambdaQueryWrapper<ReceiptHeader>()
                .eq(ReceiptHeader::getReferCode, icsReceiptHeader.getReferCode()));
        if(one != null && !isUpdate && receiptHeader1 != null){
            return AjaxResult.error(typeName + ":请不要重复下发 "+icsReceiptHeader.getReferCode());
301
        }
tongzhonghao authored
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
        checkReceiptBill(isUpdate, icsReceiptHeader.getReferCode(),icsReceiptHeader.getType());

        boolean save = icsReceiptHeaderService.save(icsReceiptHeader);
        if(!save){
            throw new ServiceException("下发失败");
        }
        for (ICSReceiptDetail icsReceiptDetail : icsReceiptDetails) {
            icsReceiptDetail.setHeaderId(icsReceiptHeader.getRid());
        }
        save = icsReceiptDetailService.saveBatch(icsReceiptDetails);
        if(!save){
            throw new ServiceException("下发失败");
        }
317
        String maker=icsReceiptHeader.getCMaker();
周鸿 authored
318
319
320
321
322
323

        CompanyU8 companyU81 = companyU8Service.getCompanyByU8CodeWarehouseCode(icsReceiptHeader.getCompanyCode(),currentWarehouseCode);

        ReceiptHeader receiptHeader = new ReceiptHeader();
324
        receiptHeader.setReferId(icsReceiptHeader.getReferId());
325
326
        receiptHeader.setReceiptType(icsReceiptHeader.getType());
        receiptHeader.setCreatedBy(maker);
327
        receiptHeader.setUWarehouseCode(icsReceiptHeader.getCWHCode());
328
329
        receiptHeader.setCreated(icsReceiptHeader.getCreated());
        receiptHeader.setReferCode(icsReceiptHeader.getReferCode());
330
        receiptHeader.setSupplierCode(icsReceiptHeader.getCVenCode());
331
        receiptHeader.setSupplierName(icsReceiptHeader.getCVenName());
332
333
        receiptHeader.setWarehouseCode(companyU81.getWarehouseCode());
        receiptHeader.setCompanyCode(companyU81.getCompanyCode());
334
335
336
337
        receiptHeader.setCustomerCode(icsReceiptHeader.getCCusCode());
        receiptHeader.setDeptCode(icsReceiptHeader.getCDepCode());
        receiptHeader.setCDeptName(icsReceiptHeader.getCDepName());
        receiptHeader.setPersonCode(icsReceiptHeader.getCPersonCode());
338
339
340
341
        List<ReceiptDetail> receiptDetails = new ArrayList<>();

        for (ICSReceiptDetail icsReceiptDetail : icsReceiptDetails) {
            ReceiptDetail receiptDetail = new ReceiptDetail();
342
            if(!StringUtils.isEmpty(icsReceiptDetail.getCWHCode())){
343
344
                WarehouseU8 warehouseU8 = warehouseU8Service.getOne(new LambdaQueryWrapper<WarehouseU8>()
                        .eq(WarehouseU8::getWarehouseCode, currentWarehouseCode)
345
                        .eq(WarehouseU8::getUWarehouseCode,icsReceiptDetail.getCWHCode())
346
                        .eq(WarehouseU8::getUCompanyCode, icsReceiptDetail.getCompanyCode()));
tongzhonghao authored
347
                receiptDetail.setUWarehouseCode(warehouseU8.getUWarehouseCode());
348
            }
349
            receiptDetail.setLot(icsReceiptDetail.getCDefine23());
350
            receiptDetail.setReferCode(icsReceiptDetail.getReferCode());
351
352
353
            receiptDetail.setSoCode(icsReceiptDetail.getCSOCode());
            receiptDetail.setSoId(icsReceiptDetail.getCSOID());
            receiptDetail.setSoAutoId(icsReceiptDetail.getCSOAutoID());
354
355
356
357
358
            receiptDetail.setReferId(icsReceiptDetail.getReferId());
            receiptDetail.setAutoId(icsReceiptDetail.getAutoID());
            if (icsReceiptDetail.getIrowno() != null && StringUtils.isNotEmpty(icsReceiptDetail.getIrowno().toString())) {
                receiptDetail.setReferLineNum(icsReceiptDetail.getIrowno().toString());
            }
359
360
361
362
363
364
365
366
367
368
369
            if(StringUtils.isNotEmpty(icsReceiptDetail.getCDefine22())) {
                Boolean flag = StringUtils.isChineseChar(icsReceiptDetail.getCDefine22());
                if (icsReceiptDetail.getCDefine22().length() == 19 && flag == false) {
                    receiptDetail.setMoCode(icsReceiptDetail.getCDefine22());
                } else {
                    receiptDetail.setBatch(icsReceiptDetail.getCDefine22());
                }
            }
            receiptDetail.setWarehouseCode(currentWarehouseCode);
            receiptDetail.setMaterialCode(icsReceiptDetail.getCInvCode());
370
            receiptDetail.setCreated(icsReceiptHeader.getCreated());
371
372
373
374
375
376
377
378
379
380
            receiptDetail.setMaterialUnit(icsReceiptDetail.getCComUnitName());
            receiptDetail.setCreatedBy(maker);
            if(icsReceiptHeader.getType().equals("SRI")){
                receiptDetail.setCPoCode(icsReceiptDetail.getCSOCode());
            }else {
                receiptDetail.setCPoCode(icsReceiptDetail.getPOCode());
            }
            receiptDetail.setCompanyCode(companyU81.getCompanyCode());
            receiptDetail.setProjectNo(icsReceiptDetail.getCItemName());
            receiptDetail.setQty(icsReceiptDetail.getIQuantity().abs());
381
            receiptDetail.setInventorySts(QuantityConstant.GOOD);
382
383
            receiptDetails.add(receiptDetail);
384
385
386
387
388
389
390
391
392
            if(icsReceiptDetail.getMoCode()!=null){
                try{
                    JSONObject json=new JSONObject();
                    json.put("code",icsReceiptHeader);
                    json.put("materialCode",icsReceiptDetail.getCInvCode().trim());
                    json.put("workNo",icsReceiptDetail.getMoCode().trim());
                    json.put("status","1");
                    String JsonParam = JSON.toJSONString(json);
                    System.out.println(JsonParam);
周鸿 authored
393
394
395
396
397
398
                    //调用mms更改采购状态
                    if(currentWarehouseCode.equals("CS0001")){
                        String url = addressService.selectAddress("mms",currentWarehouseCode);
                        String result2 = HttpUtils.bodypost(url, JsonParam,currentWarehouseCode);
                    }
399
400
401
                }catch(Exception e) {
                    e.printStackTrace();
                }
402
403
404
405
406
407
408
            }
        }
        //调用公共API
        ReceiptDomain receiptModel = new ReceiptDomain();
        receiptModel.setReceiptHeader(receiptHeader);
        receiptModel.setReceiptDetails(receiptDetails);
        AjaxResult ajaxResult = receiptApiService.receipt(receiptModel);
409
410
411
412
413
414
415
416
417
418
419
        if(!ajaxResult.hasErr() && !isUpdate){
            U8Reference reference = new U8Reference();
            reference.setReferType(icsReceiptHeader.getType());
            reference.setReferCode(icsReceiptHeader.getReferCode());
            reference.setCompanyCode(companyU81.getCompanyCode());
            reference.setWarehouseCode(currentWarehouseCode);
            reference.setTypeName(typeName);
            reference.setCreated(DateUtils.getNowDate());
            u8ReferenceService.save(reference);
        }
        if(ajaxResult.getCode()==200&& !isUpdate ){
420
            return AjaxResult.success("入库单下发成功");
421
        }else if (ajaxResult.getCode()==200&& isUpdate) {
422
423
424
425
            return AjaxResult.success("入库单更新成功");
        }else {
            return ajaxResult;
        }
426
427
    }
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
    private ICSReceiptModel assign(ICSReceiptModel icsReceiptModel){
        ICSReceiptHeader header = icsReceiptModel.getIcsReceiptHeader();
        List<ICSReceiptDetail> details = icsReceiptModel.getIcsReceiptDetails();
        String type = header.getType();
        Date created = null;
        if(header.getDDate() !=null){
            try {
                created = DateUtils.parseDate(header.getDDate(),DateUtils.YYYY_MM_DD_HH_MM_SS_S);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        switch (type){
            case "PI" :
                header.setReferCode(header.getCCode());
                try {
                    header.setCreated(DateUtils.parseDate(header.getDPODate(),DateUtils.YYYY_MM_DD_HH_MM_SS));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
448
                String uwarehouseCode = "";
449
                for (ICSReceiptDetail detail : details) {
450
451
452
453
454
455
456
457
                    detail.setReferId(detail.getPODID());
                    detail.setReferCode(detail.getPOCode());
                    if(StringUtils.isEmpty(detail.getCWHCode())){
                        detail.setCWHCode(header.getIWHCode());
                    }
                    uwarehouseCode = detail.getCWHCode();
                }
                if(StringUtils.isEmpty(header.getIWHCode())){
458
                    header.setCWHCode(uwarehouseCode);
459
460
461
462
                }
                break;

            case "SRI" :
463
                header.setReferId(header.getDLID());
464
465
                header.setReferCode(header.getCDLCode());
                header.setCreated(created);
466
                String uwarehouseCode1 = "";
467
                for (ICSReceiptDetail detail : details) {
468
469
470
471
472
473
474
475
476
                    detail.setReferId(detail.getCSOAutoID());
                    detail.setReferCode(detail.getCSOCode());
                    if(StringUtils.isEmpty(detail.getCWHCode())){
                        detail.setCWHCode(header.getIWHCode());
                    }
                    uwarehouseCode1 = detail.getCWHCode();
                }
                if(StringUtils.isEmpty(header.getIWHCode())){
                    header.setIWHCode(uwarehouseCode1);
477
                    header.setCWHCode(uwarehouseCode1);
478
479
480
481
482
483
484
485
486
487
                }
                break;
            case "PCI" :
                header.setReferCode(header.getCPOID());
                header.setReferId(header.getPOID());
                try {
                    header.setCreated(DateUtils.parseDate(header.getDPODate(),DateUtils.YYYY_MM_DD_HH_MM_SS_S));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
488
                String uwarehouseCode2 = "";
489
490
                for (ICSReceiptDetail detail : details) {
                    detail.setReferCode(header.getReferCode());
491
                    detail.setReferId(detail.getPODID());
492
493
494
495
496
497
498
                    if(StringUtils.isEmpty(detail.getCWHCode())){
                        detail.setCWHCode(header.getIWHCode());
                    }
                }
                if(StringUtils.isEmpty(header.getIWHCode())){
                    header.setIWHCode(uwarehouseCode2);
                    header.setCWHCode(uwarehouseCode2);
499
500
501
502
                }
                break;
            case "CI" :
            default:
503
                header.setReferId(header.getID());
504
505
506
507
508
509
510
511
512
513
514
515
516
                header.setReferCode(header.getCCode());
                header.setStock(header.getCWHCode());
                header.setCreated(created);
                for (ICSReceiptDetail detail : details) {
                    detail.setReferCode(header.getReferCode());
                }
                break;
        }
        icsReceiptModel.setIcsReceiptHeader(header);
        icsReceiptModel.setIcsReceiptDetails(details);
        return icsReceiptModel;
    }
517
518
519
520
    /**
     * 判断入库单是否可以更新
     * @param code  U8单号
     */
tongzhonghao authored
521
    private  void  checkReceiptBill(boolean isFlag,String code,String type){
522
        LambdaQueryWrapper<ReceiptHeader> queryWrapper = Wrappers.lambdaQuery();
tongzhonghao authored
523
524
        queryWrapper.eq(ReceiptHeader::getReferCode,code)
                .eq(ReceiptHeader::getReceiptType,type);
525
526
        ReceiptHeader receiptHeader = receiptHeaderService.getOne(queryWrapper);
527
528
529
        if (isFlag) {
            if(receiptHeader!=null){
                LambdaQueryWrapper<TaskDetail> queryWrapper3 = Wrappers.lambdaQuery();
tongzhonghao authored
530
531
                queryWrapper3.eq(TaskDetail::getBillCode,receiptHeader.getCode())
                        .le(TaskDetail::getStatus,QuantityConstant.TASK_STATUS_COMPLETED);
532
                List<TaskDetail> taskDetailList = taskDetailService.list(queryWrapper3);
tongzhonghao authored
533
534
                if(taskDetailList==null || taskDetailList.size()>0){
                    throw  new ServiceException("更新失敗,此入库单存在任务");
535
536
                }
                LambdaQueryWrapper<ReceiptContainerDetail> queryWrapper1 = Wrappers.lambdaQuery();
tongzhonghao authored
537
538
                queryWrapper1.eq(ReceiptContainerDetail::getReceiptCode,receiptHeader.getCode())
                        .le(ReceiptContainerDetail::getStatus,QuantityConstant.RECEIPT_CONTAINER_FINISHED);
539
                List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(queryWrapper1);
tongzhonghao authored
540
541
                if(receiptContainerDetails==null || receiptContainerDetails.size()>0){
                    throw  new ServiceException("更新失敗,此入库单已组盘");
542
                }
543
544
545
546
                receiptHeaderService.removeById(receiptHeader.getId());
                List<ReceiptDetail> receiptDetails = receiptDetailService.findByReceiptId(receiptHeader.getId());
                List<Integer> ids = receiptDetails.stream().map(ReceiptDetail::getId).collect(Collectors.toList());
                receiptDetailService.removeByIds(ids);
547
            }
tongzhonghao authored
548
549
550
551
552
553
554
555
            ICSReceiptHeader icsReceiptHeader = icsReceiptHeaderService.getOne(new LambdaQueryWrapper<ICSReceiptHeader>()
                    .eq(ICSReceiptHeader::getReferCode, code)
                    .eq(ICSReceiptHeader::getType, type));
            if(icsReceiptHeader!=null){
                icsReceiptHeaderService.removeById(icsReceiptHeader.getRid());
                icsReceiptDetailService.remove(new LambdaQueryWrapper<ICSReceiptDetail>()
                        .eq(ICSReceiptDetail::getHeaderId,icsReceiptHeader.getRid()));
            }
556
557
558
        }
    }
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
    private String getReceiptTypeName(String code){
        String typeName = "";
        switch (code){
            case "PCI" :
                typeName = "采购订单";
                break;
            case "CI" :
                typeName = "生产退料单";
                break;
            case "QI" :
                typeName = "其他入库单";
                break;
            case "PPI" :
                typeName = "手持入库单";
                break;
            case "TI" :
                typeName = "调拨入库单";
                break;
            case "SRI" :
                typeName = "销售退货单";
                break;
            case "SI" :
                typeName = "产成品入库单";
                break;
            case "PI" :
                typeName = "采购到货单";
                break;
            case "AI" :
                typeName = "调整单";
                break;
        }
        return typeName;
    }

    private boolean receiptTypeCheck(String code){
        switch (code){
            case "PI" :
            case "SRI" :
            case "PCI" :
            case "CI" :
                return false;
            default:
                return true;
        }
    }
tongzhonghao authored
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
    public Boolean isSameMonth(Date date){
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(date);
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(new Date());
        boolean isSameYear = cal1.get(Calendar.YEAR) == cal2
                .get(Calendar.YEAR);
        boolean isSameMonth = isSameYear
                && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH);
        boolean isSameDate = isSameMonth
                && cal1.get(Calendar.DAY_OF_MONTH) == cal2
                .get(Calendar.DAY_OF_MONTH);
        return isSameDate;
    }
620
}