Blame view

src/main/java/com/huaheng/pc/config/container/controller/ContainerController.java 14.7 KB
huhai authored
1
package com.huaheng.pc.config.container.controller;
2
3
4

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
5
import com.huaheng.common.exception.service.ServiceException;
周鸿 authored
6
import com.huaheng.common.utils.Wrappers;
7
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
游杰 authored
8
import com.huaheng.common.constant.QuantityConstant;
9
10
import com.huaheng.common.support.Convert;
import com.huaheng.common.utils.StringUtils;
11
import com.huaheng.common.utils.poi.ExcelUtil;
12
13
14
15
16
17
18
19
import com.huaheng.common.utils.security.ShiroUtils;
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;
import com.huaheng.framework.web.page.PageDomain;
import com.huaheng.framework.web.page.TableDataInfo;
import com.huaheng.framework.web.page.TableSupport;
20
import com.huaheng.pc.common.JasperPrint.Print;
21
22
import com.huaheng.pc.config.company.domain.Company;
import com.huaheng.pc.config.company.service.CompanyService;
23
24
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
游杰 authored
25
26
import com.huaheng.pc.config.location.domain.Location;
import com.huaheng.pc.config.location.service.LocationService;
27
28
29
30
import com.huaheng.pc.config.points.domain.Points;
import com.huaheng.pc.config.points.service.PointsService;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
31
32
33
34
35
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
xumiao authored
36
import org.springframework.transaction.annotation.Transactional;
37
38
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
39
import org.springframework.web.multipart.MultipartFile;
40
41

import javax.annotation.Resource;
42
import javax.sql.DataSource;
43
44
45
46
import java.util.List;

@Api(tags={"容器操作类"})
@Controller
47
@RequestMapping("/config/container")
48
49
public class ContainerController extends BaseController {
50
    private String prefix = "config/container";
51
52
53

    @Resource
    private ContainerService containerService;
游杰 authored
54
55
56
57
58
    @Resource
    private LocationService locationService;
    @Resource
    private DataSource dataSource;
    @Resource
59
60
61
62
63
64
65
66
67
    private PointsService pointsService;
    @Resource
    private CompanyService companyService;
    @Resource
    private InventoryDetailService inventoryDetailService;

    private Integer[] idsId=null;

    @Resource
游杰 authored
68
    private Print print;
69
    @RequiresPermissions("config:container:view")
70
71
72
73
74
75
76
77
78
79
80
    @GetMapping()
    public String container() {
        return prefix + "/container";
    }

    /**
     * 查询库位列表
     */
    @ApiOperation(value="查看容器列表",
            notes="根据容器编号、库位编码、容器状态、容器类型、创建时间获取库位的详细信息",
            httpMethod = "POST")
81
    @RequiresPermissions("config:container:list")
huhai authored
82
    @Log(title = "配置-库存资料-库位管理", operating = "查看库位列表", action = BusinessType.GRANT)
83
84
85
86
87
88
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(
            @ApiParam(name="location",value="容器编号、库位编码、容器状态、容器类型") Container container,
            @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin,
            @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) {
89
        LambdaQueryWrapper<Container> lambdaQueryWrapper = Wrappers.lambdaQueryNoWarehouse();
90
91
92
93
94
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Container::getCreated, createdBegin)
                .lt(StringUtils.isNotEmpty(createdEnd), Container::getCreated, createdEnd)
95
                .like(StringUtils.isNotNull(container.getCode()) && StringUtils.isNotEmpty(container.getCode()), Container::getCode, container.getCode())
96
                .eq(StringUtils.isNotEmpty(container.getGoodsShelfNo()), Container::getGoodsShelfNo, container.getGoodsShelfNo())
97
98
                .eq(StringUtils.isNotEmpty(container.getStatus()), Container::getStatus, container.getStatus())
                .eq(StringUtils.isNotEmpty(container.getContainerType()), Container::getContainerType, container.getContainerType())
99
                .eq(StringUtils.isNotEmpty(container.getCompanyCode()), Container::getCompanyCode, container.getCompanyCode())
100
                .eq(StringUtils.isNotEmpty(ShiroUtils.getWarehouseCode()), Container::getWarehouseCode, ShiroUtils.getWarehouseCode())
xumiao authored
101
                .eq(StringUtils.isNotNull(container.getPrintNum()),Container::getPrintNum,container.getPrintNum())
102
                .like(StringUtils.isNotNull(container.getLocationCode())&&StringUtils.isNotEmpty(container.getLocationCode()), Container::getLocationCode, container.getLocationCode())
103
104
                .eq(Container::getEnable,true)
                .orderByDesc(Container::getId);
105
106
107
108
109

        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
            /*使用分页查询*/
            Page<Container> page = new Page<>(pageNum, pageSize);
            IPage<Container> iPage = containerService.page(page, lambdaQueryWrapper);
110
            return getMpDataTable(iPage.getRecords(), iPage.getTotal());
111
112
113
114
115
116
        } else {
            List<Container> list = containerService.list(lambdaQueryWrapper);
            return getDataTable(list);
        }
    }
