Blame view

src/main/java/com/huaheng/pc/receipt/receiptContainerDetail/service/ReceiptContainerDetailServiceImpl.java 9.16 KB
1
2
package com.huaheng.pc.receipt.receiptContainerDetail.service;
3
4
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
5
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
pengcheng authored
6
import com.huaheng.common.constant.QuantityConstant;
mahuandong authored
7
import com.huaheng.common.exception.service.ServiceException;
8
9
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
mahuandong authored
10
11
12
import com.huaheng.mobile.receipt.ReceiptBill;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
huhai authored
13
14
15
16
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
17
18
import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
import com.huaheng.pc.receipt.receiptContainerDetail.mapper.ReceiptContainerDetailMapper;
19
20
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
mahuandong authored
21
22
23
24
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;
25
import org.springframework.stereotype.Service;
26
import org.springframework.web.bind.annotation.ResponseBody;
27
mahuandong authored
28
import javax.annotation.Resource;
mahuandong authored
29
import java.util.ArrayList;
mahuandong authored
30
31
import java.util.List;
import java.util.Map;
huhai authored
32
33
34
35
36
37
38
39
40
41
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 org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
42
43
import java.util.List;
import java.util.Map;
44
45
46
@Service
public class ReceiptContainerDetailServiceImpl extends ServiceImpl<ReceiptContainerDetailMapper, ReceiptContainerDetail> implements ReceiptContainerDetailService{
mahuandong authored
47
48
49
50
    @Resource
    private ReceiptDetailService receiptDetailService;
    @Resource
    private ReceiptHeaderService receiptHeaderService;
51
52
    @Resource
    private ReceiptContainerHeaderService receiptContainerHeaderService;
mahuandong authored
53
54
    @Resource
    private MaterialService materialService;
mahuandong authored
55
56
    /**
     * 根据入库单编码查询入库组盘明细
mahuandong authored
57
58
     * @param receiptCode 入库单编码
     * @return AjaxResult
mahuandong authored
59
     */
60
61
62
63
64
65
66
67
68
69
    @Override
    public AjaxResult<List<Map<String, Object>>> getReceiptInfoByBill(String receiptCode) {
        LambdaQueryWrapper<ReceiptContainerDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
        lambdaQueryWrapper.eq(ReceiptContainerDetail::getReceiptCode, receiptCode)
                .eq(ReceiptContainerDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());

        List<Map<String, Object>> detail = this.listMaps(lambdaQueryWrapper);
        return AjaxResult.success(detail);
    }
mahuandong authored
70
71
72
73
74
75
76
77
78
79
    /**
     * 撤销入库组盘明细
     * @param idList
     * @return
     */
    @Override
    public Boolean detailRemove(List<Integer> idList) {
        for (Integer id : idList){
            ReceiptContainerDetail receiptContainerDetail = this.getById(id);
            //如果已生成任务不允许撤销
pengcheng authored
80
            if (receiptContainerDetail.getStatus() < QuantityConstant.RECEIPT_CONTAINER_TASK){
mahuandong authored
81
82
                //回滚入库单明细收货数量
                ReceiptDetail receiptDetail = receiptDetailService.getById(receiptContainerDetail.getReceiptDetailId());
83
                receiptDetail.setOpenQty(receiptDetail.getOpenQty().subtract(receiptContainerDetail.getQty()));
mahuandong authored
84
85
86
87
                //如果为临时容器,则删除
                receiptContainerDetail.getContainerCode();
88
89
90
91
92
93
94
95
96
97
98
                if (!receiptDetailService.updateById(receiptDetail)){throw new SecurityException("回滚入库单明细失败");}
                //删除组盘明细
                if (!this.removeById(id)){ throw new ServiceException("回滚入库组盘失败");}
                LambdaQueryWrapper<ReceiptContainerDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
                lambdaQueryWrapper.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerDetail.getReceiptContainerId());
                List<ReceiptContainerDetail> list = this.list(lambdaQueryWrapper);
                if (list.size() == 0){
                    if (!receiptContainerHeaderService.removeById(receiptContainerDetail.getReceiptContainerId())){
                        throw new ServiceException("删除入库组盘头失败");
                    }
                }
99
mahuandong authored
100
101
102
103
                //查询入库头表
                LambdaQueryWrapper<ReceiptContainerDetail> containerDetailLambda = Wrappers.lambdaQuery();
                containerDetailLambda.eq(ReceiptContainerDetail::getReceiptId, receiptContainerDetail.getReceiptId());
                List<ReceiptContainerDetail> containerDetailList = this.list(containerDetailLambda);
104
105
mahuandong authored
106
                //如果入库组盘没有该入库单的组盘信息,回滚入库单状态
107
                if (containerDetailList.size() == 0){
mahuandong authored
108
109
                    ReceiptHeader receiptHeader = new ReceiptHeader();
                    receiptHeader.setId(receiptContainerDetail.getReceiptId());
pengcheng authored
110
111
                    receiptHeader.setFirstStatus(QuantityConstant.RECEIPT_HEADER_RECEIVING);
                    receiptHeader.setLastStatus(QuantityConstant.RECEIPT_HEADER_RECEIVING);
mahuandong authored
112
113
114
115
116
117
118
119
120
121
122
123
                    receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName());

                    if (!receiptHeaderService.updateById(receiptHeader)){ throw new ServiceException("回滚头表状态失败"); }
                }

            } else {
                throw new SecurityException("已生成任务,不允许取消");
            }
        }
        return true;
    }
