1
hutongqing
2024-12-12 2510ff614cd2962d2a91ec1a9eb6668009e9b671
1
已删除4个文件
已修改28个文件
已添加7个文件
已重命名4个文件
730 ■■■■ 文件已修改
代码管理/WMS/WIDESEA_WMSClient/src/assets/imgs/wcs_x.png 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/extension/basic/extend/GetLocationStatus.vue 483 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/Index.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSClient/src/views/index/Message.vue 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/09f72f2c-b273-4279-b316-3cd115d14817.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/17995e9c-2ddd-48c7-bbd9-eada1e6c4f48.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/789398d4-ad10-4b21-9f9c-c017ed2e4aa0.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/914d9c3f-57db-4637-bc40-52081424fde2.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d7105167-5efc-465c-b440-fa7c68170e72.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d98d9afe-9e7d-42bb-a74d-be4c0981ccda.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/eef0aa91-791e-44dd-b321-3146cf9e9a18.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/f24c70fa-e22c-4a39-92fe-e726fb794d24.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/f91e73eb-1823-4174-b99b-0eb163ec64f8.vsidx 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_ApprovalService/ApprovalTaskService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IApprovalService/IApprovalTaskService.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrder_HtyService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/LocationStatusChangeRecordService.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/StockQuantityChangeRecordService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/LocationStatusChangeRecordService.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfoService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfo_HtyService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Approval/ApprovalTaskController.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Record/LocationStatusChangeRecordController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutofacPropertityModuleReg.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/接口文档/MES业务流程图V1.0.vsdx 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/接口文档/MES业务流程图V1.0.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/assets/imgs/wcs_x.png
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/extension/basic/extend/GetLocationStatus.vue
@@ -1,261 +1,292 @@
<template>
    <div>
        <vol-box v-model="showDetialBox" :lazy="true" width="1500px" :padding="15" title="入库单据明细">
            <div class="box-table" style="margin-top: 1%">
                <el-table ref="singleTable" :data="tableData" style="width: 100%; height: 100%" highlight-current-row
                    @row-click="handleRowClick" height="500px" @selection-change="handleSelectionChange">
                    >
                    <el-table-column type="selection" width="55"> </el-table-column>
                    <el-table-column label="序号" type="index" fixed="left" width="55" align="center"></el-table-column>
                    <el-table-column v-for="(item, index) in tableColumns.filter((x) => !x.hidden)" :key="index"
                        :prop="item.field" :label="item.title" :width="item.width" align="center">
                        <template #default="scoped">
                            <div v-if="item.type == 'icon'">
                                <el-tooltip class="item" effect="dark" :content="item.title"
                                    placement="bottom"><el-button type="text"
                                        @click="tableButtonClick(scoped.row, item)"><i :class="item.icon"
                                            style="font-size: 22px"></i></el-button></el-tooltip>
                            </div>
                            <div v-else-if="item.type == 'tag'">
                                <el-tag size="small">
                                    {{ getDictionary(scoped.row, item) }}
                                </el-tag>
                            </div>
                        </template>
                    </el-table-column>
                </el-table>
            </div>
        </vol-box>
    </div>
  <div>
    <vol-box
      v-model="showDetialBox"
      :lazy="true"
      width="1500px"
      :padding="15"
      title="货位状态变动记录"
    >
      <div class="box-table" style="margin-top: 1%">
        <el-table
          ref="singleTable"
          :data="tableData"
          style="width: 100%; height: 100%"
          highlight-current-row
          @row-click="handleRowClick"
          height="500px"
          @selection-change="handleSelectionChange"
        >
          >
          <!-- <el-table-column type="selection" width="55"> </el-table-column> -->
          <el-table-column
            label="序号"
            type="index"
            fixed="left"
            width="55"
            align="center"
          ></el-table-column>
          <el-table-column
            v-for="(item, index) in tableColumns.filter((x) => !x.hidden)"
            :key="index"
            :prop="item.field"
            :label="item.title"
            :width="item.width"
            align="center"
          >
            <template #default="scoped">
              <div v-if="item.type == 'icon'">
                <el-tooltip
                  class="item"
                  effect="dark"
                  :content="item.title"
                  placement="bottom"
                  ><el-button
                    type="text"
                    @click="tableButtonClick(scoped.row, item)"
                    ><i
                      :class="item.icon"
                      style="font-size: 22px"
                    ></i></el-button
                ></el-tooltip>
              </div>
              <div v-else-if="item.type == 'tag'">
                <el-tag size="small">
                  {{ getDictionary(scoped.row, item) }}
                </el-tag>
              </div>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </vol-box>
  </div>