mahuandong authored
117
118
    @PostMapping("/emptyContainer")
    @ResponseBody
119
    public TableDataInfo emptyContainer(String containerType) {
mahuandong authored
120
121
122
123
124
        LambdaQueryWrapper<Container> lambdaQueryWrapper = Wrappers.lambdaQuery();
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        lambdaQueryWrapper
游杰 authored
125
                .eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_EMPTY)
mahuandong authored
126
                .isNotNull(Container::getLocationCode)
127
                .eq(StringUtils.isNotEmpty(containerType),Container::getContainerType,containerType)
mahuandong authored
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
                .ne(Container::getLocationCode, "")
                .eq(Container::getWarehouseCode, ShiroUtils.getWarehouseCode())
                .eq(Container::getEnable,true)
                .orderByDesc(Container::getId);

        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)){
            /*使用分页查询*/
            Page<Container> page = new Page<>(pageNum, pageSize);
            IPage<Container> iPage = containerService.page(page, lambdaQueryWrapper);
            return getMpDataTable(iPage.getRecords(), iPage.getTotal());
        } else {
            List<Container> list = containerService.list(lambdaQueryWrapper);
            return getDataTable(list);
        }
    }
144
145
146
147
148
149
150
151
152
153
154
155
    /**
     * 新增容器
     */
    @GetMapping("/add")
    public String add() {
        return prefix + "/add";
    }

    /**
     * 新增保存容器
     */
    @ApiOperation(value="新增容器", notes="根据容器类型、数量批量新增容器", httpMethod = "POST")
156
    @RequiresPermissions("config:container:add")
huhai authored
157
    @Log(title = "配置-库存资料-容器", operating = "新增容器", action = BusinessType.INSERT)
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
    @PostMapping("/add")
    @ResponseBody
    public AjaxResult addSave(
            @ApiParam(name = "containerType", value = "容器类型", required = true)String containerType,
            @ApiParam(name = "quantity", value = "数量", required = true)Integer quantity)  {
        AjaxResult result = containerService.insertContainer(containerType, quantity);
        result.setData(null);
        return result;
    }

    /**
     * 修改容器
     */
    @GetMapping("/edit/{id}")
    public String edit(@PathVariable("id") Integer id, ModelMap mmap) {
        Container container = containerService.getById(id);
        mmap.put("container", container);
        return prefix + "/edit";
    }

    /**
	 * 修改保存容器
	 */
    @ApiOperation(value="修改容器", notes="修改容器", httpMethod = "POST")
182
	@RequiresPermissions("config:container:edit")
huhai authored
183
	@Log(title = "配置-库存资料-容器", operating = "修改容器", action = BusinessType.UPDATE)
