From 6a1343a69fac68c4259ceddbb037970461972c9e Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期一, 02 三月 2026 16:40:45 +0800
Subject: [PATCH] #备货单页面
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatPreparationController.java | 338 +++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 285 insertions(+), 53 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatPreparationController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatPreparationController.java
index 09194cd..9e416e6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatPreparationController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/MatPreparationController.java
@@ -1,96 +1,328 @@
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("缂栫爜瑙勫垯閿欒锛氱紪鐮併�孲YS_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();
}
}
--
Gitblit v1.9.1