</template>
<script>
import VolBox from "@/components/basic/VolBox.vue";
export default {
    components: { VolBox },
    data() {
        return {
            showDetialBox: false,
            row: null,
            tableData: [],
            tableColumns: [
                {
                    field: "locationId",
                    title: "货位主键",
                    type: "string",
                    width: 90,
                    align: "left",
                },
                {
                    field: "locationCode",
                    title: "货位编号",
                    type: "string",
                    width: 160,
                    align: "left",
                },
                {
                    field: "beforeStatus",
                    title: "变动前货位状态",
                    type: "tag",
                    width: 150,
                    align: "left",
                    bindKey: "locationStatusEnum"
                },
                {
                    field: "afterStatus",
                    title: "变动后货位状态",
                    type: "tag",
                    width: 150,
                    align: "left",
                    bindKey: "locationStatusEnum"
                },
                {
                    field: "changeType",
                    title: "变动类型",
                    type: "tag",
                    width: 100,
                    align: "left",
                    bindKey: "stockChangeType",
                },
                {
                    field: "orderId",
                    title: "单据主键",
                    type: "string",
                    width: 90,
                    align: "left",
                    hidden: true,
                },
                {
                    field: "orderNo",
                    title: "单据编号",
                    type: "int",
                    width: 160,
                    align: "left",
                },
                {
                    field: "orderDetailId",
                    title: "单据明细主键",
                    type: "string",
                    width: 200,
                    align: "left",
                    hidden: true,
                },
                {
                    field: "taskNum",
                    title: "任务号",
                    type: "string",
                    width: 180,
                    align: "left",
                },
                {
                    field: "creater",
                    title: "创建人",
                    type: "string",
                    width: 90,
                    align: "left",
                },
                {
                    field: "createDate",
                    title: "创建时间",
                    type: "datetime",
                    width: 160,
                    align: "left",
                    sort: true,
                },
                {
                    field: "modifier",
                    title: "修改人",
                    type: "string",
                    width: 100,
                    align: "left",
                    hidden: true,
                },
                {
                    field: "modifyDate",
                    title: "修改时间",
                    type: "datetime",
                    width: 160,
                    align: "left",
                    hidden: true,
                    sort: true,
                },
                {
                    field: "remark",
                    title: "备注",
                    type: "string",
                    width: 100,
                    align: "left",
                    hidden: true,
                },
            ],
            paginations: {
                sort: "CreateDate",
                order: "desc",
                Foots: "",
                total: 0,
                // 2020.08.29增加自定义分页条大小
                sizes: [30, 60, 100, 120],
                size: 30, // é»˜è®¤åˆ†é¡µå¤§å°
                Wheres: [],
                page: 1,
                rows: 30,
            },
            dictionaryList: null,
        };
  components: { VolBox },
  data() {
    return {
      showDetialBox: false,
      row: null,
      tableData: [],
      tableColumns: [
        {
          field: "locationId",
          title: "货位主键",
          type: "string",
          width: 90,
          align: "left",
        },
        {
          field: "locationCode",
          title: "货位编号",
          type: "string",
          align: "left",
        },
        {
          field: "beforeStatus",
          title: "变动前货位状态",
          type: "tag",
          width: 150,
          align: "left",
          bindKey: "locationStatusEnum",
        },
        {
          field: "afterStatus",
          title: "变动后货位状态",
          type: "tag",
          width: 150,
          align: "left",
          bindKey: "locationStatusEnum",
        },
        {
          field: "changeType",
          title: "变动类型",
          type: "tag",
          width: 100,
          align: "left",
          bindKey: "locationChangeType",
        },
        {
          field: "orderId",
          title: "单据主键",
          type: "string",
          width: 90,
          align: "left",
          hidden: true,
        },
        {
          field: "orderNo",
          title: "单据编号",
          type: "int",
          width: 160,
          align: "left",
        },
        {
          field: "orderDetailId",
          title: "单据明细主键",
          type: "string",
          width: 200,
          align: "left",
          hidden: true,
        },
        {
          field: "taskNum",
          title: "任务号",
          type: "string",
          width: 180,
          align: "left",
        },
        {
          field: "creater",
          title: "创建人",
          type: "string",
          width: 90,
          align: "left",
        },
        {
          field: "createDate",
          title: "创建时间",
          type: "datetime",
          width: 160,
          align: "left",
          sort: true,
        },
        {
          field: "modifier",
          title: "修改人",
          type: "string",
          width: 100,
          align: "left",
          hidden: true,
        },
        {
          field: "modifyDate",
          title: "修改时间",
          type: "datetime",
          width: 160,
          align: "left",
          hidden: true,
          sort: true,
        },
        {
          field: "remark",
          title: "备注",
          type: "string",
          width: 100,
          align: "left",
          hidden: true,
        },
      ],
      paginations: {
        sort: "CreateDate",
        order: "desc",
        Foots: "",
        total: 0,
        // 2020.08.29增加自定义分页条大小
        sizes: [30, 60, 100, 120],
        size: 30, // é»˜è®¤åˆ†é¡µå¤§å°
        Wheres: [],
        page: 1,
        rows: 30,
      },
      dictionaryList: null,
    };
  },
  methods: {
    open(row) {
      this.row = row;
      this.showDetialBox = true;
      this.getDetailData();
      this.getDictionaryData();
    },
    methods: {
        open(row) {
            this.row = row;
            this.showDetialBox = true;
            this.getDetailData();
            this.getDictionaryData();
        },
        getDetailData() {
            this.http
                .post(
                    "/api/LocationStatusChangeRecord/GetLocationState?id=" + this.row.id,
                    {},
                    true
                )
                .then((x) => {
                    if (!x.status) return this.$message.error(x.message);
                    this.tableData = x.data;
                });
        },
        getDictionaryData() {
            if (this.dictionaryList) {
                return;
            }
            var param = [];
            this.tableColumns.forEach((x) => {
                if (x.type == "tag" && x.bindKey != "") {
                    param.push(x.bindKey);
                }
            });
            this.http
                .post("api/Sys_Dictionary/GetVueDictionary", param, "查询中")
                .then((x) => {
                    if (x.length > 0) {
                        this.dictionaryList = x;
                    }
                });
        },
        getDictionary(row, column) {
            if (this.dictionaryList) {
                var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
                if (item) {
                    var dicItem = item.data.find((x) => x.key == row[column.field]);
                    console.log(dicItem);
                    if (dicItem) {
                        return dicItem.value;
                    }
                    else {
                        return row[column.field];
                    }
                } else {
                    return row[column.field];
                }
            }
        },
    getDetailData() {
      this.http
        .post(
          "/api/LocationStatusChangeRecord/GetLocationState?id=" + this.row.id,
          {},
          true
        )
        .then((x) => {
          if (!x.status) return this.$message.error(x.message);
          this.tableData = x.data;
        });
    },
    getDictionaryData() {
      if (this.dictionaryList) {
        return;
      }
      var param = [];
      this.tableColumns.forEach((x) => {
        if (x.type == "tag" && x.bindKey != "") {
          param.push(x.bindKey);
        }
      });
      this.http
        .post("api/Sys_Dictionary/GetVueDictionary", param, "查询中")
        .then((x) => {
          if (x.length > 0) {
            this.dictionaryList = x;
          }
        });
    },
    getDictionary(row, column) {
      if (this.dictionaryList) {
        var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
        if (item) {
          var dicItem = item.data.find((x) => x.key == row[column.field]);
          console.log(dicItem);
          if (dicItem) {
            return dicItem.value;
          } else {
            return row[column.field];
          }
        } else {
          return row[column.field];
        }
      }
    },
  },
    created() { },
  created() {},
};
</script>
<style scoped>
.el-col {
    border-radius: 4px;
  border-radius: 4px;
}
.grid-content {
    border-radius: 4px;
    min-height: 36px;
  border-radius: 4px;
  min-height: 36px;
}
.content-text {
    display: flex;
    align-items: center;
    justify-content: center;
  display: flex;
  align-items: center;
  justify-content: center;
}
.right-text {
    display: flex;
    align-items: center;
    justify-content: flex-end;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}
</style>
<style>
.el-table .warning-row {
    background: #e6a23c;
  background: #e6a23c;
}
.el-table .success-row {
    background: #f0f9eb;
  background: #f0f9eb;
}
.el-table .error-row {
    background: #f56c6c;
  background: #f56c6c;
}
</style>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/Index.vue
@@ -214,7 +214,7 @@
  watch,
  onMounted,
  getCurrentInstance,
  h
  h,
} from "vue";
import { useRouter, useRoute } from "vue-router";
import store from "../store/index";
@@ -319,6 +319,7 @@
      ElNotification({
        title: data.title,
        message: h("i", { style: "color: teal" }, data.message),
        position: "bottom-right",
      });
    };
