skyouc
22 小时以前 ebdfa825c07189b5f8e89f147d96d1bc612589db
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java
@@ -8,8 +8,13 @@
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.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.DeliveryItem;
import com.vincent.rsf.server.manager.entity.WkOrder;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import com.vincent.rsf.server.manager.enums.OrderType;
import com.vincent.rsf.server.manager.enums.OrderWorkType;
import com.vincent.rsf.server.common.annotation.OperationLog;
@@ -18,8 +23,6 @@
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
import com.vincent.rsf.server.manager.enums.AsnExceStatus;
import com.vincent.rsf.server.manager.service.OutStockItemService;
@@ -42,7 +45,6 @@
@RestController
@Api(tags = "出库单据")
public class OutStockController extends BaseController {
    Logger logger = LoggerFactory.getLogger(OutStockController.class);
    @Autowired
@@ -54,8 +56,19 @@
    @PostMapping("/outStock/page")
    public R page(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<AsnOrder, BaseParam> pageParam = new PageParam<>(baseParam, AsnOrder.class);
        QueryWrapper<AsnOrder> queryWrapper = pageParam.buildWrapper(true);
        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("/outStock/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));
@@ -64,7 +77,7 @@
    @PreAuthorize("hasAuthority('manager:outStock:list')")
    @PostMapping("/outStock/list")
    public R list(@RequestBody Map<String, Object> map) {
        return R.ok().add(outStockService.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getType, OrderType.ORDER_OUT.type)));
        return R.ok().add(outStockService.list(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getType, OrderType.ORDER_OUT.type)));
    }
    @PreAuthorize("hasAuthority('manager:outStock:list')")
@@ -84,39 +97,39 @@
    @OperationLog("Create 出库单据")
    @PostMapping("/outStock/save")
    @ApiOperation("保存")
    public R save(@RequestBody AsnOrder asnOrder) {
        asnOrder.setCreateBy(getLoginUserId())
    public R save(@RequestBody WkOrder wkOrder) {
        wkOrder.setCreateBy(getLoginUserId())
                .setUpdateBy(getLoginUserId());
        if (Objects.isNull(asnOrder.getCode())) {
            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, asnOrder);
        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」是未设置成功!!");
            }
            asnOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
            wkOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
                    .setCode(ruleCode);
        }
        if (!outStockService.save(asnOrder)) {
        if (!outStockService.save(wkOrder)) {
            return R.error("Save Fail");
        }
        return R.ok("Save Success").add(asnOrder);
        return R.ok("Save Success").add(wkOrder);
    }
    @PreAuthorize("hasAuthority('manager:outStock:update')")
    @OperationLog("Update ;出库单据")
    @PostMapping("/outStock/update")
    @ApiOperation("更新")
    public R update(@RequestBody AsnOrder asnOrder) {
        asnOrder.setType(OrderType.ORDER_OUT.type)
    public R update(@RequestBody WkOrder wkOrder) {
        wkOrder.setType(OrderType.ORDER_OUT.type)
                .setUpdateBy(getLoginUserId())
                .setUpdateTime(new Date());
        if (Objects.isNull(asnOrder.getCode())) {
            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, asnOrder);
            asnOrder.setCode(ruleCode);
        if (Objects.isNull(wkOrder.getCode())) {
            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_OUT_STOCK_CODE, wkOrder);
            wkOrder.setCode(ruleCode);
        }
        if (!outStockService.updateById(asnOrder)) {
        if (!outStockService.updateById(wkOrder)) {
            return R.error("Update Fail");
        }
        return R.ok("Update Success").add(asnOrder);
        return R.ok("Update Success").add(wkOrder);
    }
    @PreAuthorize("hasAuthority('manager:outStock:remove')")
@@ -134,9 +147,9 @@
    @ApiOperation("查询")
    public R query(@RequestParam(required = false) String condition) {
        List<KeyValVo> vos = new ArrayList<>();
        LambdaQueryWrapper<AsnOrder> wrapper = new LambdaQueryWrapper<>();
        LambdaQueryWrapper<WkOrder> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(AsnOrder::getCode, condition);
            wrapper.like(WkOrder::getCode, condition);
        }
        outStockService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
                item -> vos.add(new KeyValVo(item.getId(), item.getCode()))
@@ -154,16 +167,31 @@
        return outStockService.cancelOutOrder(id);
    }
    @PreAuthorize("hasAuthority('manager:outStock:update')")
    @ApiOperation("删除已生成明细")
    @GetMapping("/outStock/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:outStock:list')")
    @PostMapping("/outStock/export")
    @ApiOperation("导出")
    public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
        List<AsnOrder> orders = new ArrayList<>();
        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<AsnOrder>().in(AsnOrder::getId, ids));
                orders = outStockService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, ids));
            } else {
                orders = outStockService.list(new LambdaQueryWrapper<>());
            }
@@ -171,9 +199,9 @@
            orders = outStockService.list();
        }
        List<AsnOrderTemplate> orderTemplates = new ArrayList<>();
        for (AsnOrder order : orders) {
            List<AsnOrderItem> orderItems = outStockItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId()));
            for (AsnOrderItem item : orderItems) {
        for (WkOrder order : orders) {
            List<WkOrderItem> orderItems = outStockItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getAsnId, order.getId()));
            for (WkOrderItem item : orderItems) {
                if (Objects.isNull(item)) {
                    continue;
                }
@@ -204,19 +232,18 @@
        if (Objects.isNull(params.get("ids"))) {
            return R.error("参数不能为空!!");
        }
        List<Long> ids = (List<Long>) params.get("ids");
        return outStockService.genOutStock(ids, getLoginUserId());
        List<DeliveryItem> items = JSON.parseArray(JSONObject.toJSONString(params.get("ids")), DeliveryItem.class);
        return outStockService.genOutStock(items, getLoginUserId());
    }
    @PreAuthorize("hasAuthority('manager:outStock:update')")
    @ApiOperation("出库单生成波次")
    @PostMapping("/outStock/generate/wave")
    public R generateWave(@RequestBody Map<String, Object> params) {
    public R generateWave(@RequestBody GenWaveParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        List<Long> ids = (List<Long>) params.get("ids");
        return outStockService.generateWaves(ids);
        return outStockService.generateWaves(params);
    }
    @PostMapping("/outStock/items/save")
@@ -240,6 +267,7 @@
    }
    @PostMapping("/outStock/order/getOutTaskItems")
    @ApiOperation("出库单库位预览")
    @PreAuthorize("hasAuthority('manager:outStock:list')")
    public R getOrderOutTaskItem(@RequestBody OrderOutTaskParam param) {
        if (Cools.isEmpty(param)) {
@@ -265,11 +293,25 @@
        if (Objects.isNull(params.get("outId"))) {
            return R.error("出库参数不能为空!!");
        }
        List<OutStockToTaskParams> taskParams = JSONArray.parseArray(JSONArray.toJSONString(params.get("items")), OutStockToTaskParams.class);
        return  outStockService.genOutStockTask(taskParams, getLoginUserId(), Long.parseLong(params.get("outId").toString()));
        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("/outStock/tasks/sites")
    @ApiOperation("获取出库库口")
    @PreAuthorize("hasAuthority('manager:outStock:list')")
    public R getSiteNos() {
        return outStockService.getSiteNos();
    }
}