124
mahuandong authored
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
//    /**
//     * 移动端收货
//     *
//     * @param code
//     * @return
//     */
//    @Override
//    public AjaxResult scanReceiptCode(String code) {
//        LambdaQueryWrapper<ReceiptDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
//        lambdaQueryWrapper.eq(ReceiptDetail::getReceiptCode, code);
//        List<ReceiptDetail> receiptContainerDetails = list(lambdaQueryWrapper);
//        return AjaxResult.success(receiptContainerDetails);
//    }

    /**保存到组盘详细*/
mahuandong authored
140
    @Override
mahuandong authored
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
    public List<Integer> insertTodayReceiptcContainerDetail(int headerId, int receiptId, List<Integer> receiptDetailId, List<ReceiptBill> receiptBills) {
        List<Integer> mReceiptContainerIds = new ArrayList<>();

        ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptId);
        if(receiptHeader == null) {
            throw new ServiceException("没有找到入库单表头!");
        }
        for(int i=0; i<receiptBills.size(); i++) {
            ReceiptBill receiptBill = receiptBills.get(i);
            Material condition2 = new Material();
            condition2.setCode(receiptBill.getMaterialCode());
            condition2.setWarehouseCode(ShiroUtils.getWarehouseCode());
            condition2.setDeleted(false);
            condition2.setEnable(true);
            LambdaQueryWrapper<Material> lambdaQueryWrapper = Wrappers.lambdaQuery();
            lambdaQueryWrapper.eq(Material::getCode, receiptBill.getMaterialCode())
                    .eq(Material::getWarehouseCode, ShiroUtils.getWarehouseCode());
            Material material = materialService.getOne(lambdaQueryWrapper);
            ReceiptContainerDetail record = new ReceiptContainerDetail();
            record.setReceiptContainerId(headerId);
            record.setReceiptCode(receiptHeader.getCode());
            record.setReceiptId(receiptId);
            record.setReceiptDetailId(receiptDetailId.get(i));
            record.setMaterialCode(receiptBill.getMaterialCode());
            record.setMaterialName(material.getName());
            record.setMaterialSpec(material.getSpec());
            record.setQty(receiptBill.getQty());
            if(receiptBill.getWeight() != null) {
                record.setWeight(receiptBill.getWeight());
            }
            record.setCreatedBy(ShiroUtils.getLoginName());

            LambdaQueryWrapper<ReceiptContainerDetail> detailyWrapper = Wrappers.lambdaQuery();
            detailyWrapper.eq(ReceiptContainerDetail::getReceiptContainerId, headerId)
                    .eq(ReceiptContainerDetail::getReceiptCode, receiptHeader.getCode());
            ReceiptContainerDetail receiptContainerDetail = getOne(detailyWrapper);
            if(receiptContainerDetail == null) {
                save(record);
                mReceiptContainerIds.add(record.getId());
            } else {
                mReceiptContainerIds.add(receiptContainerDetail.getId());
            }
        }
        return mReceiptContainerIds;
mahuandong authored
185
    }
186
}