184
185
186
	@PostMapping("/edit")
	@ResponseBody
	public AjaxResult editSave(
游杰 authored
187
188
189
190
191
192
193
194
195
196
	        @ApiParam(name = "Container", value = "容器实体", required = true) Container container) {
        String locationCode = container.getLocationCode();
        if (StringUtils.isNotEmpty(locationCode)) {
            Location location =  locationService.getLocationByCode(locationCode);
            if (location == null) {
                return AjaxResult.error("库位编码输入错误");
            }
        }
        boolean success = containerService.updateById(container);
		return toAjax(success);
197
198
199
	}

    /**
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
     * 修改保存容器
     */
    @ApiOperation(value="修改容器", notes="修改容器", httpMethod = "POST")
    @RequiresPermissions("config:container:editCommonFlag")
    @Log(title = "配置-库存资料-容器", operating = "修改容器", action = BusinessType.UPDATE)
    @PostMapping("/editCommonFlag")
    @ResponseBody
    public AjaxResult editCommonFlag(Integer[] ids,int commonStatus) {
        containerService.updateContainerCommon(ids,commonStatus);
        return AjaxResult.success("成功");
    }

    /**
     * 修改容器
     */
    @GetMapping("/editCompany/{ids}")
    public String edit(@PathVariable("ids")Integer[] ids, ModelMap mmap) {
        mmap.put("idsId", ids);
        idsId=ids;
        return prefix + "/editCompany";
    }

    /**
     * 修改保存容器
     */
    @Log(title = "容器", action = BusinessType.UPDATE)
    @PostMapping("/editCompany")
    @ResponseBody
    public AjaxResult editCompany(Container container)
    {
        boolean ajax=false;
        for (Integer id: idsId) {
            if (id!=null) {
                Container containerById = containerService.getById(id);//查询容器进行修改

                //查询point
                Points points = new Points();
                points.setGoodsShelfNo(containerById.getGoodsShelfNo());
                points = pointsService.selectEntity(points);
                Company company1=new Company();
                company1.setCode(container.getCompanyCode());
                Company company = companyService.getByDomainOne(company1);//查询货主
                containerById.setCompanyCode(company.getCode());

                if(points != null&&StringUtils.isNotEmpty(containerById.getGoodsShelfNo())){
                    if(!points.getCompanyCode().equals(company.getCode()) || !points.getUWarehouseCode().equals(container.getUWarehouseCode())){
                        throw new ServiceException("货架仓库属性不匹配");
                    }
                }
249
250
251
252
253
                if(StringUtils.isNotEmpty(container.getUWarehouseCode())) {
                    String uwarehouseCode=container.getUWarehouseCode();
                    String[] str=uwarehouseCode.split(",");
                    container.setUWarehouseCode(str[str.length-1]);
                }
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
                containerById.setUWarehouseCode(container.getUWarehouseCode());
                ajax = containerService.updateById(containerById);
                InventoryDetail inventory =new InventoryDetail();
                inventory.setWarehouseCode(ShiroUtils.getWarehouseCode());
                inventory.setContainerCode(containerById.getCode());
                List<InventoryDetail> inventories = inventoryDetailService.selectListEntityByEqual(inventory);
                if(!inventories.isEmpty()){
                    for(InventoryDetail item :inventories) {
                        item.setCompanyCode(company.getCode());
                        item.setUWarehouseCode(container.getUWarehouseCode());
                        ajax=inventoryDetailService.updateById(item);
                    }
                }
            }
        }
        return toAjax(ajax);
    }

    /**
273
274
275
     * 删除容器
     */
    @ApiOperation(value="删除容器", notes="根据id批量删除容器,参数示例1,2,3", httpMethod = "POST")
276
    @RequiresPermissions("config:container:remove")
huhai authored
277
    @Log(title = "配置-库存资料-容器", operating = "删除容器", action = BusinessType.DELETE)
278
279
280
281
282
283
284
285
286
    @PostMapping( "/remove")
    @ResponseBody
    public AjaxResult remove(String ids) {
        if (StringUtils.isEmpty(ids)){
            return AjaxResult.error("id不能为空");
        }

        for (Integer id : Convert.toIntArray(ids)) {
            Container container = containerService.getById(id);
游杰 authored
287
288
            if (QuantityConstant.STATUS_CONTAINER_EMPTY.equals(container.getStatus())
                    && StringUtils.isEmpty(container.getLocationCode())) {
289
                container.setEnable(false);
290
291
292
293
294
295
296
297
                container.setLastUpdatedBy(ShiroUtils.getLoginName());
                containerService.updateById(container);
            } else {
                return AjaxResult.error("容器(" + container.getCode() + ")不是空,或者已在货架上,不能删除成功!");
            }
        }
        return AjaxResult.success("删除成功!");
    }
298
299
300
301

    @PostMapping("/importData")
    @ResponseBody
    public AjaxResult importData(MultipartFile file) throws Exception {
mahuandong authored
302
303
        ExcelUtil<Container> util = new ExcelUtil<>(Container.class);
        List<Container> containerList = util.importExcel(file.getInputStream());
304
305
        String operName = ShiroUtils.getLoginName();
        Boolean updateSupport = false;
huhai authored
306
        String message = containerService.importContainer(containerList, updateSupport, operName);
307
308
309
310
311
312
        return AjaxResult.success(message);
    }

    @GetMapping("/importTemplate")
    @ResponseBody
    public AjaxResult importTemplate() {
mahuandong authored
313
        ExcelUtil<Container> util = new ExcelUtil<>(Container.class);
314
315
        return util.importTemplateExcel("容器");
    }
wangyanxiong authored
316
317
318
    @RequiresPermissions("config:container:print")
huhai authored
319
    @Log(title = "配置-库存资料-容器条码", operating = "容器条码打印", action = BusinessType.OTHER)
wangyanxiong authored
320
    @GetMapping("/print/{ids}")
xumiao authored
321
    @Transactional(rollbackFor = Exception.class)
322
    public void print (@PathVariable("ids") Integer[] ids, ModelMap mmap)  // arg1:物料id arg2:会话对象不需要直接返回
wangyanxiong authored
323
    {
xumiao authored
324
325
326
327
328
329
330
        for(Integer id:ids){
            if(id != null) {
                Container container = containerService.getById(id);
                container.setPrintNum(2);
                containerService.updateById(container);
            }
        }
331
      print.jasperPrint(ids, prefix);// 不用返回json打印
wangyanxiong authored
332
    }
333
334
}