@@ -338,9 +339,7 @@
        setTimeout(createSocket, 10000);
      };
      client.onerror = function () {
      };
      client.onerror = function () {};
    };
    const changeTheme = (name) => {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSClient/src/views/index/Message.vue
@@ -4,41 +4,46 @@
      <div class="title">{{ item.title }}({{ item.date }})</div>
      <div class="content">
        <el-row>
          <el-col :span="6">
          <el-col :span="8">
            <label>收货单号:{{ item.formData.receiveOrderNo }}</label>
          </el-col>
          <el-col :span="6">
          <el-col :span="8">
            <label>质检单号:{{ item.formData.checkOrderNo }}</label>
          </el-col>
          <el-col :span="6">
          <el-col :span="8">
            <label>收货明细行号:{{ item.formData.receiveDetailRowNo }}</label>
          </el-col>
          <el-col :span="6">
        </el-row>
        <el-row>
          <el-col :span="8">
            <label>物料编号:{{ item.formData.materielCode }}</label>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="6">
          <el-col :span="8">
            <label>合格数量:{{ item.formData.qualifiedQuantity }}</label>
          </el-col>
          <el-col :span="6">
          <el-col :span="8">
            <label>特采数量:{{ item.formData.defectedQuantity }}</label>
          </el-col>
          <el-col :span="6">
        </el-row>
        <el-row>
          <el-col :span="8">
            <label>退货数量:{{ item.formData.returnQuantity }}</label>
          </el-col>
          <el-col :span="6">
          <el-col :span="8">
            <label>报废数量:{{ item.formData.scrappedQuantity }}</label>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="6">
          <el-col :span="8">
            <label>质检总数:{{ item.formData.receivedQuantity }}</label>
          </el-col>
          <el-col :span="6">
        </el-row>
        <el-row>
          <el-col :span="16">
            <label>特采说明:{{ item.formData.defectedNote }}</label>
          </el-col>
          <el-col :span="6">
          <el-col :span="8">
            <label>检验人:{{ item.formData.checkUserName }}</label>
          </el-col>
        </el-row>
@@ -62,27 +67,26 @@
    },
  },
  created() {
    if (!this.list.length) {
      this.list.push({
        title: "IQC质检结果审批",
        formData: {
          receiveOrderNo: "收货单号",
          checkOrderNo: "质检单号",
          receiveDetailRowNo: "收货明细行号",
          materielCode: "物料编号",
          qualifiedQuantity: "合格数量",
          defectedQuantity: "特采数量",
          returnQuantity: "退货数量",
          scrappedQuantity: "报废数量",
          receivedQuantity: "质检总数",
          defectedNote: "特采说明",
          checkUserName: "检验人",
          message: "消息测试内容消息测试内容消息测试内容消息测试内容",
        },
        date: "2022-05-02 03:10",
      });
    }
    // if (!this.list.length) {
    //   this.list.push({
    //     title: "IQC质检结果审批",
    //     formData: {
    //       receiveOrderNo: "收货单号",
    //       checkOrderNo: "质检单号",
    //       receiveDetailRowNo: "收货明细行号",
    //       materielCode: "物料编号",
    //       qualifiedQuantity: "合格数量",
    //       defectedQuantity: "特采数量",
    //       returnQuantity: "退货数量",
    //       scrappedQuantity: "报废数量",
    //       receivedQuantity: "质检总数",
    //       defectedNote: "特采说明",
    //       checkUserName: "检验人",
    //       message: "消息测试内容消息测试内容消息测试内容消息测试内容",
    //     },
    //     date: "2022-05-02 03:10",
    //   });
    // }
  },
};
</script>
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/09f72f2c-b273-4279-b316-3cd115d14817.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/17995e9c-2ddd-48c7-bbd9-eada1e6c4f48.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/789398d4-ad10-4b21-9f9c-c017ed2e4aa0.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/914d9c3f-57db-4637-bc40-52081424fde2.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d7105167-5efc-465c-b440-fa7c68170e72.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/d98d9afe-9e7d-42bb-a74d-be4c0981ccda.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/eef0aa91-791e-44dd-b321-3146cf9e9a18.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/f24c70fa-e22c-4a39-92fe-e726fb794d24.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/FileContentIndex/f91e73eb-1823-4174-b99b-0eb163ec64f8.vsidx
Binary files differ
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_ApprovalService/ApprovalTaskService.cs
@@ -28,6 +28,8 @@
        private readonly WebSocketServer _webSocketServer;
        private readonly ISys_UserRepository _userRepository;
        public IApprovalTaskRepository Repository => BaseDal;
        public ApprovalTaskService(IApprovalTaskRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, IApprovalFlowRepository approvalFlowRepository, IApprovalNodeRepository approvalNodeRepository, ICheckOrderRepository checkOrderRepository, WebSocketServer webSocketServer, ISys_UserRepository userRepository) : base(BaseDal)
        {
            _unitOfWorkManage = unitOfWorkManage;
@@ -38,6 +40,8 @@
            _userRepository = userRepository;
        }
        public WebResponseContent AuditAgree(int sourceKey)
        {
            try
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/BasicService.cs
@@ -26,25 +26,5 @@
            MaterielInfoService = materielInfoService;
            WarehouseService = warehouseService;
        }
        #region AreaInfo
        #endregion
        #region CachePoint
        #endregion
        #region LocationInfo
        #endregion
        #region RoadwayInfo
        #endregion
        #region Warehouse
        #endregion
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/LocationInfoService.cs
@@ -143,7 +143,6 @@
        public void UpdateLocationStatus(string locationCode, PalletTypeEnum palletType, LocationStatusEnum locationStatus)
        {
            Dt_LocationInfo location = Repository.QueryFirst(x => x.LocationCode == locationCode);
            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo);
