| | |
| | | package com.vincent.rsf.server.manager.controller; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.vincent.rsf.framework.common.Cools; |
| | | import com.vincent.rsf.framework.common.R; |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import com.vincent.rsf.server.common.annotation.OperationLog; |
| | | import com.vincent.rsf.server.common.domain.BaseParam; |
| | | import com.vincent.rsf.server.common.domain.KeyValVo; |
| | | import com.vincent.rsf.server.common.domain.PageParam; |
| | | import com.vincent.rsf.server.common.utils.ExcelUtil; |
| | | import com.vincent.rsf.server.common.utils.FieldsUtils; |
| | | import com.vincent.rsf.server.manager.entity.Task; |
| | | import com.vincent.rsf.server.manager.entity.TaskItem; |
| | | import com.vincent.rsf.server.manager.entity.WkOrder; |
| | | import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; |
| | | import com.vincent.rsf.server.manager.controller.params.GenWaveParams; |
| | | import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; |
| | | import com.vincent.rsf.server.manager.controller.params.OutStockToTaskParams; |
| | | import com.vincent.rsf.server.manager.entity.*; |
| | | import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate; |
| | | import com.vincent.rsf.server.manager.enums.AsnExceStatus; |
| | | import com.vincent.rsf.server.manager.enums.OrderType; |
| | | import com.vincent.rsf.server.manager.enums.OrderWorkType; |
| | | import com.vincent.rsf.server.manager.service.OutStockItemService; |
| | | import com.vincent.rsf.server.manager.service.OutStockService; |
| | | import com.vincent.rsf.server.manager.service.TaskService; |
| | | import com.vincent.rsf.server.system.constant.SerialRuleCode; |
| | | import com.vincent.rsf.server.system.controller.BaseController; |
| | | import com.vincent.rsf.server.system.utils.SerialRuleUtils; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.security.access.prepost.PreAuthorize; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.util.*; |
| | | |
| | | @RestController |
| | | @Api(tags = "备料单") |
| | | public class MatPreparationController extends BaseController { |
| | | |
| | | Logger logger = LoggerFactory.getLogger(OutStockController.class); |
| | | @Autowired |
| | | private OutStockService outStockService; |
| | | @Autowired |
| | | private OutStockItemService outStockItemService; |
| | | |
| | | @Resource |
| | | private TaskService taskService; |
| | | |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | @PostMapping("/preparation/page") |
| | | public R page(@RequestBody Map<String, Object> map) { |
| | | |
| | | // JSONObject jsonObject = new JSONObject(map); |
| | | // jsonObject.put("orderCode", "BL25090927787678"); |
| | | // jsonObject.put("orderStatus", 1); |
| | | // jsonObject.put("orderTime", new Date()); |
| | | // jsonObject.put("anfme", 100); |
| | | // List<JSONObject> list = new ArrayList<>(); |
| | | // list.add(jsonObject); |
| | | // |
| | | // return R.ok().add(list); |
| | | |
| | | BaseParam baseParam = buildParam(map, BaseParam.class); |
| | | PageParam<Task, BaseParam> pageParam = new PageParam<>(baseParam, Task.class); |
| | | QueryWrapper<Task> queryWrapper = pageParam.buildWrapper(true); |
| | | return R.ok().add(taskService.page(pageParam, queryWrapper)); |
| | | PageParam<WkOrder, BaseParam> pageParam = new PageParam<>(baseParam, WkOrder.class); |
| | | QueryWrapper<WkOrder> queryWrapper = pageParam.buildWrapper(true); |
| | | // List<String> list = Arrays.asList(OrderType.ORDER_OUT.type); |
| | | // queryWrapper.in("type", list); |
| | | return R.ok().add(outStockService.page(pageParam, queryWrapper)); |
| | | } |
| | | |
| | | // @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | @PostMapping("/preparation/dialog/page") |
| | | public R dialogPage(@RequestBody Map<String, Object> map) { |
| | | BaseParam baseParam = buildParam(map, BaseParam.class); |
| | | PageParam<WkOrder, BaseParam> pageParam = new PageParam<>(baseParam, WkOrder.class); |
| | | QueryWrapper<WkOrder> queryWrapper = pageParam.buildWrapper(true); |
| | | List<String> list = Arrays.asList(OrderType.ORDER_OUT.type); |
| | | queryWrapper.in("type", list); |
| | | return R.ok().add(outStockService.page(pageParam, queryWrapper)); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | @PostMapping("/preparation/list") |
| | | public R list(@RequestBody Map<String, Object> map) { |
| | | return R.ok().add(outStockService.list(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getType, OrderType.ORDER_OUT.type))); |
| | | } |
| | | |
| | | return R.ok().add(taskService.list()); |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | @PostMapping({"/preparation/many/{ids}", "/asnOrders/many/{ids}"}) |
| | | public R many(@PathVariable Long[] ids) { |
| | | return R.ok().add(outStockService.listByIds(Arrays.asList(ids))); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | @OperationLog("表单查询") |
| | | @GetMapping("/preparation/{id}") |
| | | public R get(@PathVariable("id") Long id) { |
| | | return R.ok().add(outStockService.getById(id)); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:outStock:save')") |
| | | @OperationLog("Create 出库单据") |
| | | @PostMapping("/preparation/save") |
| | | @ApiOperation("保存") |
| | | public R save(@RequestBody WkOrder wkOrder) { |
| | | wkOrder.setCreateBy(getLoginUserId()) |
| | | .setUpdateBy(getLoginUserId()); |
| | | if (Objects.isNull(wkOrder.getCode())) { |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, wkOrder); |
| | | if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) { |
| | | return R.error("编码规则错误:编码「SYS_OUT_STOCK_CODE」是未设置成功!!"); |
| | | } |
| | | wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val) |
| | | .setCode(ruleCode); |
| | | } |
| | | if (!outStockService.save(wkOrder)) { |
| | | return R.error("Save Fail"); |
| | | } |
| | | return R.ok("Save Success").add(wkOrder); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:outStock:update')") |
| | | @OperationLog("Update ;出库单据") |
| | | @PostMapping("/preparation/update") |
| | | @ApiOperation("更新") |
| | | public R update(@RequestBody WkOrder wkOrder) { |
| | | wkOrder.setType(OrderType.ORDER_OUT.type) |
| | | .setUpdateBy(getLoginUserId()) |
| | | .setUpdateTime(new Date()); |
| | | if (Objects.isNull(wkOrder.getCode())) { |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, wkOrder); |
| | | wkOrder.setCode(ruleCode); |
| | | } |
| | | if (!outStockService.updateById(wkOrder)) { |
| | | return R.error("Update Fail"); |
| | | } |
| | | return R.ok("Update Success").add(wkOrder); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:outStock:remove')") |
| | | @OperationLog("Delete 出库单据") |
| | | @PostMapping("/preparation/remove/{ids}") |
| | | public R remove(@PathVariable Long[] ids) { |
| | | if (!outStockService.removeByIds(Arrays.asList(ids))) { |
| | | return R.error("Delete Fail"); |
| | | } |
| | | return R.ok("Delete Success").add(ids); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | @PostMapping("/preparation/query") |
| | | @ApiOperation("查询") |
| | | public R query(@RequestParam(required = false) String condition) { |
| | | List<KeyValVo> vos = new ArrayList<>(); |
| | | LambdaQueryWrapper<WkOrder> wrapper = new LambdaQueryWrapper<>(); |
| | | if (!Cools.isEmpty(condition)) { |
| | | wrapper.like(WkOrder::getCode, condition); |
| | | } |
| | | outStockService.page(new Page<>(1, 30), wrapper).getRecords().forEach( |
| | | item -> vos.add(new KeyValVo(item.getId(), item.getCode())) |
| | | ); |
| | | return R.ok().add(vos); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:outStock:update')") |
| | | @ApiOperation("取消出库单据") |
| | | @GetMapping("/preparation/cancel/{id}") |
| | | public R cancel(@PathVariable String id) { |
| | | if (Objects.isNull(id)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | return outStockService.cancelOutOrder(id); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:outStock:update')") |
| | | @ApiOperation("删除已生成明细") |
| | | @GetMapping("/preparation/items/cancel/{ids}") |
| | | public R cancel(@PathVariable Long[] ids) { |
| | | List<Long> list = Arrays.asList(ids); |
| | | if (list.isEmpty()) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | List<WkOrderItem> orderItems = outStockItemService.list(new LambdaQueryWrapper<WkOrderItem>().in(WkOrderItem::getId, list)); |
| | | if (orderItems.isEmpty()) { |
| | | throw new CoolException("单据明细不存在!!"); |
| | | } |
| | | return outStockService.cancelOutOrderByItems(orderItems); |
| | | } |
| | | |
| | | |
| | | // @PreAuthorize("hasAuthority('manager:taskItem:list')") |
| | | @PostMapping("/preparationItem/page") |
| | | public R itemPage(@RequestBody Map<String, Object> map) { |
| | | // BaseParam baseParam = buildParam(map, BaseParam.class); |
| | | // PageParam<TaskItem, BaseParam> pageParam = new PageParam<>(baseParam, TaskItem.class); |
| | | // /**拼接扩展字段*/ |
| | | // PageParam<TaskItem, BaseParam> page = taskItemService.page(pageParam, pageParam.buildWrapper(true)); |
| | | // List<TaskItem> records = page.getRecords(); |
| | | // for (TaskItem record : records) { |
| | | // if (!Objects.isNull(record.getFieldsIndex())) { |
| | | // Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex()); |
| | | // record.setExtendFields(fields); |
| | | // } |
| | | // } |
| | | // page.setRecords(records); |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | @PostMapping("/preparation/export") |
| | | @ApiOperation("导出") |
| | | public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { |
| | | List<WkOrder> orders = new ArrayList<>(); |
| | | if (!Objects.isNull(map.get("ids"))) { |
| | | List<Long> ids = JSONArray.parseArray(JSONObject.toJSONString(map.get("ids")), Long.class); |
| | | if (!ids.isEmpty()) { |
| | | orders = outStockService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, ids)); |
| | | } else { |
| | | orders = outStockService.list(new LambdaQueryWrapper<>()); |
| | | } |
| | | } else { |
| | | orders = outStockService.list(); |
| | | } |
| | | List<AsnOrderTemplate> orderTemplates = new ArrayList<>(); |
| | | for (WkOrder order : orders) { |
| | | List<WkOrderItem> orderItems = outStockItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId())); |
| | | for (WkOrderItem item : orderItems) { |
| | | if (Objects.isNull(item)) { |
| | | continue; |
| | | } |
| | | AsnOrderTemplate template = new AsnOrderTemplate(); |
| | | template.setCode(order.getCode()) |
| | | .setType(OrderType.getValType(order.getType())) |
| | | .setWkType(OrderWorkType.getWorkDesc(order.getWkType())) |
| | | .setAnfme(item.getAnfme() + "") |
| | | .setMaktx(item.getMaktx()) |
| | | .setMemo(item.getMemo()) |
| | | .setMatnrCode(item.getMatnrCode()) |
| | | .setPoCode(item.getPoCode()) |
| | | .setSplrName(item.getSplrName()) |
| | | .setPlatItemId(item.getPlatItemId()) |
| | | .setSplrBatch(item.getSplrBatch()) |
| | | .setSplrCode(item.getSplrCode()); |
| | | orderTemplates.add(template); |
| | | } |
| | | } |
| | | ExcelUtil.build(ExcelUtil.create(orderTemplates, AsnOrderTemplate.class), response); |
| | | } |
| | | |
| | | |
| | | JSONObject jsonObject = new JSONObject(map); |
| | | jsonObject.put("matnrCode", "BL25090927787678"); |
| | | jsonObject.put("maktx", "拉杆"); |
| | | jsonObject.put("unit", "个"); |
| | | jsonObject.put("spec", "铝合金 银色"); |
| | | jsonObject.put("model", "大"); |
| | | jsonObject.put("anfme", 100); |
| | | jsonObject.put("workQty", 60); |
| | | jsonObject.put("status", 11); |
| | | List<JSONObject> list = new ArrayList<>(); |
| | | list.add(jsonObject); |
| | | return R.ok().add(list); |
| | | @PreAuthorize("hasAuthority('manager:outStock:update')") |
| | | @ApiOperation("通过DO单生成出库单") |
| | | @PostMapping("/preparation/generate/orders") |
| | | public R genOutStock(@RequestBody Map<String, Object> params) { |
| | | if (Objects.isNull(params.get("ids"))) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | List<DeliveryItem> items = JSON.parseArray(JSONObject.toJSONString(params.get("ids")), DeliveryItem.class); |
| | | return outStockService.genOutStock(items, getLoginUserId()); |
| | | } |
| | | |
| | | @PreAuthorize("hasAuthority('manager:outStock:update')") |
| | | @ApiOperation("出库单生成波次") |
| | | @PostMapping("/preparation/generate/wave") |
| | | public R generateWave(@RequestBody GenWaveParams params) { |
| | | if (Objects.isNull(params)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | return outStockService.generateWaves(params); |
| | | } |
| | | |
| | | @PostMapping("/preparation/items/save") |
| | | @ApiOperation("保存主单及明细") |
| | | @PreAuthorize("hasAuthority('manager:outStock:save')") |
| | | public R saveOutStock(@RequestBody AsnOrderAndItemsParams params) throws Exception { |
| | | if (Objects.isNull(params)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | return outStockService.saveOutStock(params, getLoginUserId()); |
| | | } |
| | | |
| | | @GetMapping("/preparation/complete/{id}") |
| | | @ApiOperation("完成出库单") |
| | | @PreAuthorize("hasAuthority('manager:outStock:update')") |
| | | public R complete(@PathVariable Long id) { |
| | | if (Objects.isNull(id)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | return outStockService.completeOutOrderById(id); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("单据信息修改") |
| | | @PostMapping("/preparation/items/update") |
| | | @PreAuthorize("hasAuthority('manager:outStock:update')") |
| | | public R orderAndrItemUpdate(@RequestBody AsnOrderAndItemsParams params) throws Exception { |
| | | if (Objects.isNull(params)) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | return outStockService.updateOrderItem(params, getLoginUserId()); |
| | | } |
| | | |
| | | @PostMapping("/preparation/order/getOutTaskItems") |
| | | @ApiOperation("出库单库位预览") |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | public R getOrderOutTaskItem(@RequestBody OrderOutTaskParam param) { |
| | | if (Cools.isEmpty(param)) { |
| | | return R.error("参数不能为空"); |
| | | } |
| | | |
| | | return outStockService.getOrderOutTaskItem(param); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 出库单生成出库任务 |
| | | * @param params |
| | | * @return |
| | | */ |
| | | @PostMapping("/preparation/generate/tasks") |
| | | @ApiOperation("出库单生成出库任务") |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | public R genOutStockTask( @RequestBody Map<String, Object> params) { |
| | | if (Cools.isEmpty()) { |
| | | return R.error("参数不能为空!!"); |
| | | } |
| | | if (Objects.isNull(params.get("outId"))) { |
| | | return R.error("出库参数不能为空!!"); |
| | | } |
| | | List<OutStockToTaskParams> taskParams = JSONArray.parseArray(JSONArray.toJSONString(params.get("items")), OutStockToTaskParams.class); |
| | | List<OutStockToTaskParams> tasks = new ArrayList<>(); |
| | | for (OutStockToTaskParams taskParam : taskParams) { |
| | | if (StringUtils.isNotBlank(taskParam.getLocCode())) { |
| | | tasks.add(taskParam); |
| | | } |
| | | } |
| | | return outStockService.genOutStockTask(tasks, getLoginUserId(), Long.parseLong(params.get("outId").toString())); |
| | | } |
| | | |
| | | /** |
| | | * 获取出库站点 |
| | | * @return |
| | | */ |
| | | @GetMapping("/preparation/tasks/sites") |
| | | @ApiOperation("获取出库库口") |
| | | @PreAuthorize("hasAuthority('manager:outStock:list')") |
| | | public R getSiteNos() { |
| | | return outStockService.getSiteNos(); |
| | | } |
| | | |
| | | } |