已删除4个文件
已修改28个文件
已添加7个文件
已重命名4个文件
| | |
| | | <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> |
| | |
| | | watch, |
| | | onMounted, |
| | | getCurrentInstance, |
| | | h |
| | | h, |
| | | } from "vue"; |
| | | import { useRouter, useRoute } from "vue-router"; |
| | | import store from "../store/index"; |
| | |
| | | ElNotification({ |
| | | title: data.title, |
| | | message: h("i", { style: "color: teal" }, data.message), |
| | | position: "bottom-right", |
| | | }); |
| | | }; |
| | | |
| | |
| | | setTimeout(createSocket, 10000); |
| | | }; |
| | | |
| | | client.onerror = function () { |
| | | |
| | | }; |
| | | client.onerror = function () {}; |
| | | }; |
| | | |
| | | const changeTheme = (name) => { |
| | |
| | | <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> |
| | |
| | | }, |
| | | }, |
| | | 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> |
| | |
| | | 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; |
| | |
| | | _userRepository = userRepository; |
| | | } |
| | | |
| | | |
| | | |
| | | public WebResponseContent AuditAgree(int sourceKey) |
| | | { |
| | | try |
| | |
| | | MaterielInfoService = materielInfoService; |
| | | WarehouseService = warehouseService; |
| | | } |
| | | |
| | | #region AreaInfo |
| | | |
| | | #endregion |
| | | |
| | | #region CachePoint |
| | | |
| | | #endregion |
| | | |
| | | #region LocationInfo |
| | | |
| | | #endregion |
| | | |
| | | #region RoadwayInfo |
| | | |
| | | #endregion |
| | | |
| | | #region Warehouse |
| | | |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | |
| | | 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); |
| | | |
| | |
| | | |
| | | 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); |
| | |
| | | { |
| | | public partial class MaterielInfoService : ServiceBase<Dt_MaterielInfo, IMaterielInfoRepository>, IMaterielInfoService |
| | | { |
| | | |
| | | public bool ExsitMateriel(string materielCode) |
| | | { |
| | | return BaseDal.QueryFirst(x => x.MaterielCode == materielCode) != null; |
| | |
| | | |
| | | public WebResponseContent CommitCheckResult(int checkOrderId, Dt_CheckOrderResult checkResult) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_CheckOrder checkOrder = _checkOrderRepository.QueryFirst(x => x.CheckOrderId == checkOrderId); |
| | |
| | | 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/ILocationStatusChangeRecordSetvice.cs ÐÞ¸Ä |
| | |
| | | |
| | | namespace WIDESEA_IRecordService |
| | | { |
| | | public interface ILocationStatusChangeRecordSetvice : IService<Dt_LocationStatusChangeRecord> |
| | | public interface ILocationStatusChangeRecordService : IService<Dt_LocationStatusChangeRecord> |
| | | { |
| | | ILocationStatusChangeRecordRepository Repository { get; } |
| | | |
| | |
| | | { |
| | | public interface IRecordService : IDependency |
| | | { |
| | | ILocationStatusChangeRecordSetvice LocationStatusChangeRecordSetvice { get; } |
| | | ILocationStatusChangeRecordService LocationStatusChangeRecordSetvice { get; } |
| | | |
| | | IStockQuantityChangeRecordService StockQuantityChangeRecordService { get; } |
| | | } |
| | |
| | | { |
| | | public class InboundOrder_HtyService : ServiceBase<Dt_InboundOrder_Hty, IInboundOrder_HtyRepository>, IInboundOrder_HtyService |
| | | { |
| | | |
| | | |
| | | public InboundOrder_HtyService(IInboundOrder_HtyRepository BaseDal) : base(BaseDal) |
| | | { |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | { |
| | | 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) |
| | | { |
| | |
| | | /// <summary> |
| | | /// æ£éªåå· |
| | | /// </summary> |
| | | [CodeRule(RuleCodeEnum.InboundOrderRule)] |
| | | [CodeRule(RuleCodeEnum.CheckOrderRule)] |
| | | [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "æ£éªåå·")] |
| | | public string CheckOrderNo { get; set; } |
| | | |
| | |
| | | public OutStockLockInfoService(IOutStockLockInfoRepository BaseDal) : base(BaseDal) |
| | | { |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | { |
| | | public partial class OutStockLockInfoService : ServiceBase<Dt_OutStockLockInfo, IOutStockLockInfoRepository>, IOutStockLockInfoService |
| | | { |
| | | |
| | | } |
| | | } |
ÎļþÃû´Ó ´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_RecordService/Base/LocationStatusChangeRecordSetvice.cs ÐÞ¸Ä |
| | |
| | | |
| | | 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; |
| | | |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | public IStockQuantityChangeRecordRepository Repository => BaseDal; |
| | | |
| | | } |
| | | } |
| | |
| | | { |
| | | 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/LocationStatusChangeRecordSetvice.cs ÐÞ¸Ä |
| | |
| | | |
| | | 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) |
| | | { |
| | |
| | | { |
| | | _mapper = mapper; |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | { |
| | | _mapper = mapper; |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | 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) |
| | |
| | | } |
| | | |
| | | 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; |
| | | } |
| | |
| | | return WebResponseContent.Instance.Error($"è´§ä½ç¶æä¸æ£ç¡®"); |
| | | } |
| | | |
| | | |
| | | LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus; |
| | | locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt(); |
| | | |
| | |
| | | |
| | | _stockRepository.StockInfoRepository.UpdateData(stockInfo); |
| | | |
| | | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationChangeType.InboundAssignLocation); |
| | | _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationChangeType.InboundCompleted); |
| | | _unitOfWorkManage.CommitTran(); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | |
| | | |
| | | public class Task_HtyService : ServiceBase<Dt_Task_Hty, ITask_HtyRepository>, ITask_HtyService |
| | | { |
| | | |
| | | public Task_HtyService(ITask_HtyRepository BaseDal) : base(BaseDal) |
| | | { |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | 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 |
| | |
| | | [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")] |
| | |
| | | { |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | [HttpPost, Route("ReceivePurchaseOrderSingle"), AllowAnonymous, MethodParamsValidate] |
| | | public WebResponseContent ReceivePurchaseOrderSingle(PurchaseOrderModel model) |
| | | { |
| | | return _purchaseOrderService.ReceivePurchaseOrderSingle(model); |
| | |
| | | { |
| | | [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")] |
| | |
| | | builder.RegisterAssemblyTypes(typeof(Program).Assembly) |
| | | .Where(t => controllerBaseType.IsAssignableFrom(t) && t != controllerBaseType) |
| | | .PropertiesAutowired(); |
| | | |
| | | } |
| | | } |
| | | } |
| | |
| | | "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 |