@@ -184,8 +183,6 @@
        public void UpdateLocationStatus(Dt_LocationInfo location, PalletTypeEnum palletType, LocationStatusEnum locationStatus)
        {
            List<Dt_LocationInfo> locationInfos = Repository.QueryData(x => x.RoadwayNo == location.RoadwayNo);
            List<Dt_LocationInfo> locations = GetGroupLocations(locationInfos, location);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_BasicService/Service/MaterielInfoService.cs
@@ -12,7 +12,6 @@
{
    public partial class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IMaterielInfoRepository>, IMaterielInfoService
    {
        public bool ExsitMateriel(string materielCode)
        {
            return BaseDal.QueryFirst(x => x.MaterielCode == materielCode) != null;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_CheckService/CheckOrderResultService.cs
@@ -25,7 +25,6 @@
        public WebResponseContent CommitCheckResult(int checkOrderId, Dt_CheckOrderResult checkResult)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IApprovalService/IApprovalTaskService.cs
@@ -5,12 +5,15 @@
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.BaseServices;
using WIDESEA_IApprovalRepository;
using WIDESEA_Model.Models;
namespace WIDESEA_IApprovalService
{
    public interface IApprovalTaskService : IService<Dt_ApprovalTask>
    {
        IApprovalTaskRepository Repository { get; }
        WebResponseContent AuditAgree(int sourceKey);
        WebResponseContent AuditReject(int sourceKey);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordService.cs
ÎļþÃû´Ó ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/ILocationStatusChangeRecordSetvice.cs ÐÞ¸Ä
@@ -11,7 +11,7 @@
namespace WIDESEA_IRecordService
{
    public interface ILocationStatusChangeRecordSetvice : IService<Dt_LocationStatusChangeRecord>
    public interface ILocationStatusChangeRecordService : IService<Dt_LocationStatusChangeRecord>
    {
        ILocationStatusChangeRecordRepository Repository { get; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_IRecordService/IRecordService.cs
@@ -9,7 +9,7 @@
{
    public interface IRecordService : IDependency
    {
        ILocationStatusChangeRecordSetvice LocationStatusChangeRecordSetvice { get; }
        ILocationStatusChangeRecordService LocationStatusChangeRecordSetvice { get; }
        IStockQuantityChangeRecordService StockQuantityChangeRecordService { get; }
    }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/InboundOrder_HtyService.cs
@@ -25,12 +25,8 @@
{
    public class InboundOrder_HtyService : ServiceBase<Dt_InboundOrder_Hty, IInboundOrder_HtyRepository>, IInboundOrder_HtyService
    {
        public InboundOrder_HtyService(IInboundOrder_HtyRepository BaseDal) : base(BaseDal)
        {
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/PurchaseOrderService.cs
@@ -32,19 +32,14 @@
        {
            try
            {
                switch (model.Way)
                return model.Way switch
                {
                    case 1:
                        return AddPurchaseOrder(model);
                    case 2:
                        return UpdatePurchaseOrder(model);
                    case 3:
                        return DeletePurchaseOrder(model);
                    case 4:
                        return ClosePurchaseOrder(model);
                }
                return WebResponseContent.Instance.OK();
                    1 => AddPurchaseOrder(model),
                    2 => UpdatePurchaseOrder(model),
                    3 => DeletePurchaseOrder(model),
                    4 => ClosePurchaseOrder(model),
                    _ => WebResponseContent.Instance.OK(),
                };
            }
            catch (Exception ex)
            {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Check/Dt_CheckOrder.cs
@@ -22,7 +22,7 @@
        /// <summary>
        /// æ£€éªŒå•号
        /// </summary>
        [CodeRule(RuleCodeEnum.InboundOrderRule)]
        [CodeRule(RuleCodeEnum.CheckOrderRule)]
        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "检验单号")]
        public string CheckOrderNo { get; set; }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Base/OutStockLockInfoService.cs
@@ -19,6 +19,5 @@
        public OutStockLockInfoService(IOutStockLockInfoRepository BaseDal) : base(BaseDal)
        {
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/Service/OutStockLockInfoService.cs
@@ -13,6 +13,5 @@
{
    public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService
    {
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/LocationStatusChangeRecordService.cs
ÎļþÃû´Ó ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/LocationStatusChangeRecordSetvice.cs ÐÞ¸Ä
@@ -13,13 +13,12 @@
namespace WIDESEA_RecordService
{
    public partial class LocationStatusChangeRecordSetvice : ServiceBase<Dt_LocationStatusChangeRecord, ILocationStatusChangeRecordRepository>, ILocationStatusChangeRecordSetvice
    public partial class LocationStatusChangeRecordService : ServiceBase<Dt_LocationStatusChangeRecord, ILocationStatusChangeRecordRepository>, ILocationStatusChangeRecordService
    {
        public LocationStatusChangeRecordSetvice(ILocationStatusChangeRecordRepository BaseDal) : base(BaseDal)
        public LocationStatusChangeRecordService(ILocationStatusChangeRecordRepository BaseDal) : base(BaseDal)
        {
        }
        public ILocationStatusChangeRecordRepository Repository => BaseDal;
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/StockQuantityChangeRecordService.cs
@@ -22,6 +22,5 @@
        }
        public IStockQuantityChangeRecordRepository Repository => BaseDal;
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/RecordService.cs
@@ -9,11 +9,11 @@
{
    public class RecordService : IRecordService
    {
        public ILocationStatusChangeRecordSetvice LocationStatusChangeRecordSetvice { get; }
        public ILocationStatusChangeRecordService LocationStatusChangeRecordSetvice { get; }
        public IStockQuantityChangeRecordService StockQuantityChangeRecordService { get; }
        public RecordService(ILocationStatusChangeRecordSetvice locationStatusChangeRecordSetvice, IStockQuantityChangeRecordService stockQuantityChangeRecordService)
        public RecordService(ILocationStatusChangeRecordService locationStatusChangeRecordSetvice, IStockQuantityChangeRecordService stockQuantityChangeRecordService)
        {
            LocationStatusChangeRecordSetvice = locationStatusChangeRecordSetvice;
            StockQuantityChangeRecordService = stockQuantityChangeRecordService;
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/LocationStatusChangeRecordService.cs
ÎļþÃû´Ó ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Service/LocationStatusChangeRecordSetvice.cs ÐÞ¸Ä
@@ -17,7 +17,7 @@
namespace WIDESEA_RecordService
{
    public partial class LocationStatusChangeRecordSetvice : ServiceBase<Dt_LocationStatusChangeRecord, ILocationStatusChangeRecordRepository>, ILocationStatusChangeRecordSetvice
    public partial class LocationStatusChangeRecordService : ServiceBase<Dt_LocationStatusChangeRecord, ILocationStatusChangeRecordRepository>, ILocationStatusChangeRecordService
    {
        public void AddLocationStatusChangeRecord(Dt_LocationInfo locationInfo, LocationStatusEnum lastStatus, LocationChangeType changeType, string? orderNo = null, int? taskNum = null)
        {
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfoService.cs
@@ -30,6 +30,5 @@
        {
            _mapper = mapper;
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockInfo_HtyService.cs
@@ -29,6 +29,5 @@
        {
            _mapper = mapper;
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Service/StockInfoService.cs
@@ -34,7 +34,6 @@
                int index = 0;
                while (needQuantity > 0)
                {
                    Dt_StockInfo stockInfo = stockInfos[index];
                    float useableStockQuantity = stockInfo.Details.Where(x => x.MaterielCode == materielCode).Sum(x => x.StockQuantity - x.OutboundQuantity);
                    if (useableStockQuantity < needQuantity)
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_SystemService/Sys_DictionaryService.cs
@@ -648,6 +648,33 @@
                        }
                        break;
                    case "locationChangeType":
                        {
                            List<object> data = new List<object>();
                            {
                                Type type = typeof(LocationChangeType);
                                List<int> enums = Enum.GetValues(typeof(LocationChangeType)).Cast<int>().ToList();
                                int index = 0;
                                foreach (var item in enums)
                                {
                                    FieldInfo? fieldInfo = typeof(LocationChangeType).GetField(((LocationChangeType)item).ToString());
                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
                                    if (description != null)
                                    {
                                        data.Add(new { key = item.ToString(), value = description.Description });
                                    }
                                    else
                                    {
                                        data.Add(new { key = item.ToString(), value = item.ToString() });
                                    }
                                    index++;
                                }
                            }
                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
                        }
                        break;
                }
                return result;
            }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -188,7 +188,6 @@
                    return WebResponseContent.Instance.Error($"货位状态不正确");
                }
                LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
@@ -202,7 +201,7 @@
                _stockRepository.StockInfoRepository.UpdateData(stockInfo);
                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationChangeType.InboundAssignLocation);
                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationChangeType.InboundCompleted);
                _unitOfWorkManage.CommitTran();
                return WebResponseContent.Instance.OK();
            }
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/Task_HtyService.cs
@@ -35,10 +35,7 @@
public class Task_HtyService : ServiceBase<Dt_Task_Hty, ITask_HtyRepository>, ITask_HtyService
{
    public Task_HtyService(ITask_HtyRepository BaseDal) : base(BaseDal)
    {
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Approval/ApprovalTaskController.cs
@@ -1,8 +1,13 @@
using Microsoft.AspNetCore.Http;
using HslCommunication.WebSocket;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using WIDESEA_Core;
using WIDESEA_Core.BaseController;
using WIDESEA_Core.Helper;
using WIDESEA_IApprovalService;
using WIDESEA_ICheckRepository;
using WIDESEA_Model.Models;
namespace WIDESEA_WMSServer.Controllers.Approval
@@ -11,8 +16,13 @@
    [ApiController]
    public class ApprovalTaskController : ApiBaseController<IApprovalTaskService, Dt_ApprovalTask>
    {
        public ApprovalTaskController(IApprovalTaskService service) : base(service)
        private readonly ICheckOrderRepository _checkOrderRepository;
        private readonly WebSocketServer _webSocketServer;
        public ApprovalTaskController(IApprovalTaskService service, ICheckOrderRepository checkOrderRepository, WebSocketServer webSocketServer) : base(service)
        {
            _checkOrderRepository = checkOrderRepository;
            _webSocketServer = webSocketServer;
        }
        [HttpGet, HttpPost, Route("AuditAgree")]
@@ -26,5 +36,36 @@
        {
            return Service.AuditReject(sourceKey);
        }
        [HttpGet, HttpPost, Route("PushTest"), AllowAnonymous]
        public WebResponseContent PushTest()
        {
            try
            {
                List<Dt_CheckOrder> checkOrders = _checkOrderRepository.Db.Queryable<Dt_CheckOrder>().Includes(x => x.Details).ToList();
                foreach (var checkOrder in checkOrders)
                {
                    object obj = new
                    {
                        title = "IQC质检结果审批",
                        formData = checkOrder,
                        tableData = checkOrder.Details,
                        message = "推送测试信息体",
                        date = DateTime.Now.ToString(),
                    };
                    JsonSerializerSettings settings = new JsonSerializerSettings()
                    {
                        ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
                    };
                    _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(obj, settings));
                }
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/ERP/ErpController.cs
@@ -54,6 +54,7 @@
            }
        }
        [HttpPost, Route("ReceivePurchaseOrderSingle"), AllowAnonymous, MethodParamsValidate]
        public WebResponseContent ReceivePurchaseOrderSingle(PurchaseOrderModel model)
        {
            return _purchaseOrderService.ReceivePurchaseOrderSingle(model);
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Record/LocationStatusChangeRecordController.cs
@@ -10,9 +10,9 @@
{
    [Route("api/LocationStatusChangeRecord")]
    [ApiController]
    public class LocationStatusChangeRecordController : ApiBaseController<ILocationStatusChangeRecordSetvice, Dt_LocationStatusChangeRecord>
    public class LocationStatusChangeRecordController : ApiBaseController<ILocationStatusChangeRecordService, Dt_LocationStatusChangeRecord>
    {
        public LocationStatusChangeRecordController(ILocationStatusChangeRecordSetvice service) : base(service)
        public LocationStatusChangeRecordController(ILocationStatusChangeRecordService service) : base(service)
        {
        }
        [HttpPost, HttpGet,Route("GetLocationState")]
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutofacPropertityModuleReg.cs
@@ -11,7 +11,6 @@
            builder.RegisterAssemblyTypes(typeof(Program).Assembly)
                .Where(t => controllerBaseType.IsAssignableFrom(t) && t != controllerBaseType)
                .PropertiesAutowired();
        }
    }
}
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -6,7 +6,7 @@
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "dics": "inOrderType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun,stockChangeType,outStockStatus,receiveOrderTypeEnum,authorityScope,authorityScopes",
  "dics": "inOrderType,outOrderType,inboundState,createType,enableEnum,enableStatusEnum,locationStatusEnum,locationTypeEnum,taskTypeEnum,taskStatusEnum,outboundStatusEnum,orderDetailStatusEnum,stockStatusEmun,stockChangeType,outStockStatus,receiveOrderTypeEnum,authorityScope,authorityScopes,locationChangeType",
  "AllowedHosts": "*",
  "ConnectionStringsEncryption": false,
  "MainDB": "DB_WIDESEA", //当前项目的主库,所对应的连接字符串的Enabled必须为true
ÏîÄ¿×ÊÁÏ/½Ó¿ÚÎĵµ/MESÒµÎñÁ÷³ÌͼV1.0.vsdx
Binary files differ
ÏîÄ¿×ÊÁÏ/½Ó¿ÚÎĵµ/MESÒµÎñÁ÷³ÌͼV1.0.xlsx
Binary files differ