wangxinhui
2026-02-10 25d4333015921e7a2445564e7099c1503e0a2eac
更新回库异常处理操作
已添加2个文件
已删除1个文件
已修改7个文件
232 ■■■■■ 文件已修改
项目代码/WMS/WMSClient/config/buttons.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSClient/src/extension/stock/extend/manualOut.vue 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSClient/src/extension/stock/extend/manualStock.vue 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSClient/src/extension/stock/stockInfo.js 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/技术协议/副本机台位置清单1229.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/接口协议/博思通利拓接口.V1.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/接口协议/博斯通利拓接口.V2.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/WMS/WMSClient/config/buttons.js
@@ -218,6 +218,16 @@
    onClick: function () {
    }
}
,
{
    name: "手动107请求",
    icon: '',
    class: '',
    value: 'ManualStock',
    type: 'success',
    onClick: function () {
    }
}
]
export default buttons
ÏîÄ¿´úÂë/WMS/WMSClient/src/extension/stock/extend/manualOut.vue
ÏîÄ¿´úÂë/WMS/WMSClient/src/extension/stock/extend/manualStock.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,191 @@
<template>
    <div>
      <vol-box
        v-model="showDetialBox"
        :lazy="true"
        width="600px"
        :padding="15"
        title="手动107请求"
      >
        <div style="margin-bottom: 20px;">
            èŽ·å–åˆ°çº¸å·æ¡ç æŸ¥è¯¢ERP库存
            <br>
            <br>
            <el-input
                v-model="requestBarCode"
                style="width: 180px"
                label="纸卷条码"
              ></el-input>
              &nbsp;&nbsp;
            <el-descriptions title="ERP库存" v-if="showStock">
                <el-descriptions-item label="重量">{{ searchStock.weight ? searchStock.weight : "无库存"}}</el-descriptions-item>
                <el-descriptions-item label="直径">{{ searchStock.thicknes ? searchStock.thicknes : "无库存" }}</el-descriptions-item>
                <el-descriptions-item label="幅宽">{{ searchStock.wide ?  searchStock.wide : "无库存"}}</el-descriptions-item>
            </el-descriptions>
            <el-button type="primary" size="small" @click="search">查询</el-button>
        </div>
        <div>
          <el-form>
            <el-form-item label="请输RFID:"
              ><el-input
                v-model="requestStock.rfId"
                style="width: 180px"
                label="请输RFID"
              ></el-input>
            </el-form-item>
            <el-form-item label="请输重量:"
              ><el-input
                v-model="requestStock.weight"
                style="width: 180px"
                label="请输重量"
              ></el-input>
            </el-form-item>
            <el-form-item label="请输直径:"
              ><el-input
                v-model="requestStock.thicknes"
                style="width: 180px"
                label="请输直径"
              ></el-input>
            </el-form-item>
            <el-form-item label="请输幅宽:"
              ><el-input
                v-model="requestStock.wide"
                style="width: 180px"
                label="请输幅宽"
              ></el-input>
            </el-form-item>
          </el-form>
        </div>
        <template #footer>
          <el-button type="primary" size="small" @click="submit">确认</el-button>
          <el-button type="danger" size="small" @click="close">关闭</el-button>
        </template>
      </vol-box>
    </div>
  </template>
      <script>
  import VolBox from "@/components/basic/VolBox.vue";
  export default {
    components: { VolBox },
    data() {
      return {
        showDetialBox: false,
        showStock: false,
        requestBarCode:null,
        searchStock: {
          weight: null,
          thicknes: null,
          wide: null
        },
        requestStock: {
          rfId: null,
          weight: null,
          thicknes: null,
          wide: null
        },
      };
    },
    methods: {
      open() {
        this.showDetialBox = true;
      },
      close() {
        this.showDetialBox = false;
        this.requestStock = {
          rfId: null,
          weight: null,
          thicknes: null,
          wide: null
        };
        this.showStock = false;
        this.requestBarCode = null;
        this.searchStock = {
          weight: null,
          thicknes: null,
          wide: null
        };
      },
      search(){
        this.http
          .post(
            "api/ERPBST/BSTStockAsync?barCode=" + this.requestBarCode,
            null,
            "数据处理中"
          )
          .then((x) => {
            if(x.code==200){
                this.showStock = true;
                this.searchStock.weight= x.data.qty ==0 ? null:x.data.qty;
                this.searchStock.thicknes= x.data.thick ==0 ? null:x.data.thick;
                this.searchStock.wide= x.data.w  ==0 ? null:x.data.w;
                console.log(this.searchStock);
            }else{
                this.$message.error(x.message);
            }
          });
      },
      submit() {
        if (this.showStock == false) return this.$message.error("请先查询ERP库存");
        if (this.requestStock.rfId == null) return this.$message.error("请输入RFID");
        if (this.requestStock.weight == null) return this.$message.error("请输入重量");
        if (this.requestStock.thicknes == null) return this.$message.error("请输入直径");
        if (this.requestStock.wide == null) return this.$message.error("请输入幅宽");
        this.http
          .post(
            "api/Task/YLPurchaseBoxing?palletCode=" + this.requestStock.rfId + "&weight=" + this.requestStock.weight + "&thickness=" + this.requestStock.thicknes + "&wide=" + this.requestStock.wide+ "&stationCode=107",
            null,
            "数据处理中"
          )
          .then((x) => {
            if (!x.status) return this.$message.error(x.message);
            this.$message.success("操作成功");
            this.$parent.refresh();
            this.close();
          });
      },
    },
    created() {},
  };
  </script>
      <style scoped>
  .el-col {
    border-radius: 4px;
  }
  .grid-content {
    border-radius: 4px;
    min-height: 36px;
  }
  .content-text {
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .right-text {
    display: flex;
    align-items: center;
    justify-content: flex-end;
  }
  </style>
      <style>
  .el-table .warning-row {
    background: #e6a23c;
  }
  .el-table .success-row {
    background: #f0f9eb;
  }
  .el-table .error-row {
    background: #f56c6c;
  }
  canvas {
    display: block;
    margin: auto;
  }
  </style>
ÏîÄ¿´úÂë/WMS/WMSClient/src/extension/stock/stockInfo.js
@@ -1,10 +1,10 @@
//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
import gridHeader from './extend/manualStock.vue'
let extension = {
    components: {
      //查询界面扩展组件
      gridHeader: '',
      gridHeader: gridHeader,
      gridBody: '',
      gridFooter: '',
      //新建、编辑弹出框扩展组件
@@ -41,6 +41,12 @@
            });
          }
        }
        let manualStock = this.buttons.find(x => x.value == 'ManualStock');
        if (manualStock) {
          manualStock.onClick = function () {
            this.$refs.gridHeader.open();
          }
        }
      },
      onInited() {
        //框架初始化配置后
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_StockService/StockInfoService.cs
@@ -155,11 +155,12 @@
                    BSTResponse<BSTStockInfoDTO> bSTResponse = _invokeERPService.BSTStockAsync(item.PalletCode).DeserializeObject<BSTResponse<BSTStockInfoDTO>>();
                    if (bSTResponse.Code == 500)
                    {
                        content.Message += $"条码{item.PalletCode}一期ERP库存不存在,";
                        stockInfosDel.Add(item);
                        content.Message += $"条码{item.PalletCode}一期ERP库存已不存在,";
                        continue;
                    }
                    BSTStockInfoDTO bSTStockInfoDTO = bSTResponse.Data ?? throw new Exception($"一期ERP未返回{item.PalletCode}的库存信息");
                    if (item.StockLength != bSTStockInfoDTO.StockMeter && bSTStockInfoDTO.StockMeter>0)
                    if (item.StockLength != bSTStockInfoDTO.StockMeter)
                    {
                        item.MaterielThickness = bSTStockInfoDTO.Thick;
                        item.MaterielWeight = bSTStockInfoDTO.Qty;
@@ -167,10 +168,6 @@
                        item.Remark = $"{item.StockLength}-{bSTStockInfoDTO.StockMeter}";
                        item.StockLength = bSTStockInfoDTO.StockMeter;
                        stockInfosUp.Add(item);
                    }
                    else if(item.StockLength != bSTStockInfoDTO.StockMeter && bSTStockInfoDTO.StockMeter == 0)
                    {
                        stockInfosDel.Add(item);
                    }
                }
                //数据库操作
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -21,6 +21,7 @@
using WIDESEA_Common.TaskEnum;
using WIDESEA_Common.WareHouseEnum;
using WIDESEA_Core;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
using WIDESEA_DTO.Basic;
@@ -229,6 +230,11 @@
                        _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfoOld, oldQty, oldQty < stockInfoOld.StockLength ? stockInfoOld.StockLength- oldQty: oldQty- stockInfoOld.StockLength, StockChangeTypeEnum.MaterielGroup);
                        return content.OK($"老厂领料退库RFID{stockInfoOld.RfidCode}条码{stockInfoOld.PalletCode}");
                    }
                    else if (stockInfoOld != null && stockInfoOld.MaterielInvOrgId == MaterielInvOrgEnum.老厂.ObjToInt() && stockInfoOld.StockStatus == StockStatusEmun.出库完成.ObjToInt() && stockInfoOld.StockLength<=0 && stationCode.IsNullOrEmpty())
                    {
                        _stockRepository.StockInfoRepository.DeleteAndMoveIntoHty(stockInfoOld, App.User.UserId > 0 ? OperateTypeEnum.人工完成 : OperateTypeEnum.自动完成);
                        throw new Exception($"{palletCode}RFID信息老厂领料后无库存退料");
                    }
                    else if (stockInfoOld != null)
                    {
                        throw new Exception($"{palletCode}RFID信息已存在");
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_WMSServer/Controllers/ERP/ErpBSTController.cs
@@ -81,7 +81,7 @@
        /// æŽ¥æ”¶ä¸€æœŸç”Ÿç®¡æŽ’程信息
        /// </summary>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("ReceiveOutOrder")]
        [HttpPost, HttpGet, Route("ReceiveOutOrder"), AllowAnonymous]
        public WebResponseContent AddOutSGOrder([FromBody] List<SGOutOrderDTO> outOrderDTOs)
        {
            return _taskService.AddOutSGOrder(outOrderDTOs);
@@ -91,7 +91,7 @@
        /// æŽ¥æ”¶åšæ€é€šé¢†æ–™ä¿¡æ¯
        /// </summary>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("ReceivePicking")]
        [HttpPost, HttpGet, Route("ReceivePicking"), AllowAnonymous]
        public WebResponseContent ReceivePicking([FromBody] List<BSTPickInfoDTO> bSTPickInfoDTOs)
        {
            return _taskService.ReceivePicking(bSTPickInfoDTOs);
@@ -101,7 +101,7 @@
        /// æŽ¥æ”¶åšæ€é€šé€€æ–™ä¿¡æ¯
        /// </summary>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("ReceiveReturnOrder")]
        [HttpPost, HttpGet, Route("ReceiveReturnOrder"), AllowAnonymous]
        public WebResponseContent ReceiveReturnOrder([FromBody] List<BSTReturnOrderDTO> bSTReturnOrderDTOs)
        {
            return _returnBSTOrderService.ReceiveReturnOrder(bSTReturnOrderDTOs);
ÏîÄ¿×ÊÁÏ/¼¼ÊõЭÒé/¸±±¾»ų́λÖÃÇåµ¥1229.xlsx
Binary files differ
ÏîÄ¿×ÊÁÏ/½Ó¿ÚЭÒé/²©Ë¼Í¨ÀûÍØ½Ó¿Ú.V1.xlsx
Binary files differ
ÏîÄ¿×ÊÁÏ/½Ó¿ÚЭÒé/²©Ë¹Í¨ÀûÍØ½Ó¿Ú.V2.xlsx
Binary files differ