| //#region | 
| import BaseController from "../baseController"; | 
| import { Post } from "egg-shell-decorators"; | 
| import { StorageReplenishment } from "../../entity/storage/replenishment/storageReplenishment"; | 
| import { StorageReplenishmentSortingRule } from "../../entity/storage/replenishment/storageReplenishmentSortingRule"; | 
| import * as sql from "mssql"; | 
| //#endregion | 
|   | 
| export default class ReplenishmentController extends BaseController { | 
|   //#region   库存下限创建补货单 | 
|   /// <summary> | 
|   /// 库存下限创建补货单 | 
|   /// </summary> | 
|   /// <param name="body"></param> | 
|   /// <returns></returns> | 
|   @Post() | 
|   public async storageToReplenishment() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|     let userinfo = await ctx.helper.userInfo(); | 
|     try { | 
|       var excelDT = new sql.Table(); | 
|       excelDT.columns.add("storage_Id", sql.Int); | 
|       excelDT.columns.add("consignor_Id", sql.Int); | 
|       excelDT.columns.add("product_Id", sql.BigInt); | 
|       excelDT.columns.add("quantity", sql.NVarChar(50)); | 
|       excelDT.columns.add("billID", sql.NVarChar(50)); | 
|       excelDT.columns.add("billType", sql.NVarChar(50)); | 
|       excelDT.columns.add("positionName", sql.NVarChar(50)); | 
|       excelDT.columns.add("iD", sql.Int); | 
|       let i = 0; | 
|       for (var dataItem of body.productModelList) { | 
|         excelDT.rows.add( | 
|           dataItem.storage_Id, | 
|           dataItem.consignor_Id, | 
|           dataItem.product_Id, | 
|           dataItem.quantity, | 
|           dataItem.billID, | 
|           dataItem.billType, | 
|           dataItem.positionName, | 
|           i++ | 
|         ); | 
|       } | 
|       const connection: any = await this.dbWrite.connection; | 
|       let request = new sql.Request(connection.driver.master); | 
|       request.input("user_Id", userinfo.user_Id); | 
|       request.input("execelDT", excelDT); | 
|       request.output("outMsg", sql.NVarChar(2000)); | 
|       let result = await request.execute("sp_Storage_Replenishment"); | 
|       let outMsg = result.output.outMsg; | 
|       if (outMsg) { | 
|         this.info.msg = outMsg; | 
|         this.info.result = false; | 
|       } else { | 
|         this.info.msg = "补货单创建成功"; | 
|         this.info.result = true; | 
|       } | 
|       ctx.body = this.info; | 
|     } catch (ex) { | 
|       this.info.msg = "校验失败," + ex.message; | 
|       this.info.result = false; | 
|       ctx.body = this.info; | 
|     } | 
|   } | 
|   //#endregion | 
|   | 
|   //#region   补货单审核 | 
|   /// <summary> | 
|   /// 补货单审核 | 
|   /// </summary> | 
|   /// <param name="body"></param> | 
|   /// <returns></returns> | 
|   @Post() | 
|   public async confirm() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|     let userinfo = await ctx.helper.userInfo(); | 
|   | 
|     let auditing = body.auditing; | 
|     let remark = body.remark; | 
|     if (auditing == 2) { | 
|       let val = await this.dbWrite.update(StorageReplenishment, body.replenishment_Id, { | 
|         auditing: 2, | 
|         auditDate: new Date(), | 
|         auditor: userinfo.userTrueName, | 
|         remark: remark, | 
|         billStatus: "审核成功" | 
|       }); | 
|   | 
|       if (val) { | 
|         this.info.msg = "提交成功"; | 
|         this.info.result = true; | 
|         ctx.body = this.info; | 
|       } else { | 
|         this.info.msg = "提交失败"; | 
|         this.info.result = true; | 
|         ctx.body = this.info; | 
|       } | 
|     } else { | 
|       let val = await this.dbWrite.update(StorageReplenishment, body.replenishment_Id, { | 
|         auditing: 1, | 
|         auditDate: new Date(), | 
|         auditor: userinfo.userTrueName, | 
|         remark: remark, | 
|         billStatus: "拒绝审核" | 
|       }); | 
|   | 
|       if (val) { | 
|         this.info.msg = "提交成功"; | 
|         this.info.result = true; | 
|         ctx.body = this.info; | 
|       } else { | 
|         this.info.msg = "提交失败"; | 
|         this.info.result = true; | 
|         ctx.body = this.info; | 
|       } | 
|     } | 
|   } | 
|   //#endregion | 
|   | 
|   //#region   补货单分拣 | 
|   /// <summary> | 
|   /// 补货单分拣 | 
|   /// </summary> | 
|   /// <param name="body"></param> | 
|   /// <returns></returns> | 
|   @Post() | 
|   public async startSorting() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|     let userinfo = await ctx.helper.userInfo(); | 
|     try { | 
|       const connection: any = await this.dbWrite.connection; | 
|       let request = new sql.Request(connection.driver.master); | 
|       request.input("user_Id", userinfo.user_Id); | 
|       request.input("replenishment_Id", body.replenishment_Id); | 
|       request.output("outMsg", sql.NVarChar(2000)); | 
|       let result = await request.execute("sp_Storage_Replenishment_Sorting"); | 
|       let outMsg = result.output.outMsg; | 
|       if (outMsg) { | 
|         this.info.msg = outMsg; | 
|         this.info.result = false; | 
|       } else { | 
|         this.info.msg = "分拣成功"; | 
|         this.info.result = true; | 
|       } | 
|       ctx.body = this.info; | 
|     } catch (ex) { | 
|       this.info.msg = "校验失败," + ex.message; | 
|       this.info.result = false; | 
|       ctx.body = this.info; | 
|     } | 
|   } | 
|   //#endregion | 
|   | 
|   //#region 补货单获得分拣规则 | 
|   @Post() | 
|   public async replenishmentGetSortingRule() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|     var replenishmentList_Ids = body.replenishmentList_Id; | 
|     try { | 
|       var dataList = await this.dbRead.find(StorageReplenishmentSortingRule, { | 
|         replenishmentList_Id: replenishmentList_Ids | 
|       }); | 
|       if (dataList) { | 
|         this.info.data = dataList; | 
|         this.info.result = true; | 
|       } else { | 
|         this.info.msg = "未找到分拣规则"; | 
|         this.info.result = false; | 
|       } | 
|     } catch (error) { | 
|       this.info.msg = "未找到分拣规则," + error.message; | 
|       this.info.result = false; | 
|     } | 
|     ctx.body = this.info; | 
|   } | 
|   //#endregion | 
|   | 
|   //#region 补货单设置分拣规则 | 
|   @Post() | 
|   public async sortingRule() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|     let userInfo = await ctx.helper.userInfo(); | 
|     try { | 
|       var ruleInfo = new StorageReplenishmentSortingRule(); | 
|       ruleInfo.batchNumber = body.batchNumber; | 
|       ruleInfo.consignor_Id = body.consignor_Id; | 
|       ruleInfo.consignorCode = body.consignorCode; | 
|       ruleInfo.consignorName = body.consignorName; | 
|       ruleInfo.createDate = new Date(); | 
|       ruleInfo.createID = userInfo.user_Id; | 
|       ruleInfo.creator = userInfo.userTrueName; | 
|       ruleInfo.enable = 1; | 
|   | 
|       ruleInfo.replenishment_Id = body.replenishment_Id; | 
|       ruleInfo.replenishmentCode = body.replenishmentCode; | 
|       ruleInfo.replenishmentList_Id = body.replenishmentList_Id; | 
|       ruleInfo.plateCode = body.plateCode; | 
|       ruleInfo.positionName = body.positionName; | 
|       ruleInfo.produceDate = body.produceDate; | 
|       ruleInfo.product_Id = body.product_Id; | 
|       ruleInfo.productCode = body.productCode; | 
|       ruleInfo.singleSignCode = body.singleSignCode; | 
|       ruleInfo.storage_Id = body.storage_Id; | 
|       ruleInfo.storageName = body.storageName; | 
|       ruleInfo.userProduct_Id = userInfo.userProduct_Id; | 
|       ruleInfo.platUserCode = userInfo.platUserCode; | 
|       ruleInfo.platUserName = userInfo.platUserName; | 
|       ruleInfo.platUser_Id = userInfo.platUser_Id; | 
|       ruleInfo.userProductAlias = userInfo.userProductAlias; | 
|       ruleInfo.userProductCode = userInfo.userProductCode; | 
|       ruleInfo.platCorpName = userInfo.platCorpName; | 
|   | 
|       let reVal = await this.dbWrite.insert(StorageReplenishmentSortingRule, ruleInfo); | 
|       if (reVal) { | 
|         this.info.data = reVal; | 
|         this.info.result = true; | 
|         this.info.msg = "添加成功!"; | 
|       } else { | 
|         this.info.data = reVal; | 
|         this.info.result = false; | 
|         this.info.msg = "添加失败!"; | 
|       } | 
|     } catch (e) { | 
|       this.info.msg = "执行错误:," + e.message; | 
|       this.info.result = false; | 
|     } | 
|     ctx.body = this.info; | 
|   } | 
|   //#endregion | 
|   | 
|   //#region 补货单关闭分拣规则 | 
|   @Post() | 
|   public async deleteSortingRule() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|   | 
|     try { | 
|       await this.dbWrite.delete(StorageReplenishmentSortingRule, { | 
|         rule_Id: body.rule_Id | 
|       }); | 
|       this.info.result = true; | 
|       this.info.msg = "关闭成功!"; | 
|     } catch (error) { | 
|       this.info.result = false; | 
|       this.info.msg = "关闭失败!" + error.message; | 
|     } | 
|   | 
|     ctx.body = this.info; | 
|   } | 
|   //#endregion | 
|   | 
|   //#region   补货单审核分拣 | 
|   /// <summary> | 
|   /// 补货单审核分拣 | 
|   /// </summary> | 
|   /// <param name="reqInfo"></param> | 
|   /// <returns></returns> | 
|   @Post() | 
|   public async confirmSorting() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|     let userInfo = await ctx.helper.userInfo(); | 
|     try { | 
|       let storage_ReplenishmentList = await this.dbRead.find(StorageReplenishment, { | 
|         replenishment_Id: body.selectIDs | 
|       }); | 
|       for (let item of storage_ReplenishmentList) { | 
|         //审核 | 
|         await this.dbWrite.update(StorageReplenishment, item.replenishment_Id, { | 
|           auditing: 2, | 
|           auditDate: new Date(), | 
|           auditor: userInfo.userTrueName, | 
|           remark: body.remark, | 
|           billStatus: "审核成功" | 
|         }); | 
|         //分拣 | 
|         const connection: any = await this.dbWrite.connection; | 
|         let request = new sql.Request(connection.driver.master); | 
|         request.input("user_Id", userInfo.user_Id); | 
|         request.input("replenishment_Id", item.replenishment_Id); | 
|         request.output("outMsg", sql.NVarChar(2000)); | 
|         let result = await request.execute("sp_Storage_Replenishment_Sorting"); | 
|         let outMsg = result.output.outMsg; | 
|         if (outMsg) { | 
|           this.info.msg = item.replenishmentCode + outMsg; | 
|           this.info.result = false; | 
|         } else { | 
|           this.info.msg = item.replenishmentCode + "分拣成功"; | 
|           this.info.result = true; | 
|         } | 
|       } | 
|       ctx.body = this.info; | 
|     } catch (e) { | 
|       this.info.msg = "执行错误:," + e.message; | 
|       this.info.result = false; | 
|       ctx.body = this.info; | 
|     } | 
|   } | 
|   //#endregion | 
|   | 
|   //#region 补货单扫描-获取数据 | 
|   @Post() | 
|   public async replenishmentGetData() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|     this.info = await ctx.service.storage.replenishment.getReplenishmentGroupData(body.replenishmentCode); | 
|     if (!this.info.result) { | 
|       this.info.result = false; | 
|       this.info.msg = this.info.msg; | 
|       ctx.body = this.info; | 
|     } else { | 
|       this.info.result = true; | 
|       this.info.dynamic = this.info.data; | 
|       ctx.body = this.info; | 
|     } | 
|   } | 
|   //#endregion | 
|   | 
|   //#region  补货单扫描-确认出库 | 
|   /// <summary> | 
|   /// 确认出库 | 
|   /// </summary> | 
|   /// <returns></returns> | 
|   @Post() | 
|   public async replenishmentSave() { | 
|     let { ctx } = this; | 
|     let body = ctx.request.body; | 
|     let userInfo = await ctx.helper.userInfo(); | 
|     let productModelList = body.productModelList; | 
|     let replenishmentCode = body.replenishmentCode; | 
|     this.info = await ctx.service.storage.replenishment.storageReplenishmentSave(replenishmentCode, productModelList, userInfo.user_Id); | 
|     if (!this.info.result) { | 
|       this.info.result = false; | 
|       this.info.msg = this.info.msg; | 
|       ctx.body = this.info; | 
|     } else { | 
|       this.info.result = true; | 
|       this.info.msg = this.info.msg; | 
|       ctx.body = this.info; | 
|     } | 
|   } | 
|   //#endregion | 
| } |