已添加15个文件
已修改41个文件
已重命名7个文件
已删除8个文件
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | import gridBody from './extend/routerview.vue'; |
| | | import gridHeader from './extend/addrouters.vue'; |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: gridHeader, |
| | | gridBody: gridBody, |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { |
| | | this.pagination.order = "asc" ; |
| | | var viewButton = this.buttons.find((x) => x.value == "ViewAllRouter"); |
| | | if (viewButton) { |
| | | viewButton.onClick = ()=>{ |
| | | this.$refs.gridBody.open(); |
| | | } |
| | | } |
| | | |
| | | var addRoutersButton = this.buttons.find((x) => x.value == "AddRouters"); |
| | | if (addRoutersButton) { |
| | | addRoutersButton.onClick = ()=>{ |
| | | this.$refs.gridHeader.open(); |
| | | } |
| | | } |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | | //妿è¦é
ç½®æç»è¡¨,卿¤æ¹æ³æä½ |
| | | //this.detailOptions.columns.forEach(column=>{ }); |
| | | }, |
| | | searchBefore(param) { |
| | | //ç颿¥è¯¢å,å¯ä»¥ç»param.wheresæ·»å æ¥è¯¢åæ° |
| | | //è¿åfalseï¼åä¸ä¼æ§è¡æ¥è¯¢ |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | | //æ¥è¯¢åï¼resultè¿åçæ¥è¯¢æ°æ®,å¯ä»¥å¨æ¾ç¤ºå°è¡¨æ ¼åå¤çè¡¨æ ¼çå¼ |
| | | return true; |
| | | }, |
| | | addBefore(formData) { |
| | | //æ°å»ºä¿ååformData为对象ï¼å
æ¬æç»è¡¨ï¼å¯ä»¥ç»ç»è¡¨å设置å¼ï¼èªå·±è¾åºçformDataçå¼ |
| | | return true; |
| | | }, |
| | | updateBefore(formData) { |
| | | //ç¼è¾ä¿ååformData为对象ï¼å
æ¬æç»è¡¨ãå é¤è¡çId |
| | | return true; |
| | | }, |
| | | rowClick({ row, column, event }) { |
| | | //æ¥è¯¢çé¢ç¹å»è¡äºä»¶ |
| | | // this.$refs.table.$refs.table.toggleRowSelection(row); //åå»è¡æ¶éä¸å½åè¡; |
| | | }, |
| | | modelOpenAfter(row) { |
| | | //ç¹å»ç¼è¾ãæ°å»ºæé®å¼¹åºæ¡åï¼å¯ä»¥å¨æ¤å¤åé»è¾ï¼å¦ï¼ä»åå°è·åæ°æ® |
| | | //(1)夿æ¯ç¼è¾è¿æ¯æ°å»ºæä½ï¼ this.currentAction=='Add'; |
| | | //(2)ç»å¼¹åºæ¡è®¾ç½®é»è®¤å¼ |
| | | //(3)this.editFormFields.åæ®µ='xxx'; |
| | | //妿éè¦ç»ä¸ææ¡è®¾ç½®é»è®¤å¼ï¼è¯·éåthis.editFormOptionsæ¾å°å段é
置对åºdata屿§çkeyå¼ |
| | | //ç䏿就æè¾åºçï¼console.log(this.editFormOptions) |
| | | this.editFormOptions.forEach(x => { |
| | | x.forEach(option => { |
| | | if (option.field == 'shuttleCarName') { |
| | | option.readonly = true |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | }; |
| | | export default extension; |
| | | |
| | |
| | | path: '/router', |
| | | name: 'router', |
| | | component: () => import('@/views/basicinfo/router.vue') |
| | | },{ |
| | | path: '/shuttleCar', |
| | | name: 'shuttleCar', |
| | | component: () => import('@/views/basicinfo/shuttleCar.vue') |
| | | }] |
| | | |
| | | export default viewgird |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | <template> |
| | | <view-grid |
| | | ref="grid" |
| | | :columns="columns" |
| | | :detail="detail" |
| | | :editFormFields="editFormFields" |
| | | :editFormOptions="editFormOptions" |
| | | :searchFormFields="searchFormFields" |
| | | :searchFormOptions="searchFormOptions" |
| | | :table="table" |
| | | :extend="extend" |
| | | > |
| | | </view-grid> |
| | | </template> |
| | | <script> |
| | | import extend from "@/extension/basicinfo/shuttleCar.js"; |
| | | import { ref, defineComponent } from "vue"; |
| | | export default defineComponent({ |
| | | setup() { |
| | | const table = ref({ |
| | | key: "shuttleCarId", |
| | | footer: "Foots", |
| | | cnName: "è·¯ç±é
置信æ¯", |
| | | name: "ShuttleCar", |
| | | url: "/ShuttleCar/", |
| | | sortName: "shuttleCarCode", |
| | | }); |
| | | const editFormFields = ref({ |
| | | shuttleCarPosition: "", |
| | | shuttleCarCode: "", |
| | | shuttleCarName: "", |
| | | shuttleCarPosition1: "", |
| | | }); |
| | | const editFormOptions = ref([ |
| | | [ |
| | | { |
| | | title: "ç©¿æ¢è½¦åç§°", |
| | | required: true, |
| | | field: "shuttleCarName", |
| | | type: "string", |
| | | }, |
| | | ], |
| | | [ |
| | | { |
| | | title: "ç©¿æ¢è½¦ä½ç½®", |
| | | required: true, |
| | | field: "shuttleCarPosition", |
| | | type: "string", |
| | | }, |
| | | ], |
| | | ]); |
| | | const searchFormFields = ref({}); |
| | | const searchFormOptions = ref([]); |
| | | const columns = ref([ |
| | | { |
| | | field: "shuttleCarId", |
| | | title: "Id", |
| | | type: "int", |
| | | width: 90, |
| | | hidden: true, |
| | | readonly: true, |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "shuttleCarCode", |
| | | title: "ç©¿æ¢è½¦ç¼å·", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | hidden: true, |
| | | }, |
| | | { |
| | | field: "shuttleCarName", |
| | | title: "ç©¿æ¢è½¦åç§°", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "shuttleCarPosition", |
| | | title: "ç©¿æ¢è½¦ä½ç½®", |
| | | type: "string", |
| | | width: 180, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "shuttleCarPosition1", |
| | | title: "ç©¿æ¢è½¦ä½ç½®1", |
| | | type: "string", |
| | | hidden: true, |
| | | width: 180, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "creater", |
| | | title: "å建è
", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifier", |
| | | title: "ä¿®æ¹äºº", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "modifyDate", |
| | | title: "ä¿®æ¹æ¶é´", |
| | | type: "string", |
| | | width: 150, |
| | | align: "left", |
| | | }, |
| | | ]); |
| | | const detail = ref({ |
| | | cnName: "", |
| | | table: "", |
| | | columns: [], |
| | | sortName: "", |
| | | key: "", |
| | | }); |
| | | return { |
| | | table, |
| | | extend, |
| | | editFormFields, |
| | | editFormOptions, |
| | | searchFormFields, |
| | | searchFormOptions, |
| | | columns, |
| | | detail, |
| | | }; |
| | | }, |
| | | }); |
| | | </script> |
| | | |
| | |
| | | /// </summary> |
| | | [Description("å
许")] |
| | | Permit, |
| | | /// <summary> |
| | | /// æå |
| | | /// </summary> |
| | | [Description("æå")] |
| | | Success |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.DataProtection.KeyManagement; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using Quartz.Util; |
| | | using SqlSugar; |
| | | using System.ComponentModel; |
| | | using System.Reflection; |
| | | using WIDESEAWCS_Common; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseController; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_DTO.BasicInfo; |
| | | using WIDESEAWCS_IShuttleCar; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Repository; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | |
| | | namespace WIDESEAWCS_Server.Controllers.BasicInfo |
| | | { |
| | | [Route("api/ShuttleCar")] |
| | | [ApiController] |
| | | public class ShuttleCarController : ApiBaseController<IShuttleCarService, Dt_ShuttleCar> |
| | | { |
| | | public ShuttleCarController(IShuttleCarService service) : base(service) |
| | | { |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | DeviceName = item.DeviceName, |
| | | DeviceCode = childDeviceCode, |
| | | DeviceStatus = Device.inRead == 1 ? "å¯å" : "ä¸å¯å", |
| | | DeviceStatus = "æ£å¸¸",// Device.inRead == 1 ? "å¯å" : "ä¸å¯å", |
| | | DeviceMachine = GetMachine(Device.Status), |
| | | TaskID = Device.TaskNum, |
| | | Err_Status = GetSpec(Device.Spec) |
| | |
| | | return Service.ModifyBarcode(taskDTO); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 人工æä½ä»»å¡ |
| | | /// </summary> |
| | | /// <param name="TaskId"></param> |
| | | /// <param name="TaskType"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("ManualTask"), AllowAnonymous] |
| | | public WebResponseContent ManualTask(int TaskId, int TaskType) |
| | | { |
| | |
| | | <Project> |
| | | <PropertyGroup> |
| | | <_PublishTargetUrl>E:\IISText\èæ¹ä¸ä¸\WCS</_PublishTargetUrl> |
| | | <History>True|2025-07-07T01:47:14.5536194Z;True|2025-07-04T09:01:52.1304268+08:00;True|2025-06-30T18:01:52.8637969+08:00;True|2025-06-30T17:01:56.3064177+08:00;True|2025-06-30T16:38:12.1057130+08:00;True|2025-06-28T14:30:49.7946659+08:00;True|2025-06-28T10:55:58.8222554+08:00;True|2025-06-28T08:47:43.7229176+08:00;True|2025-06-26T12:37:56.3484297+08:00;True|2025-06-23T11:05:39.8485399+08:00;True|2025-06-23T10:17:43.5808008+08:00;True|2025-06-23T09:54:40.9326213+08:00;True|2025-06-23T09:37:35.0797885+08:00;True|2025-06-20T10:31:11.5116619+08:00;True|2025-06-19T17:43:29.0660951+08:00;True|2025-06-19T15:33:15.5169520+08:00;True|2025-06-17T15:08:30.3988621+08:00;True|2025-06-17T11:49:45.7757057+08:00;False|2025-06-17T11:46:12.2872897+08:00;True|2025-06-17T11:14:34.8780060+08:00;True|2025-06-17T10:58:01.4890300+08:00;True|2025-05-20T11:49:19.9344988+08:00;True|2025-05-19T16:43:32.2157734+08:00;True|2025-05-19T16:12:01.9378787+08:00;True|2025-05-15T16:58:47.2930537+08:00;True|2025-05-15T13:17:15.3596644+08:00;True|2025-05-15T13:11:17.2616075+08:00;True|2025-05-15T12:57:49.7942020+08:00;True|2025-05-15T12:38:37.7925022+08:00;True|2025-05-15T12:28:15.6975809+08:00;True|2025-05-15T11:44:00.9991686+08:00;True|2025-05-15T10:37:45.5900920+08:00;True|2025-05-14T11:31:54.9438366+08:00;True|2025-05-14T09:59:15.2570833+08:00;True|2025-05-14T09:57:55.8054307+08:00;True|2025-05-14T09:39:18.3194886+08:00;True|2025-05-13T17:13:53.4476748+08:00;True|2025-05-13T15:21:11.2441407+08:00;True|2025-05-13T10:39:40.0223843+08:00;True|2025-05-09T11:16:41.1746344+08:00;True|2025-04-27T19:58:33.9706872+08:00;True|2025-04-27T14:52:52.9853720+08:00;True|2025-04-21T17:54:03.6534614+08:00;True|2025-04-19T10:28:25.0898569+08:00;True|2025-04-17T14:04:50.3243452+08:00;True|2025-03-27T16:23:43.2657011+08:00;True|2025-03-25T12:01:47.0052741+08:00;True|2025-02-14T17:36:18.5767695+08:00;True|2025-02-14T14:39:49.5856199+08:00;</History> |
| | | <History>True|2025-08-22T03:21:45.7413104Z;True|2025-08-15T08:30:13.2395643+08:00;True|2025-08-15T08:25:51.8312481+08:00;True|2025-08-15T00:47:30.6781852+08:00;True|2025-08-07T17:07:22.1687277+08:00;True|2025-07-15T17:34:29.8297232+08:00;True|2025-07-10T09:58:14.0263582+08:00;True|2025-07-10T09:43:37.0135140+08:00;True|2025-07-07T09:47:14.5536194+08:00;True|2025-07-04T09:01:52.1304268+08:00;True|2025-06-30T18:01:52.8637969+08:00;True|2025-06-30T17:01:56.3064177+08:00;True|2025-06-30T16:38:12.1057130+08:00;True|2025-06-28T14:30:49.7946659+08:00;True|2025-06-28T10:55:58.8222554+08:00;True|2025-06-28T08:47:43.7229176+08:00;True|2025-06-26T12:37:56.3484297+08:00;True|2025-06-23T11:05:39.8485399+08:00;True|2025-06-23T10:17:43.5808008+08:00;True|2025-06-23T09:54:40.9326213+08:00;True|2025-06-23T09:37:35.0797885+08:00;True|2025-06-20T10:31:11.5116619+08:00;True|2025-06-19T17:43:29.0660951+08:00;True|2025-06-19T15:33:15.5169520+08:00;True|2025-06-17T15:08:30.3988621+08:00;True|2025-06-17T11:49:45.7757057+08:00;False|2025-06-17T11:46:12.2872897+08:00;True|2025-06-17T11:14:34.8780060+08:00;True|2025-06-17T10:58:01.4890300+08:00;True|2025-05-20T11:49:19.9344988+08:00;True|2025-05-19T16:43:32.2157734+08:00;True|2025-05-19T16:12:01.9378787+08:00;True|2025-05-15T16:58:47.2930537+08:00;True|2025-05-15T13:17:15.3596644+08:00;True|2025-05-15T13:11:17.2616075+08:00;True|2025-05-15T12:57:49.7942020+08:00;True|2025-05-15T12:38:37.7925022+08:00;True|2025-05-15T12:28:15.6975809+08:00;True|2025-05-15T11:44:00.9991686+08:00;True|2025-05-15T10:37:45.5900920+08:00;True|2025-05-14T11:31:54.9438366+08:00;True|2025-05-14T09:59:15.2570833+08:00;True|2025-05-14T09:57:55.8054307+08:00;True|2025-05-14T09:39:18.3194886+08:00;True|2025-05-13T17:13:53.4476748+08:00;True|2025-05-13T15:21:11.2441407+08:00;True|2025-05-13T10:39:40.0223843+08:00;True|2025-05-09T11:16:41.1746344+08:00;True|2025-04-27T19:58:33.9706872+08:00;True|2025-04-27T14:52:52.9853720+08:00;True|2025-04-21T17:54:03.6534614+08:00;True|2025-04-19T10:28:25.0898569+08:00;True|2025-04-17T14:04:50.3243452+08:00;True|2025-03-27T16:23:43.2657011+08:00;True|2025-03-25T12:01:47.0052741+08:00;True|2025-02-14T17:36:18.5767695+08:00;True|2025-02-14T14:39:49.5856199+08:00;</History> |
| | | <LastFailureDetails /> |
| | | </PropertyGroup> |
| | | </Project> |
| | |
| | | //è¿æ¥å符串 |
| | | //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=", |
| | | "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_WHSY;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | "WMSConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_WHSY;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //è·¨å |
| | | "Cors": { |
| | | "PolicyName": "CorsIpAccess", //çç¥åç§° |
| | |
| | | using AutoMapper; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; |
| | | using SqlSugar; |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseServices; |
| | | using WIDESEAWCS_Core.Const; |
| | | using WIDESEAWCS_Core.DB; |
| | | using WIDESEAWCS_Core.Helper; |
| | | using WIDESEAWCS_IShuttleCar; |
| | | using WIDESEAWCS_IShuttleCarInfoRepository; |
| | | using WIDESEAWCS_Model.Models; |
| | |
| | | { |
| | | return BaseDal.QueryFirst(x => x.ShuttleCarCode != ShuttleCarCode); |
| | | } |
| | | public override WebResponseContent UpdateData(SaveModel saveModel) |
| | | { |
| | | WebResponseContent responseContent = new WebResponseContent().OK(); |
| | | try |
| | | { |
| | | Dt_ShuttleCar shuttleCar = BaseDal.QueryFirst(x => x.ShuttleCarId == saveModel.MainData["shuttleCarId"].ObjToInt()); |
| | | var Position = saveModel.MainData["shuttleCarPosition"].ToString(); |
| | | if (BaseDal.QueryData(x => x.ShuttleCarPosition == Position && x.ShuttleCarId != shuttleCar.ShuttleCarId).Any()) |
| | | throw new Exception($"ä½ç½®ã{Position}ãå·²åå¨ç©¿æ¢è½¦"); |
| | | SqlSugarClient WMSsugarClient = new SqlSugarClient(new ConnectionConfig |
| | | { |
| | | ConfigId = MainDb.CurrentDbConnId, |
| | | ConnectionString = AppSettings.Get("WMSConnectionString").DecryptDES(AppSecret.DB), |
| | | IsAutoCloseConnection = true, |
| | | DbType = DbType.SqlServer, |
| | | }); |
| | | |
| | | var getLocation = WMSsugarClient.Queryable("Dt_LocationInfo", "x").Where("LocationCode", "=", Position).Any(); |
| | | if (!getLocation) throw new Exception($"æªæ¾å°ä½ç½®ã{Position}ã"); |
| | | shuttleCar.ShuttleCarPosition = Position; |
| | | shuttleCar.ShuttleCarPosition1 = Position; |
| | | BaseDal.UpdateData(shuttleCar); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | responseContent.Error(ex.Message); |
| | | } |
| | | return responseContent; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | else if (TaskOutboundTypes.Contains(task.TaskType)) |
| | | { |
| | | if (task.TaskState < TaskOutStatusEnum.SC_OutFinish.ObjToInt()) |
| | | if (task.TaskState < TaskOutStatusEnum.OutFinish.ObjToInt()) |
| | | { |
| | | task.TaskState = TaskOutStatusEnum.SC_OutFinish.ObjToInt(); |
| | | task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt(); |
| | | ToWMSCompletedTask(task); |
| | | } |
| | | AddTask_Hty(task, TaskOperateTypeEnum.ManualCompletion); |
| | |
| | | { |
| | | case (int)TaskInboundTypeEnum.Inbound: |
| | | case (int)TaskInboundTypeEnum.PalletInbound: |
| | | case (int)TaskInboundTypeEnum.InQuality: |
| | | taskType = ShuttleCarTaskType.In; |
| | | break; |
| | | case (int)TaskOutboundTypeEnum.Outbound: |
| | | case (int)TaskOutboundTypeEnum.PalletOutbound: |
| | | case (int)TaskOutboundTypeEnum.OutQuality: |
| | | taskType = ShuttleCarTaskType.Out; |
| | | break; |
| | | case (int)TaskOtherTypeEnum.RelocationCar: |
| | |
| | | { |
| | | case (int)TaskInboundTypeEnum.Inbound: |
| | | case (int)TaskInboundTypeEnum.PalletInbound: |
| | | case (int)TaskInboundTypeEnum.InQuality: |
| | | state = (int)TaskInStatusEnum.Car_InExecuting; |
| | | break; |
| | | case (int)TaskOutboundTypeEnum.Outbound: |
| | | case (int)TaskOutboundTypeEnum.PalletOutbound: |
| | | case (int)TaskOutboundTypeEnum.OutQuality: |
| | | state = (int)TaskOutStatusEnum.Car_OutExecuting; |
| | | break; |
| | | case (int)TaskRelocationTypeEnum.Relocation: |
| | |
| | | private readonly ITaskService _taskService; |
| | | private readonly ITaskRepository _taskRepository; |
| | | private readonly ITaskHtyService _taskHtyService; |
| | | private readonly IShuttleCarService _shuttleCarService; |
| | | private readonly WIDESEAWCS_IShuttleCar.IShuttleCarService _shuttleCarService; |
| | | private readonly ITaskExecuteDetailService _taskExecuteDetailService; |
| | | private readonly IRouterService _routerService; |
| | | private readonly ICacheService _cacheService; |
| | | private readonly IMapper _mapper; |
| | | |
| | | public CommonShuttleCarJob(ITaskService taskService, ITaskRepository taskRepository, ITaskHtyService taskHtyService, IShuttleCarService shuttleCarService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, ICacheService cacheService, IMapper mapper) |
| | | public CommonShuttleCarJob(ITaskService taskService, ITaskRepository taskRepository, ITaskHtyService taskHtyService, WIDESEAWCS_IShuttleCar.IShuttleCarService shuttleCarService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, ICacheService cacheService, IMapper mapper) |
| | | { |
| | | _taskService = taskService; |
| | | _taskRepository = taskRepository; |
| | |
| | | private readonly ITaskExecuteDetailService _taskExecuteDetailService; |
| | | private readonly ITaskRepository _taskRepository; |
| | | private readonly IRouterService _routerService; |
| | | private readonly IShuttleCarService _shuttleCarService; |
| | | private readonly WIDESEAWCS_IShuttleCar.IShuttleCarService _shuttleCarService; |
| | | private readonly ICacheService _cacheService; |
| | | |
| | | public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IShuttleCarService shuttleCarService, ICacheService cacheService) |
| | | public CommonStackerCraneJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, WIDESEAWCS_IShuttleCar.IShuttleCarService shuttleCarService, ICacheService cacheService) |
| | | { |
| | | _taskService = taskService; |
| | | _taskExecuteDetailService = taskExecuteDetailService; |
| | |
| | | #endregion |
| | | |
| | | #region ä»»å¡å®æ |
| | | if (common.CompleteStatus == 2 || common.CompleteStatus == 3 || common.CompleteStatus == 4) |
| | | if ((common.CompleteStatus == 2 || common.CompleteStatus == 3 || common.CompleteStatus == 4) && commonStackerCrane.CurrentTaskNum > 0) |
| | | { |
| | | var remark = "æ£å¸¸å®æ"; |
| | | if (common.CompleteStatus == 2) remark = "æå¨å®æ"; |
| | |
| | | if (common.Onlinestate == (short)Onlinestate.online) |
| | | { |
| | | #region æ¥è¯¢ä»»å¡,é»è¾å¤ç |
| | | if (common.RunStatus == (short)RunStatus.Standby) |
| | | if (common.RunStatus == (short)RunStatus.Standby && common.WriteStatus == (short)WriteStatus.Permit) |
| | | { |
| | | #region ç©¿æ¢è½¦ç§»è½¦/å
çµä»»å¡ |
| | | var Task = _taskService.GetTaskState((int)CarChargingTaskEnum.CarCharging_Finish, (int)TaskOtherTypeEnum.RelocationCarCharging) ?? |
| | |
| | | { |
| | | if (commonStackerCrane.SetValue(StackerCraneDBName.CommandSend, sendFlag)) |
| | | { |
| | | WriteDebug($"{commonStackerCrane.DeviceName}æ¥æ¶ä»»å¡", $"WCSä¸åä»»å¡,ä»»å¡å·ã{task.TaskNum}ã"); |
| | | if (_taskService.TaskInboundTypes.Contains(task.TaskType) || |
| | | _taskService.TaskOutboundTypes.Contains(task.TaskType)) |
| | | commonStackerCrane.LastTaskType = task.TaskType; |
| | |
| | | } |
| | | } |
| | | } catch (error) { |
| | | console.log(error); |
| | | console.log(111); |
| | | Message.error({ |
| | | showClose: true, |
| | | message: responseText, |
| | |
| | | var xhr = createXHR(); |
| | | xhr.onreadystatechange = function () { |
| | | if (xhr.status == 403 || xhr.status == 401) { |
| | | console.log(11) |
| | | redirect(xhr.responseText); |
| | | return; |
| | | } |
| | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | | //妿è¦é
ç½®æç»è¡¨,卿¤æ¹æ³æä½ |
| | | //this.detailOptions.columns.forEach(column=>{ }); |
| | | }, |
| | | searchBefore(param) { |
| | | //ç颿¥è¯¢å,å¯ä»¥ç»param.wheresæ·»å æ¥è¯¢åæ° |
| | | //è¿åfalseï¼åä¸ä¼æ§è¡æ¥è¯¢ |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | | //æ¥è¯¢åï¼resultè¿åçæ¥è¯¢æ°æ®,å¯ä»¥å¨æ¾ç¤ºå°è¡¨æ ¼åå¤çè¡¨æ ¼çå¼ |
| | | return true; |
| | | }, |
| | | addBefore(formData) { |
| | | //æ°å»ºä¿ååformData为对象ï¼å
æ¬æç»è¡¨ï¼å¯ä»¥ç»ç»è¡¨å设置å¼ï¼èªå·±è¾åºçformDataçå¼ |
| | | return true; |
| | | }, |
| | | updateBefore(formData) { |
| | | //ç¼è¾ä¿ååformData为对象ï¼å
æ¬æç»è¡¨ãå é¤è¡çId |
| | | return true; |
| | | }, |
| | | rowClick({ row, column, event }) { |
| | | //æ¥è¯¢çé¢ç¹å»è¡äºä»¶ |
| | | // this.$refs.table.$refs.table.toggleRowSelection(row); //åå»è¡æ¶éä¸å½åè¡; |
| | | }, |
| | | modelOpenAfter(row) { |
| | | //ç¹å»ç¼è¾ãæ°å»ºæé®å¼¹åºæ¡åï¼å¯ä»¥å¨æ¤å¤åé»è¾ï¼å¦ï¼ä»åå°è·åæ°æ® |
| | | //(1)夿æ¯ç¼è¾è¿æ¯æ°å»ºæä½ï¼ this.currentAction=='Add'; |
| | | //(2)ç»å¼¹åºæ¡è®¾ç½®é»è®¤å¼ |
| | | //(3)this.editFormFields.åæ®µ='xxx'; |
| | | //妿éè¦ç»ä¸ææ¡è®¾ç½®é»è®¤å¼ï¼è¯·éåthis.editFormOptionsæ¾å°å段é
置对åºdata屿§çkeyå¼ |
| | | //ç䏿就æè¾åºçï¼console.log(this.editFormOptions) |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | | gridHeader: '', |
| | | gridBody: '', |
| | | gridFooter: '', |
| | | //æ°å»ºãç¼è¾å¼¹åºæ¡æ©å±ç»ä»¶ |
| | | modelHeader: '', |
| | | modelBody: '', |
| | | modelFooter: '' |
| | | }, |
| | | tableAction: '', //æå®æå¼ 表çæé(è¿éå¡«å表å,é»è®¤ä¸ç¨å¡«å) |
| | | buttons: { view: [], box: [], detail: [] }, //æ©å±çæé® |
| | | methods: { |
| | | //ä¸é¢è¿äºæ¹æ³å¯ä»¥ä¿çä¹å¯ä»¥å é¤ |
| | | onInit() { |
| | | this.buttons.forEach(x => { |
| | | if (x.name == "ç¼ è¾") { |
| | | x.name = "审 æ ¸"; |
| | | } |
| | | }); |
| | | let enableBtn = this.buttons.find(x => x.value == 'Update'); |
| | | if (enableBtn) { |
| | | enableBtn.onClick = function () { |
| | | let rows = this.$refs.table.getSelected(); |
| | | if (rows.length == 0) return this.$error("è¯·éæ©åºåæ¹æ¬¡ä¿¡æ¯!"); |
| | | if (rows.length > 1) return this.$error("䏿¬¡åªå¯å®¡æ¹ä¸ä¸ªåºåæ¹æ¬¡ä¿¡æ¯!"); |
| | | this.edit(); |
| | | // this.$message.success('èªå®ä¹æé®ç¹å»äºä»¶'); |
| | | // let params = { |
| | | // MethodName: "LocationEnableStatus", |
| | | // Remark: "å¯ç¨", |
| | | // keys: null |
| | | // } |
| | | // this.enableStatus(params) |
| | | } |
| | | } |
| | | }, |
| | | onInited() { |
| | | //æ¡æ¶åå§åé
ç½®å |
| | | //妿è¦é
ç½®æç»è¡¨,卿¤æ¹æ³æä½ |
| | | //this.detailOptions.columns.forEach(column=>{ }); |
| | | }, |
| | | searchBefore(param) { |
| | | //ç颿¥è¯¢å,å¯ä»¥ç»param.wheresæ·»å æ¥è¯¢åæ° |
| | | //è¿åfalseï¼åä¸ä¼æ§è¡æ¥è¯¢ |
| | | return true; |
| | | }, |
| | | searchAfter(result) { |
| | | //æ¥è¯¢åï¼resultè¿åçæ¥è¯¢æ°æ®,å¯ä»¥å¨æ¾ç¤ºå°è¡¨æ ¼åå¤çè¡¨æ ¼çå¼ |
| | | return true; |
| | | }, |
| | | addBefore(formData) { |
| | | //æ°å»ºä¿ååformData为对象ï¼å
æ¬æç»è¡¨ï¼å¯ä»¥ç»ç»è¡¨å设置å¼ï¼èªå·±è¾åºçformDataçå¼ |
| | | return true; |
| | | }, |
| | | updateBefore(formData) { |
| | | //ç¼è¾ä¿ååformData为对象ï¼å
æ¬æç»è¡¨ãå é¤è¡çId |
| | | return true; |
| | | }, |
| | | rowClick({ row, column, event }) { |
| | | //æ¥è¯¢çé¢ç¹å»è¡äºä»¶ |
| | | // this.$refs.table.$refs.table.toggleRowSelection(row); //åå»è¡æ¶éä¸å½åè¡; |
| | | }, |
| | | modelOpenAfter(row) { |
| | | //ç¹å»ç¼è¾ãæ°å»ºæé®å¼¹åºæ¡åï¼å¯ä»¥å¨æ¤å¤åé»è¾ï¼å¦ï¼ä»åå°è·åæ°æ® |
| | | //(1)夿æ¯ç¼è¾è¿æ¯æ°å»ºæä½ï¼ this.currentAction=='Add'; |
| | | //(2)ç»å¼¹åºæ¡è®¾ç½®é»è®¤å¼ |
| | | //(3)this.editFormFields.åæ®µ='xxx'; |
| | | //妿éè¦ç»ä¸ææ¡è®¾ç½®é»è®¤å¼ï¼è¯·éåthis.editFormOptionsæ¾å°å段é
置对åºdata屿§çkeyå¼ |
| | | //ç䏿就æè¾åºçï¼console.log(this.editFormOptions) |
| | | } |
| | | }; |
| | | export default extension; |
| | | |
| | | } |
| | | }; |
| | | export default extension; |
| | |
| | | }} |
| | | </div> |
| | | <div>è´§ä½ç¶æï¼{{ getStatusText(col.locationStatus) }}</div> |
| | | <div>ç©æåç§°ï¼ {{ col.materielName }}</div> |
| | | <div>æ¹å·ï¼{{ col.batchNo }}</div> |
| | | <div>ç©æç¼å·ï¼ {{ col.materielCode }}</div> |
| | | <div>æ¹å·ï¼{{ col.orderNo }}</div> |
| | | <div>æå·ï¼{{ col.batchNo }}</div> |
| | | <div>æ°éï¼{{ col.quantity }}æ</div> |
| | | <div>ç©æåç§°ï¼ {{ col.materielName }}</div> |
| | | <div>ææ°ï¼{{ col.quantity }}</div> |
| | | <div>ç®±æ°ï¼{{ col.boxQty }}</div> |
| | | <div>è¢æ°ï¼{{ col.stockQuantity }}</div> |
| | | <!-- <div>æçå·ï¼{{ col.palletCode }}</div> --> |
| | | <div>å
¥åºæ¶é´ï¼{{ col.inDate }}</div> |
| | | <div>å¯ç¨ç¶æï¼{{ getEnableStatusText(col.enalbeStatus) }}</div> |
| | |
| | | <div>欢è¿ç»å½...</div> |
| | | <div class="login-line"></div> |
| | | </div> |
| | | <div style="flex:1;"></div> |
| | | <div style="flex: 1"></div> |
| | | </div> |
| | | <div class="login-text-small">WELCOME TO LOGIN</div> |
| | | <div class="item"> |
| | | <div class="input-icon el-icon-user"></div> |
| | | <input type="text" v-focus v-model="userInfo.userName" placeholder="请è¾å
¥è´¦å·" /> |
| | | <input |
| | | type="text" |
| | | v-focus |
| | | v-model="userInfo.userName" |
| | | placeholder="请è¾å
¥è´¦å·" |
| | | /> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="input-icon el-icon-lock"></div> |
| | | <input type="password" v-focus v-model="userInfo.password" placeholder="请è¾å
¥å¯ç " /> |
| | | <input |
| | | type="password" |
| | | v-focus |
| | | v-model="userInfo.password" |
| | | placeholder="请è¾å
¥å¯ç " |
| | | /> |
| | | </div> |
| | | <div class="item"> |
| | | <div class="input-icon el-icon-mobile"></div> |
| | | |
| | | <input v-focus type="text" v-model="userInfo.verificationCode" placeholder="è¾å
¥éªè¯ç " /> |
| | | <input |
| | | v-focus |
| | | type="text" |
| | | v-model="userInfo.verificationCode" |
| | | placeholder="è¾å
¥éªè¯ç " |
| | | /> |
| | | <div class="code" @click="getVierificationCode"> |
| | | <img v-show="codeImgSrc != ''" :src="codeImgSrc" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="loging-btn"> |
| | | <el-button size="large" :loading="loading" color="#3a6cd1" :dark="true" @click="login" long> |
| | | <el-button |
| | | size="large" |
| | | :loading="loading" |
| | | color="#3a6cd1" |
| | | :dark="true" |
| | | @click="login" |
| | | long |
| | | > |
| | | <span v-if="!loading">ç»å½</span> |
| | | <span v-else>æ£å¨ç»å½...</span> |
| | | </el-button> |
| | |
| | | ref, |
| | | reactive, |
| | | toRefs, |
| | | getCurrentInstance |
| | | } from 'vue'; |
| | | import { useRouter, useRoute } from 'vue-router'; |
| | | import store from '../store/index'; |
| | | import http from '@/../src/api/http.js'; |
| | | getCurrentInstance, |
| | | } from "vue"; |
| | | import { useRouter, useRoute } from "vue-router"; |
| | | import store from "../store/index"; |
| | | import http from "@/../src/api/http.js"; |
| | | export default defineComponent({ |
| | | setup(props, context) { |
| | | store.commit('clearUserInfo', ''); |
| | | store.commit("clearUserInfo", ""); |
| | | const loading = ref(false); |
| | | const codeImgSrc = ref(''); |
| | | const codeImgSrc = ref(""); |
| | | const userInfo = reactive({ |
| | | userName: '', |
| | | password: '', |
| | | verificationCode: '', |
| | | UUID: undefined |
| | | userName: "", |
| | | password: "", |
| | | verificationCode: "", |
| | | UUID: undefined, |
| | | }); |
| | | |
| | | const getVierificationCode = () => { |
| | | http.get('/api/User/getVierificationCode').then((x) => { |
| | | codeImgSrc.value = 'data:image/png;base64,' + x.img; |
| | | http.get("/api/User/getVierificationCode").then((x) => { |
| | | codeImgSrc.value = "data:image/png;base64," + x.img; |
| | | userInfo.UUID = x.uuid; |
| | | }); |
| | | }; |
| | |
| | | let router = useRouter(); |
| | | |
| | | const login = () => { |
| | | if (!userInfo.userName) return $message.error('请è¾å
¥ç¨æ·å'); |
| | | if (!userInfo.password) return $message.error('请è¾å
¥å¯ç '); |
| | | if (!userInfo.verificationCode) return $message.error('请è¾å
¥éªè¯ç '); |
| | | if (userInfo.verificationCode!="1234") return $message.error('éªè¯ç æè¯¯'); |
| | | if (!userInfo.userName) return $message.error("请è¾å
¥ç¨æ·å"); |
| | | if (!userInfo.password) return $message.error("请è¾å
¥å¯ç "); |
| | | if (!userInfo.verificationCode) return $message.error("请è¾å
¥éªè¯ç "); |
| | | if (userInfo.verificationCode != "1234") |
| | | return $message.error("éªè¯ç æè¯¯"); |
| | | loading.value = true; |
| | | http.post('/api/User/login', userInfo, 'æ£å¨ç»å½....').then((result) => { |
| | | http.post("/api/User/login", userInfo, "æ£å¨ç»å½....").then((result) => { |
| | | if (!result.status) { |
| | | loading.value = false; |
| | | getVierificationCode(); |
| | | return $message.error(result.message); |
| | | } |
| | | $message.success('ç»å½æå,æ£å¨è·³è½¬!'); |
| | | store.commit('setUserInfo', result.data); |
| | | router.push({ path: '/' }); |
| | | if (result.message != "") $message.error(result.message); |
| | | $message.success("ç»å½æå,æ£å¨è·³è½¬!"); |
| | | store.commit("setUserInfo", result.data); |
| | | router.push({ path: "/" }); |
| | | }); |
| | | }; |
| | | const loginPress = (e) => { |
| | |
| | | } |
| | | }; |
| | | const openUrl = (url) => { |
| | | window.open(url, '_blank'); |
| | | window.open(url, "_blank"); |
| | | }; |
| | | return { |
| | | loading, |
| | |
| | | login, |
| | | userInfo, |
| | | loginPress, |
| | | openUrl |
| | | openUrl, |
| | | }; |
| | | }, |
| | | directives: { |
| | | focus: { |
| | | inserted: function (el) { |
| | | el.focus(); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | }, |
| | | }); |
| | | </script> |
| | | <style lang="less" scoped> |
| | |
| | | |
| | | <style lang="less" scoped> |
| | | @media screen and (max-width: 700px) { |
| | | |
| | | .login-bg, |
| | | .account-info, |
| | | .app-link, |
| | |
| | | materielDes: "", |
| | | isMixBatch: "", |
| | | isMixMateriel: "", |
| | | validity: "", |
| | | }); |
| | | const editFormOptions = ref([ |
| | | [ |
| | |
| | | field: "materielName", |
| | | type: "string", |
| | | }, |
| | | ], |
| | | [ |
| | | // { |
| | | // title: "å
许混æ¹", |
| | | // field: "isMixBatch", |
| | | // type: "string", |
| | | // }, |
| | | // { |
| | | // title: "å
许混æ", |
| | | // field: "isMixMateriel", |
| | | // type: "string", |
| | | // }, |
| | | { |
| | | title: "æææ", |
| | | required: true, |
| | | field: "validity", |
| | | type: "string", |
| | | }, |
| | | { |
| | | title: "计éåä½", |
| | | required: true, |
| | | field: "unit", |
| | | type: "string", |
| | | }, |
| | | ], |
| | | [ |
| | | { |
| | | title: "å
许混æ¹", |
| | | field: "isMixBatch", |
| | | type: "string", |
| | | }, |
| | | { |
| | | title: "å
许混æ", |
| | | field: "isMixMateriel", |
| | | type: "string", |
| | | }, |
| | | { |
| | |
| | | require: true, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "areaId", |
| | | title: "åºå主é®", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | // { |
| | | // field: "areaId", |
| | | // title: "åºå主é®", |
| | | // type: "string", |
| | | // width: 90, |
| | | // align: "left", |
| | | // }, |
| | | { |
| | | field: "materielCode", |
| | | title: "ç©æç¼å·", |
| | |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "cotainerType", |
| | | title: "容å¨ç±»å", |
| | | type: "string", |
| | | width: 90, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "packspes", |
| | | title: "å
è£
è§æ ¼", |
| | | type: "int", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "attribute", |
| | | title: "ç©æå±æ§", |
| | | type: "string", |
| | | width: 200, |
| | | align: "left", |
| | | }, |
| | | // { |
| | | // field: "cotainerType", |
| | | // title: "容å¨ç±»å", |
| | | // type: "string", |
| | | // width: 90, |
| | | // align: "left", |
| | | // }, |
| | | // { |
| | | // field: "packspes", |
| | | // title: "å
è£
è§æ ¼", |
| | | // type: "int", |
| | | // width: 120, |
| | | // align: "left", |
| | | // }, |
| | | // { |
| | | // field: "attribute", |
| | | // title: "ç©æå±æ§", |
| | | // type: "string", |
| | | // width: 200, |
| | | // align: "left", |
| | | // }, |
| | | { |
| | | field: "unit", |
| | | title: "计éåä½", |
| | |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | { |
| | | field: "safetyStock", |
| | | title: "å®å
¨åºå", |
| | | type: "string", |
| | | width: 120, |
| | | align: "left", |
| | | }, |
| | | // { |
| | | // field: "safetyStock", |
| | | // title: "å®å
¨åºå", |
| | | // type: "string", |
| | | // width: 120, |
| | | // align: "left", |
| | | // }, |
| | | { |
| | | field: "creater", |
| | | title: "å建人", |
| | |
| | | sortName: "id", |
| | | }); |
| | | const editFormFields = ref({ |
| | | productStatus: "", |
| | | certificateNumber: "", |
| | | materielCode:"", |
| | | materielName:"", |
| | | shelfLife:"", |
| | | boxQuantity:"", |
| | | outboundQuantity:"", |
| | | stockQuantity:"", |
| | | productionDate:"", |
| | | remark:"", |
| | | validityPeriod:"", |
| | | batchNo:"" |
| | | }); |
| | | const editFormOptions = ref([]); |
| | | const editFormOptions = ref([ |
| | | [ |
| | | { |
| | | title: "产åç¶æ", |
| | | field: "productStatus", |
| | | type: "select", |
| | | dataKey: "productStatusEmun", |
| | | data: [], |
| | | }, |
| | | { |
| | | title: "åæ ¼è¯å·", |
| | | required: true, |
| | | field: "certificateNumber", |
| | | type: "string", |
| | | }, |
| | | ], |
| | | ]); |
| | | const searchFormFields = ref({ |
| | | deviceCode: "", |
| | | deviceType: "", |
| | |
| | | }); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { title: "æçç¼å·", field: "palletCode", type: "like" }, |
| | | { title: "è´§ä½ç¼å·", field: "locationCode", type: "like" }, |
| | | { title: "æ¹å·", field: "batchNo", type: "like" }, |
| | | { |
| | | title: "åºåç¶æ", |
| | | field: "stockStatus", |
| | | title: "产åç¶æ", |
| | | field: "productStatus", |
| | | type: "select", |
| | | dataKey: "stockStatusEmun", |
| | | dataKey: "productStatusEmun", |
| | | data: [], |
| | | }, |
| | | ], |
| | |
| | | }); |
| | | const searchFormOptions = ref([ |
| | | [ |
| | | { title: "æ¹å·", field: "batchNo", type: "like" }, |
| | | { title: "æçç¼å·", field: "palletCode", type: "like" }, |
| | | ], |
| | | [ |
| | | { title: "è´§ä½ç¼å·", field: "locationCode", type: "like" }, |
| | | { |
| | | title: "åºåç¶æ", |
| | |
| | | url: "/Task/", |
| | | sortName: "taskNum", |
| | | }); |
| | | const editFormFields = ref({}); |
| | | const editFormOptions = ref([]); |
| | | const editFormFields = ref({palletCode:""}); |
| | | const editFormOptions = ref([[{ |
| | | title: "æçç¼å·", |
| | | required: true, |
| | | field: "palletCode", |
| | | type: "string", |
| | | },]]); |
| | | const searchFormFields = ref({ |
| | | taskNum: "", |
| | | palletCode: "", |
| | |
| | | /// |
| | | /// </summary> |
| | | private readonly RequestDelegate _next; |
| | | private readonly ILogger<ApiLogMiddleware> _logger; |
| | | |
| | | public ApiLogMiddleware(RequestDelegate next, ILogger<ApiLogMiddleware> logger) |
| | | { |
| | | _next = next; |
| | | _logger = logger; |
| | | } |
| | | |
| | | //todo |
| | | public async Task InvokeAsync(HttpContext context) |
| | | { |
| | | if (App.ExpDateTime != null && (DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0) |
| | | { |
| | | context.Response.StatusCode = HttpStatusCode.InternalServerError.ObjToInt(); |
| | | context.Response.ContentType = "application/json"; |
| | | //if (App.ExpDateTime != null) |
| | | //{ |
| | | // if ((DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0) |
| | | // { |
| | | // await ReturnExpiredResponse(context, "ç³»ç»å·²è¿æï¼è¯·è系管çå"); |
| | | // return; |
| | | // } |
| | | // //var Hours = (App.ExpDateTime.GetValueOrDefault() - DateTime.Now).TotalHours; |
| | | // //if (Hours < 72) |
| | | // //{ |
| | | // // // è®°å½è¦åæ¥å¿ |
| | | // // _logger.LogWarning($"ç³»ç»å³å°å°æï¼å©ä½æ¶é´ï¼{Hours:F2}å°æ¶ï¼å°ææ¶é´ï¼{App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss}"); |
| | | |
| | | var json = new WebResponseContent(); |
| | | // // // å¨ååºå¤´ä¸æ·»å å°ææç¤º |
| | | // // context.Response.Headers.Add("X-Expiration-Warning", |
| | | // // $"ç³»ç»å°å¨ {Hours:F2} å°æ¶åå°æ ({App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss})"); |
| | | |
| | | json.Message = HttpStatusCode.InternalServerError.ToString();//éè¯¯ä¿¡æ¯ |
| | | json.Code = 500;//500å¼å¸¸ |
| | | // // // 妿éè¦ç´æ¥è¿åæç¤ºä¿¡æ¯ï¼åæ¶ä¸é¢ç注é |
| | | // // await ReturnExpirationWarningResponse(context, Hours); |
| | | // // return; |
| | | // //} |
| | | |
| | | StreamWriter streamWriter = new StreamWriter(context.Response.Body); |
| | | await streamWriter.WriteAsync(json.Serialize()); |
| | | return; |
| | | } |
| | | //} |
| | | |
| | | // è¿æ»¤ï¼åªææ¥å£ |
| | | if (context.Request.Path.Value?.Contains("api") ?? false) |
| | | { |
| | | if (App.ExpDateTime != null) |
| | | { |
| | | if ((DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0 && !context.Request.Path.Value.Contains("getVierificationCode") && context.Request.Path.Value != "/api/User/login") |
| | | { |
| | | await ReturnExpiredResponse(context, "ç³»ç»å·²è¿æï¼è¯·è系管çå"); |
| | | return; |
| | | } |
| | | } |
| | | context.Request.EnableBuffering(); |
| | | Stream originalBody = context.Response.Body; |
| | | string requestParam = string.Empty; |
| | |
| | | |
| | | ms.Position = 0; |
| | | await ms.CopyToAsync(originalBody); |
| | | if (!((context.Request.Path.Value?.Contains("get")) ?? true) && !((context.Request.Path.Value?.Contains("Get")) ?? true) && !((context.Request.Path.Value?.Contains("query")) ?? true) && !((context.Request.Path.Value?.Contains("Query")) ?? true) && !((context.Request.Path.Value?.Contains("DownLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("downLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("UploadApp")) ?? true) && !((context.Request.Path.Value?.Contains("uploadApp")) ?? true)) |
| | | if (!ShouldSkipLogging(context.Request.Path.Value)) |
| | | Logger.Add(requestParam, responseParam); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è¿åè¿æååº |
| | | /// </summary> |
| | | private async Task ReturnExpiredResponse(HttpContext context, string message) |
| | | { |
| | | context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; |
| | | context.Response.ContentType = "application/json; charset=utf-8"; |
| | | context.Response.Headers.ContentType= "application/json; charset=utf-8"; |
| | | var json = new WebResponseContent |
| | | { |
| | | Message = message, |
| | | Code = 500 |
| | | }; |
| | | |
| | | var jsonString = JsonConvert.SerializeObject(json); |
| | | await context.Response.WriteAsync(jsonString); |
| | | } |
| | | /// <summary> |
| | | /// è¿åå°æè¦åååºï¼å¯éï¼ |
| | | /// </summary> |
| | | private async Task ReturnExpirationWarningResponse(HttpContext context, double hoursRemaining) |
| | | { |
| | | context.Response.StatusCode = (int)HttpStatusCode.OK; |
| | | context.Response.ContentType = "application/json"; |
| | | |
| | | var expirationDate = App.ExpDateTime.GetValueOrDefault(); |
| | | var response = new |
| | | { |
| | | Code = 200, |
| | | Message = "ç³»ç»å³å°å°æè¦å", |
| | | Data = new |
| | | { |
| | | HoursRemaining = hoursRemaining, |
| | | ExpirationDate = expirationDate, |
| | | FormattedMessage = $"ç³»ç»å°å¨ {Math.Ceiling(hoursRemaining)} å°æ¶åå°æï¼å°ææ¶é´ï¼{expirationDate:yyyy-MM-dd HH:mm:ss}ã请è系管çåç»æã" |
| | | }, |
| | | Warning = true |
| | | }; |
| | | |
| | | var jsonString = JsonConvert.SerializeObject(response); |
| | | await context.Response.WriteAsync(jsonString); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 夿æ¯å¦è·³è¿æ¥å¿è®°å½ |
| | | /// </summary> |
| | | private bool ShouldSkipLogging(string path) |
| | | { |
| | | if (string.IsNullOrEmpty(path)) return false; |
| | | |
| | | var skipKeywords = new[] { "get", "Get", "query", "Query", "DownLoadApp", "downLoadApp", "UploadApp", "uploadApp" }; |
| | | return skipKeywords.Any(keyword => path.Contains(keyword, StringComparison.OrdinalIgnoreCase)); |
| | | } |
| | | |
| | | private string RequestDataLog(HttpContext context) |
| | | { |
| | | var request = context.Request; |
| | |
| | | public class BoundOrderDTO |
| | | { |
| | | /// <summary> |
| | | /// åæ®ç¼å· |
| | | /// æ°é |
| | | /// </summary> |
| | | public string OrderNo { get; set; } |
| | | public decimal Quantity { get; set; } |
| | | /// <summary> |
| | | /// åæ®ç±»å |
| | | /// </summary> |
| | |
| | | |
| | | public string MaterielName { get; set; } |
| | | |
| | | public string OrderNo { get; set; } |
| | | public int BoxQty { get; set; } |
| | | public int StockQuantity { get; set; } |
| | | |
| | | public string BatchNo { get; set; } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | |  |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | |
| | | namespace WIDESEA_Common |
| | | { |
| | | public class WMSResponseContent |
| | | { |
| | | /// <summary> |
| | | /// false:失败ï¼true:æå |
| | | /// </summary> |
| | | public bool success { get; set; } |
| | | /// <summary> |
| | | /// 200æåå¦å失败 |
| | | /// </summary> |
| | | public int code { get; set; } |
| | | /// <summary> |
| | | /// è¿åæ¶æ¯ |
| | | /// </summary> |
| | | public string msg { get; set; } |
| | | /// <summary> |
| | | /// æ°æ® |
| | | /// </summary> |
| | | public object data { get; set; } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | |  |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | |
| | | namespace WIDESEA_Common |
| | | { |
| | | public class WMSSaveModel |
| | | { |
| | | public string serverCode { get; set; } = "C0135"; |
| | | |
| | | //public Params @params { get; set; } |
| | | public Params Params { get; set; } |
| | | |
| | | } |
| | | public class Params |
| | | { |
| | | /// <summary> |
| | | /// å
¥åºè·åæ ç¾ï¼GET_SN_INFO_TWO_BY_WCS<br></br> |
| | | /// ç»æåé¦ï¼AUTOMATIC_PICKING_POSTING<br></br> |
| | | /// è·åç©æä¿¡æ¯ï¼GET_MATERIAL_INFO_TWO_BY_WCS |
| | | /// </summary> |
| | | public string apiMethod { get; set; } |
| | | public object data { get; set; } |
| | | } |
| | | } |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Enums; |
| | |
| | | List<Dt_InboundOrderDetail> orderDetails = new List<Dt_InboundOrderDetail>(); |
| | | foreach (var item in inboundOrders) |
| | | { |
| | | if (item.Details.Where(x => x.ReceiptQuantity != x.OverInQuantity).Any()) |
| | | throw new Exception("å卿ªå
¥åºå®ææç"); |
| | | //if (item.Details.Where(x => x.ReceiptQuantity != x.OverInQuantity).Any()) |
| | | // throw new Exception("å卿ªå
¥åºå®ææç"); |
| | | orderDetails.AddRange(item.Details); |
| | | item.Details = null; |
| | | } |
| | |
| | | List<Dt_OutboundOrderDetail> orderDetails = new List<Dt_OutboundOrderDetail>(); |
| | | foreach (var item in _OutboundOrders) |
| | | { |
| | | if (item.Details.Where(x => x.LockQuantity != x.OverOutQuantity).Any()) |
| | | throw new Exception("å卿ªåºåºå®ææç"); |
| | | //if (item.Details.Where(x => x.LockQuantity != x.OverOutQuantity).Any()) |
| | | // throw new Exception("å卿ªåºåºå®ææç"); |
| | | orderDetails.AddRange(item.Details); |
| | | item.Details = null; |
| | | } |
| | |
| | | ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>(); |
| | | List<Dt_LocationInfo> dt_LocationInfos = sugarQueryable.ToList(); |
| | | |
| | | ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Where(x => dt_LocationInfos.Select(x => x.LocationCode).ToList().Contains(x.LocationCode)).Includes(x => x.Details); |
| | | List<Dt_StockInfo> StockInfos = sugarQueryable1.OrderBy(x => x.InDate).ToList(); |
| | | //ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Where(x => dt_LocationInfos.Select(x => x.LocationCode).ToList().Contains(x.LocationCode)).Includes(x => x.Details); |
| | | //List<Dt_StockInfo> StockInfos = sugarQueryable1.OrderBy(x => x.InDate).ToList(); |
| | | |
| | | ISugarQueryable<Dt_InventoryInfo> sugarQueryable1 = _dbBase.Queryable<Dt_InventoryInfo>().Where(x => dt_LocationInfos.Select(x => x.LocationCode).ToList().Contains(x.LocationCode)); |
| | | List<Dt_InventoryInfo> StockInfos = sugarQueryable1.OrderBy(x => x.InDate).ToList(); |
| | | foreach (var dt_LocationInfo in dt_LocationInfos) |
| | | { |
| | | LocationStockView locationStockView = new LocationStockView() |
| | |
| | | RoadwayNo = dt_LocationInfo.RoadwayNo, |
| | | Row = dt_LocationInfo.Row |
| | | }; |
| | | List<Dt_StockInfo> dt_StockInfos = StockInfos.Where(x => x.LocationCode == dt_LocationInfo.LocationCode).ToList(); |
| | | List<Dt_StockInfoDetail> Details = new List<Dt_StockInfoDetail>(); |
| | | foreach (var item in dt_StockInfos) |
| | | { |
| | | Details.AddRange(item.Details); |
| | | } |
| | | var BatchNo = string.Join(",", Details.GroupBy(x => x.BatchNo).Select(x => x.Key).ToList()); |
| | | List<Dt_InventoryInfo> dt_StockInfos = StockInfos.Where(x => x.LocationCode == dt_LocationInfo.LocationCode).ToList(); |
| | | //List<Dt_StockInfoDetail> Details = new List<Dt_StockInfoDetail>(); |
| | | //foreach (var item in dt_StockInfos) |
| | | //{ |
| | | // Details.AddRange(item.Details); |
| | | //} |
| | | //var BatchNo = string.Join(",", Details.GroupBy(x => x.BatchNo).Select(x => x.Key).ToList()); |
| | | if (dt_StockInfos.Count > 0 && dt_StockInfos != null) |
| | | { |
| | | locationStockView.BatchNo = BatchNo; |
| | | locationStockView.BatchNo = dt_StockInfos.First().BatchNo; |
| | | locationStockView.InDate = dt_StockInfos.OrderByDescending(x => x.InDate).First().InDate; |
| | | locationStockView.MaterielCode = dt_StockInfos.First().Details.First().MaterielCode; |
| | | locationStockView.MaterielName = dt_StockInfos.First().Details.First().MaterielName; |
| | | locationStockView.OrderNo = dt_StockInfos.First().Details.First().OrderNo; |
| | | locationStockView.MaterielCode = dt_StockInfos.First().MaterielCode; |
| | | locationStockView.MaterielName = dt_StockInfos.First().MaterielName; |
| | | //locationStockView.OrderNo = dt_StockInfos.First().OrderNo; |
| | | locationStockView.PalletCode = string.Join(",", dt_StockInfos.Select(x => x.PalletCode).ToList()); |
| | | locationStockView.Quantity = dt_StockInfos.Count; |
| | | locationStockView.BoxQty = dt_StockInfos.Select(x => x.BoxQuantity).Sum(); |
| | | locationStockView.StockQuantity = dt_StockInfos.Select(x => x.StockQuantity).Sum(); |
| | | } |
| | | locationStockViews.Add(locationStockView); |
| | | } |
| | |
| | | { |
| | | private readonly IMapper _mapper; |
| | | public IInventoryBatchRepository Repository => BaseDal; |
| | | public IInventoryInfoRepository _inventoryInfoRepository; |
| | | |
| | | public InventoryBatchService(IInventoryBatchRepository BaseDal, IMapper mapper) : base(BaseDal) |
| | | public InventoryBatchService(IInventoryBatchRepository BaseDal, IInventoryInfoRepository inventoryInfoRepository, IMapper mapper) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | _inventoryInfoRepository = inventoryInfoRepository; |
| | | } |
| | | public List<Dt_Inventory_Batch> GetInventoryBatch(string materielCode) |
| | | { |
| | | List<Dt_Inventory_Batch> dt_Inventories = BaseDal.QueryData(x => x.MaterielCode == materielCode); |
| | | return dt_Inventories; |
| | | } |
| | | |
| | | public override WebResponseContent UpdateData(SaveModel saveModel) |
| | | { |
| | | var productStatus = saveModel.MainData["productStatus"].ObjToInt(); |
| | | var batchNo = saveModel.MainData["batchNo"].ToString(); |
| | | List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoRepository.QueryData(x => x.BatchNo == batchNo); |
| | | inventoryInfos.ForEach(x => |
| | | { |
| | | x.ProductStatus = productStatus; |
| | | }); |
| | | _inventoryInfoRepository.UpdateData(inventoryInfos); |
| | | return base.UpdateData(saveModel); |
| | | } |
| | | } |
| | | } |
| | |
| | | try |
| | | { |
| | | //BaseDal.QueryFirst(x => x.UserName == loginInfo.UserName); |
| | | |
| | | string msg = string.Empty; |
| | | if (App.ExpDateTime != null) |
| | | { |
| | | if ((DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0) |
| | | return WebResponseContent.Instance.Error("ææå·²å°æï¼è¯·è系管çå"); |
| | | var span = App.ExpDateTime.GetValueOrDefault() - DateTime.Now; |
| | | var Days = span.TotalDays; |
| | | var Hours = span.TotalHours; |
| | | var Minutes = span.TotalMinutes; |
| | | var Seconds = span.TotalSeconds; |
| | | if (Minutes < 1) msg = $"ç³»ç»å°å¨ {Math.Ceiling(Seconds)} ç§éåå°æï¼å°ææ¶é´ï¼{App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss}ã请è系管çåç»æã"; |
| | | else if (Hours < 1) msg = $"ç³»ç»å°å¨ {Math.Ceiling(Minutes)} åéåå°æï¼å°ææ¶é´ï¼{App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss}ã请è系管çåç»æã"; |
| | | else if (Hours < 72) msg = $"ç³»ç»å°å¨ {Math.Ceiling(Hours)} å°æ¶åå°æï¼å°ææ¶é´ï¼{App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss}ã请è系管çåç»æã"; |
| | | else if (Days < 7) msg = $"ç³»ç»å°å¨ {Math.Ceiling(Days)} 天åå°æï¼å°ææ¶é´ï¼{App.ExpDateTime.GetValueOrDefault():yyyy-MM-dd HH:mm:ss}ã请è系管çåç»æã"; |
| | | } |
| | | |
| | | #region 临æ¶ä½¿ç¨ |
| | | try |
| | |
| | | |
| | | _cacheService.AddOrUpdate(user.UserId.ToString(), token); |
| | | |
| | | content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl }); |
| | | content = WebResponseContent.Instance.OK(msg, data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl }); |
| | | } |
| | | else |
| | | { |
| | |
| | | int RoleId = saveModel.MainData[nameof(Sys_User.Role_Id).FirstLetterToLower()].ObjToInt(); |
| | | var user = BaseDal.QueryFirst(x => x.User_Id == userId); |
| | | if (User.User_Id == user.User_Id && User.Role_Id != RoleId) return WebResponseContent.Instance.Error("ä¸å¯ä¿®æ¹èªå·±çè§è²"); |
| | | if(User.User_Id != user.User_Id && User.Role_Id >= RoleId) return WebResponseContent.Instance.Error("æéç级ä¸è¶³"); |
| | | if (User.User_Id != user.User_Id && User.Role_Id >= RoleId) return WebResponseContent.Instance.Error("æéç级ä¸è¶³"); |
| | | if (User.Role_Id > user.Role_Id || User.Role_Id == user.Role_Id && User.User_Id != userId) return WebResponseContent.Instance.Error("ææ ä¿®æ¹æé"); |
| | | //if (User.User_Id != userId) return WebResponseContent.Instance.Error("ææ ä¿®æ¹æé");åªéå½åç¨æ·ä¿®æ¹ |
| | | #endregion |
| | |
| | | var qty = saveModel.MainData["qty"].ToString(); |
| | | if (string.IsNullOrEmpty(qty)) throw new Exception("è¢æ°ä¸å¯ä¸ºç©º"); |
| | | var batchNo = saveModel.MainData["batchNo"].ToString(); |
| | | if (string.IsNullOrEmpty(batchNo)) throw new Exception("æå·ä¸å¯ä¸ºç©º"); |
| | | if (string.IsNullOrEmpty(batchNo)) throw new Exception("æ¹å·ä¸å¯ä¸ºç©º"); |
| | | |
| | | #region æ¥è¯¢åºåãå
¥åºå |
| | | Dt_InventoryInfo inventoryInfo = _inventoryInfoRepository.QueryFirst(x => x.PalletCode == palletCode); |
| | |
| | | if (inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity < qty.ObjToInt()) throw new Exception($"æ¹å·ã{batchNo}ãå¯ç»çæ°éä¸è¶³"); |
| | | Dt_InboundOrder? inboundOrder = _inboundService.InbounOrderService.Repository.QueryFirst(x => x.Id == inboundOrderDetail.OrderId); |
| | | if (inboundOrder == null) throw new Exception($"æªæ¾å°æ¹å·ä¸ºã{batchNo}ãçå
¥åºå"); |
| | | Dt_Inventory_Batch inventory_Batch = _inventoryBatchRepository.QueryFirst(x => x.BatchNo == batchNo); |
| | | if (inventory_Batch == null) throw new Exception($"æªæ¾å°æ¹å·ä¸ºã{batchNo}ãçæ¹æ¬¡ä¿¡æ¯"); |
| | | var materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == inboundOrderDetail.MaterielCode); |
| | | if (materielInfo == null) throw new Exception($"æªæ¾å°ç©æä¿¡æ¯,ç©æç¼ç ã{inboundOrderDetail.MaterielCode}ã"); |
| | | //Dt_Inventory_Batch inventory_Batch = _inventoryBatchRepository.QueryFirst(x => x.BatchNo == batchNo); |
| | | //if (inventory_Batch == null && inboundOrder.OrderType == InOrderTypeEnum.Quality.ObjToInt()) |
| | | // throw new Exception($"æªæ¾å°æ¹å·ä¸ºã{batchNo}ãçæ¹æ¬¡ä¿¡æ¯"); |
| | | //bool add = inventory_Batch == null; |
| | | //if (add) |
| | | //{ |
| | | var productionDate = DateTime.Now.ToString("yyyy-MM-dd"); |
| | | var validityPeriod = DateTime.Now.AddDays(materielInfo.Validity).ToString("yyyy-MM-dd");//å 天 |
| | | // inventory_Batch = new Dt_Inventory_Batch() |
| | | // { |
| | | // BatchNo = inboundOrderDetail.BatchNo, |
| | | // MaterielCode = inboundOrderDetail.MaterielCode, |
| | | // MaterielName = inboundOrderDetail.MaterielName, |
| | | // ProductionDate = productionDate, |
| | | // ShelfLife = materielInfo.Validity, |
| | | // ValidityPeriod = validityPeriod, |
| | | // Creater = "System" |
| | | // }; |
| | | //} |
| | | #endregion |
| | | |
| | | #region åå»ºä»»å¡ |
| | |
| | | #region æ·»å åºåä¿¡æ¯ãå¤çå
¥åºå |
| | | inventoryInfo = new Dt_InventoryInfo() |
| | | { |
| | | BatchNo = inventory_Batch.BatchNo, |
| | | MaterielCode = inventory_Batch.MaterielCode, |
| | | MaterielName = inventory_Batch.MaterielName, |
| | | BatchNo = inboundOrderDetail.BatchNo, |
| | | MaterielCode = inboundOrderDetail.MaterielCode, |
| | | MaterielName = inboundOrderDetail.MaterielName, |
| | | PalletCode = palletCode, |
| | | ProductionDate = inventory_Batch.ProductionDate, |
| | | ProductionDate = productionDate, |
| | | StockStatus = StockStatusEmun.ç»çæå.ObjToInt(), |
| | | ProductStatus = dt_Task.TaskType == TaskTypeEnum.InQuality.ObjToInt() ? ProductStatusEmun.å¾
æ£2.ObjToInt() : ProductStatusEmun.å¾
æ£1.ObjToInt(), |
| | | ShelfLife = inventory_Batch.ShelfLife, |
| | | ValidityPeriod = inventory_Batch.ValidityPeriod, |
| | | ShelfLife = materielInfo.Validity, |
| | | ValidityPeriod = validityPeriod, |
| | | StockQuantity = qty.ObjToInt(), |
| | | BoxQuantity = (qty.ObjToInt() % 8 > 0) ? (qty.ObjToInt() / 8) + 1 : qty.ObjToInt() / 8, |
| | | Creater = "System" |
| | |
| | | inboundOrder.OrderStatus = InboundStatusEnum.å
¥åºä¸.ObjToInt(); |
| | | inboundOrderDetail.ReceiptQuantity += inventoryInfo.StockQuantity; |
| | | inboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.GroupAndInbound.ObjToInt(); |
| | | inventory_Batch.ProductStatus = inventoryInfo.ProductStatus; |
| | | //inventory_Batch.ProductStatus = inventoryInfo.ProductStatus; |
| | | #endregion |
| | | |
| | | Db.Ado.BeginTran(); |
| | | _inboundService.InbounOrderService.UpdateData(inboundOrder); |
| | | _inboundService.InboundOrderDetailService.UpdateData(inboundOrderDetail); |
| | | _inventoryInfoRepository.AddData(inventoryInfo); |
| | | _inventoryBatchRepository.UpdateData(inventory_Batch); |
| | | //if (add) |
| | | //{ |
| | | // inventory_Batch.BoxQuantity = inventoryInfo.BoxQuantity; |
| | | // inventory_Batch.OutboundQuantity = inventoryInfo.OutboundQuantity; |
| | | // inventory_Batch.StockQuantity = inventoryInfo.StockQuantity; |
| | | // _inventoryBatchRepository.AddData(inventory_Batch); |
| | | //} |
| | | //else |
| | | // _inventoryBatchRepository.UpdateData(inventory_Batch); |
| | | AddData(dt_Task); |
| | | List<WMSTaskDTO> wMSTaskDTOs = _mapper.Map<List<WMSTaskDTO>>(new List<Dt_Task> { dt_Task }); |
| | | var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ReceiveTask, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>()); |
| | |
| | | } |
| | | else |
| | | { |
| | | Dt_InventoryInfo? _InventoryInfo = _stockService.InventoryInfoService.Repository.QueryData(x => x.BatchNo == inventoryInfo.BatchNo && (x.StockStatus == StockStatusEmun.å
¥åºä¸.ObjToInt() || x.StockStatus == StockStatusEmun.å·²å
¥åº.ObjToInt())).OrderByDescending(x => x.ModifyDate).FirstOrDefault(); |
| | | Dt_InventoryInfo? _InventoryInfo = _stockService.InventoryInfoService.Repository.QueryData(x => x.BatchNo == inventoryInfo.BatchNo && x.StockStatus == StockStatusEmun.å
¥åºä¸.ObjToInt()).OrderByDescending(x => x.ModifyDate).FirstOrDefault(); |
| | | |
| | | if (_InventoryInfo != null) |
| | | { |
| | | locationInfo = _basicService.LocationInfoService.GetLocation(_InventoryInfo.LocationCode); |
| | | if (locationInfo?.MaxQty <= locationInfo?.CurrentQty) locationInfo = null; |
| | | } |
| | | if (locationInfo == null) |
| | | { |
| | | _InventoryInfo = _stockService.InventoryInfoService.Repository.QueryData(x => x.BatchNo == inventoryInfo.BatchNo && x.StockStatus == StockStatusEmun.å·²å
¥åº.ObjToInt()).OrderByDescending(x => x.InDate).FirstOrDefault(); |
| | | if (_InventoryInfo != null) |
| | | { |
| | | locationInfo = _basicService.LocationInfoService.GetLocation(_InventoryInfo.LocationCode); |
| | | if (locationInfo?.MaxQty <= locationInfo?.CurrentQty) locationInfo = null; |
| | | } |
| | | } |
| | | if (locationInfo == null)//åé
æ°è´§ä½ |
| | | { |
| | | var Qty = Convert.ToInt32(inboundOrderDetail.OrderQuantity - inboundOrderDetail.OverInQuantity); |
| | | var Qty = Convert.ToInt32(inboundOrderDetail.OrderQuantity - inboundOrderDetail.ReceiptQuantity); |
| | | var ts = Qty / 320; |
| | | if (Qty % 320 > 0) ts++; |
| | | int inboundOrderCount = ts > 12 ? 2 : 1; |
| | |
| | | task.SourceIsPickPlace = false; |
| | | inventoryInfo.LocationCode = locationInfo.LocationCode; |
| | | inventoryInfo.StockStatus = StockStatusEmun.å
¥åºä¸.ObjToInt(); |
| | | inventoryInfo.ModifyDate = DateTime.Now; |
| | | locationInfo.CurrentQty++; |
| | | if (locationInfo.MaxQty < locationInfo.CurrentQty) locationInfo.CurrentQty = locationInfo.MaxQty; |
| | | inventoryInfo.SerialNumber = locationInfo.CurrentQty; |
| | |
| | | return webResponse.Error($"æ¹å·ã{batchNo}ã已质æ£å
¥åº"); |
| | | List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoRepository.QueryData(x => x.BatchNo == batchNo && x.StockStatus == StockStatusEmun.å·²å
¥åº.ObjToInt()).OrderByDescending(x => x.InDate).Take(qty).ToList(); |
| | | if (_InventoryInfos.Count < 1) return webResponse.Error($"æªæ¾å°æ¹å·ã{batchNo}ãçåºå"); |
| | | Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == _InventoryInfos.First().LocationCode); |
| | | List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => _InventoryInfos.Select(x => x.LocationCode).ToList().Contains(x.LocationCode)); |
| | | List<Dt_Task> tasks = new List<Dt_Task>(); |
| | | List<Dt_OutStockLockInfo> OutStockLockInfos = new List<Dt_OutStockLockInfo>(); |
| | | #region çæè´¨æ£åºåºå |
| | |
| | | #endregion |
| | | foreach (var item in _InventoryInfos) |
| | | { |
| | | var locationInfo = locationInfos.First(x => x.LocationCode == item.LocationCode); |
| | | orderDetail.MaterielCode = item.MaterielCode; |
| | | orderDetail.MaterielName = item.MaterielName; |
| | | orderDetail.OrderQuantity += item.StockQuantity; |
| | |
| | | Grade = 0, |
| | | PalletCode = item.PalletCode, |
| | | SourceIsPickPlace = item.SerialNumber == locationInfo.MaxQty, |
| | | NextAddress = "1005", |
| | | NextAddress = "1008", |
| | | Roadway = "SC01", |
| | | SourceAddress = item.LocationCode, |
| | | TargetAddress = "1005", |
| | | TargetAddress = "1008", |
| | | TaskState = OutTaskStatusEnum.OutNew.ObjToInt(), |
| | | TaskType = TaskTypeEnum.OutQuality.ObjToInt(), |
| | | TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) |
| | |
| | | OutStockLockInfos.Add(outStockLockInfo); |
| | | #endregion |
| | | } |
| | | |
| | | bool CreateQCIn = AppSettings.app(nameof(CreateQCIn)).ObjToBool(); |
| | | #region çæè´¨æ£å
¥åºå |
| | | Dt_InboundOrderDetail inboundOrderDetail = new Dt_InboundOrderDetail() |
| | | { |
| | |
| | | BaseDal.AddData(tasks); |
| | | _outboundService.OutboundOrderService.Repository.Db.InsertNav(outboundOrder).Include(x => x.Details).ExecuteCommand(); |
| | | _outboundService.OutboundStockLockInfoService.Repository.AddData(OutStockLockInfos); |
| | | _inboundService.InbounOrderService.Repository.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); |
| | | if (CreateQCIn) _inboundService.InbounOrderService.Repository.Db.InsertNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); |
| | | _inventoryInfoRepository.UpdateData(_InventoryInfos); |
| | | _inventoryBatchRepository.UpdateData(inventory_Batch); |
| | | #region ä¸åä»»å¡ç»WCS |
| | |
| | | if (inventoryInfo == null) throw new Exception("æªæ¾å°æçä¿¡æ¯"); |
| | | if (inventoryInfo.StockStatus != StockStatusEmun.ç»çæå.ObjToInt() && inventoryInfo.StockStatus != StockStatusEmun.å
¥åºç¡®è®¤.ObjToInt() && inventoryInfo.StockStatus != StockStatusEmun.å
¥åºä¸.ObjToInt()) |
| | | throw new Exception($"æçéå
¥åºä¸,ä¸å¯ä¿®æ¹æ°é"); |
| | | Dt_InboundOrderDetail orderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo); |
| | | //Dt_InboundOrderDetail orderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo); |
| | | var StockQty = inventoryInfo.StockQuantity; |
| | | inventoryInfo.StockQuantity = qty; |
| | | inventoryInfo.BoxQuantity = qty % 8 > 0 ? qty / 8 + 1 : qty / 8; |
| | | if (orderDetail != null) |
| | | { |
| | | orderDetail.ReceiptQuantity -= StockQty - qty; |
| | | _inboundService.InboundOrderDetailService.Repository.UpdateData(orderDetail); |
| | | } |
| | | //if (orderDetail != null) |
| | | //{ |
| | | // orderDetail.ReceiptQuantity -= StockQty - qty; |
| | | // _inboundService.InboundOrderDetailService.Repository.UpdateData(orderDetail); |
| | | //} |
| | | _inventoryInfoRepository.UpdateData(inventoryInfo); |
| | | return webResponseContent.OK(); |
| | | } |
| | |
| | | return webResponseContent.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public override WebResponseContent UpdateData(SaveModel saveModel) |
| | | { |
| | | WebResponseContent webResponseContent = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_Task dt_Task = BaseDal.QueryFirst(x => x.TaskId == saveModel.MainData["taskId"].ObjToInt()); |
| | | string newBarcode = saveModel.MainData["palletCode"].ToString(); |
| | | if (TaskEnumHelper.GetTaskTypeGroup(dt_Task.TaskType) != TaskTypeGroup.InboundGroup) |
| | | throw new Exception($"åªå¯ä¿®æ¹å
¥åºä»»å¡,å¦éä¿®æ¹å
¶ä»ä»»å¡ç±»å请è系管çåï¼"); |
| | | Dt_InventoryInfo inventoryInfo = _inventoryInfoRepository.QueryFirst(x => x.PalletCode == newBarcode); |
| | | if (inventoryInfo != null) throw new Exception($"æçå·ã{newBarcode}ãå·²åå¨åºåä¿¡æ¯ï¼"); |
| | | inventoryInfo = _inventoryInfoRepository.QueryFirst(x => x.PalletCode == dt_Task.PalletCode); |
| | | if (inventoryInfo == null) throw new Exception($"æçå·ã{dt_Task.PalletCode}ãæªæ¾å°åºåä¿¡æ¯ï¼"); |
| | | inventoryInfo.PalletCode = newBarcode; |
| | | dt_Task.PalletCode = newBarcode; |
| | | Db.Ado.BeginTran(); |
| | | WMSTaskDTO wMSTaskDTOs = _mapper.Map<WMSTaskDTO>(dt_Task); |
| | | var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ModifyBarcode, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>()); |
| | | if (ResultData.Result == null) throw new Exception($"WCSååºè¶
æ¶"); |
| | | WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result); |
| | | if (content == null) throw new Exception($"WCSæ ååº"); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | BaseDal.UpdateData(dt_Task); |
| | | _inventoryInfoRepository.UpdateData(inventoryInfo); |
| | | Db.Ado.CommitTran(); |
| | | return webResponseContent.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return webResponseContent.Error(ex.Message); |
| | | } |
| | | } |
| | | public WebResponseContent ModifyBarcode(string barcode, string newBarcode) |
| | | { |
| | | WebResponseContent webResponseContent = new WebResponseContent(); |
| | |
| | | { |
| | | Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == WMStask.TaskNum && x.TaskType == WMStask.TaskType); |
| | | if (task == null) return WebResponseContent.Instance.Error("æªæ¾å°ä»»å¡ä¿¡æ¯"); |
| | | Dt_StockInfo? _StockInfo = _stockService.StockInfoService.GetStockByPalletCode(task.PalletCode); |
| | | if (_StockInfo != null) |
| | | Dt_InventoryInfo? inventoryInfo = _inventoryInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode); |
| | | if (inventoryInfo != null) |
| | | { |
| | | Dt_StockInfoDetail? detail = _StockInfo.Details.FirstOrDefault(); |
| | | if (detail != null) |
| | | Dt_InboundOrderDetail? inboundOrderDetail = _inboundService.InboundOrderDetailService.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo); |
| | | if (inboundOrderDetail != null) |
| | | { |
| | | Dt_InboundOrder dt_InboundOrder = _inboundService.InbounOrderService.GetInboundOrder(detail.OrderNo); |
| | | Dt_InboundOrderDetail? inboundOrderDetail = dt_InboundOrder.Details.FirstOrDefault(x => x.BatchNo == detail.BatchNo); |
| | | if (inboundOrderDetail != null) |
| | | { |
| | | inboundOrderDetail.ReceiptQuantity--; |
| | | _inboundService.InboundOrderDetailService.Repository.UpdateData(inboundOrderDetail); |
| | | } |
| | | _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(_StockInfo.Details, OperateType.AGVå é¤); |
| | | inboundOrderDetail.ReceiptQuantity--; |
| | | _inboundService.InboundOrderDetailService.Repository.UpdateData(inboundOrderDetail); |
| | | } |
| | | _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(_StockInfo, OperateType.AGVå é¤); |
| | | _inventoryInfoRepository.DeleteAndMoveIntoHty(inventoryInfo, OperateType.AGVå é¤); |
| | | } |
| | | #region MyRegion |
| | | //Dt_StockInfo? _StockInfo = _stockService.StockInfoService.GetStockByPalletCode(task.PalletCode); |
| | | //if (_StockInfo != null) |
| | | //{ |
| | | // Dt_StockInfoDetail? detail = _StockInfo.Details.FirstOrDefault(); |
| | | // if (detail != null) |
| | | // { |
| | | // Dt_InboundOrder dt_InboundOrder = _inboundService.InbounOrderService.GetInboundOrder(detail.OrderNo); |
| | | // Dt_InboundOrderDetail? inboundOrderDetail = dt_InboundOrder.Details.FirstOrDefault(x => x.BatchNo == detail.BatchNo); |
| | | // if (inboundOrderDetail != null) |
| | | // { |
| | | // inboundOrderDetail.ReceiptQuantity--; |
| | | // _inboundService.InboundOrderDetailService.Repository.UpdateData(inboundOrderDetail); |
| | | // } |
| | | // _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(_StockInfo.Details, OperateType.AGVå é¤); |
| | | // } |
| | | // _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(_StockInfo, OperateType.AGVå é¤); |
| | | //} |
| | | #endregion |
| | | BaseDal.DeleteAndMoveIntoHty(task, /*App.User.UserId == 0 ? OperateType.èªå¨å®æ :*/ OperateType.AGVå é¤); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | { |
| | | Db.Ado.BeginTran(); |
| | | Dt_OutStockLockInfo? outStockLockInfo = _outboundService.OutboundStockLockInfoService.Repository.QueryFirst(x => x.TaskNum == task.TaskNum && x.PalletCode == task.PalletCode); |
| | | Dt_OutboundOrder? outboundOrder = null; |
| | | Dt_OutboundOrderDetail? outboundOrderDetail = null; |
| | | //Dt_OutboundOrder? outboundOrder = null; |
| | | //Dt_OutboundOrderDetail? outboundOrderDetail = null; |
| | | int overCount = 0; |
| | | if (outStockLockInfo != null) |
| | | { |
| | | outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == outStockLockInfo.OrderDetailId); |
| | | if (outboundOrderDetail != null) |
| | | { |
| | | outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == outboundOrderDetail.OrderId).Includes(x => x.Details).First(); |
| | | if (outboundOrder != null) |
| | | { |
| | | outboundOrderDetail.OverOutQuantity++; |
| | | overCount = outboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count(); |
| | | if (outboundOrderDetail.OverOutQuantity == outboundOrderDetail.OrderQuantity) |
| | | { |
| | | var outboundOrderdetail = outboundOrder.Details.First(x => x.Id == outboundOrderDetail.Id); |
| | | outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt(); |
| | | outboundOrderdetail.OverOutQuantity = outboundOrderDetail.OverOutQuantity; |
| | | outboundOrderdetail.OrderDetailStatus = outboundOrderDetail.OrderDetailStatus; |
| | | overCount++; |
| | | } |
| | | } |
| | | } |
| | | //outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == outStockLockInfo.OrderDetailId); |
| | | //if (outboundOrderDetail != null) |
| | | //{ |
| | | // outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.Id == outboundOrderDetail.OrderId).Includes(x => x.Details).First(); |
| | | // if (outboundOrder != null) |
| | | // { |
| | | // outboundOrderDetail.OverOutQuantity += outStockLockInfo.AssignQuantity; |
| | | // overCount = outboundOrder.Details.Where(x => x.OrderDetailStatus == OrderDetailStatusEnum.Over.ObjToInt()).Count(); |
| | | // if (outboundOrderDetail.OverOutQuantity == outboundOrderDetail.OrderQuantity) |
| | | // { |
| | | // var outboundOrderdetail = outboundOrder.Details.First(x => x.Id == outboundOrderDetail.Id); |
| | | // outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Over.ObjToInt(); |
| | | // outboundOrderdetail.OverOutQuantity = outboundOrderDetail.OverOutQuantity; |
| | | // outboundOrderdetail.OrderDetailStatus = outboundOrderDetail.OrderDetailStatus; |
| | | // overCount++; |
| | | // } |
| | | // } |
| | | //} |
| | | outStockLockInfo.Status = OutLockStockStatusEnum.åºåºå®æ.ObjToInt(); |
| | | } |
| | | if (outboundOrder != null && outboundOrder.Details.Count == overCount) |
| | | { |
| | | outboundOrder.OrderStatus = OutboundStatusEnum.åºåºå®æ.ObjToInt(); |
| | | _outboundService.OutboundOrderDetailService.Repository.DeleteAndMoveIntoHty(outboundOrder.Details, App.User.UserId == 0 ? OperateType.èªå¨å®æ : OperateType.äººå·¥å®æ); |
| | | outboundOrder.Details = null; |
| | | _outboundService.OutboundOrderService.Repository.DeleteAndMoveIntoHty(outboundOrder, App.User.UserId == 0 ? OperateType.èªå¨å®æ : OperateType.äººå·¥å®æ); |
| | | } |
| | | else |
| | | { |
| | | if (outboundOrderDetail != null) |
| | | _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetail); |
| | | } |
| | | //if (outboundOrder != null && outboundOrder.Details.Count == overCount) |
| | | //{ |
| | | // outboundOrder.OrderStatus = OutboundStatusEnum.åºåºå®æ.ObjToInt(); |
| | | // _outboundService.OutboundOrderDetailService.Repository.DeleteAndMoveIntoHty(outboundOrder.Details, App.User.UserId == 0 ? OperateType.èªå¨å®æ : OperateType.äººå·¥å®æ); |
| | | // outboundOrder.Details = null; |
| | | // _outboundService.OutboundOrderService.Repository.DeleteAndMoveIntoHty(outboundOrder, App.User.UserId == 0 ? OperateType.èªå¨å®æ : OperateType.äººå·¥å®æ); |
| | | //} |
| | | //else |
| | | //{ |
| | | // if (outboundOrderDetail != null) |
| | | // _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetail); |
| | | //} |
| | | BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.èªå¨å®æ : OperateType.äººå·¥å®æ); |
| | | if (outStockLockInfo != null) _outboundService.OutboundStockLockInfoService.Repository.UpdateData(outStockLockInfo); |
| | | Db.Ado.CommitTran(); |
| | |
| | | private readonly IInboundOrderRepository _inboundOrderRepository; |
| | | private readonly IOutboundOrderDetailRepository _outboundOrderDetailRepository; |
| | | private readonly IOutboundOrderRepository _outboundOrderRepository; |
| | | public LargeScreenController(ILocationInfoService locationInfoService, ITaskRepository taskRepository, ITask_HtyRepository taskHtyRepository, IInboundOrderDetailRepository inboundOrderDetailRepository, IInboundOrderRepository inboundOrderRepository, IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository, IStockInfoDetailRepository stockInfoDetailRepository) |
| | | private readonly IInventoryInfoRepository _inventoryInfoRepository; |
| | | public LargeScreenController(ILocationInfoService locationInfoService, ITaskRepository taskRepository, ITask_HtyRepository taskHtyRepository, IInboundOrderDetailRepository inboundOrderDetailRepository, IInboundOrderRepository inboundOrderRepository, IOutboundOrderDetailRepository outboundOrderDetailRepository, IOutboundOrderRepository outboundOrderRepository, IStockInfoDetailRepository stockInfoDetailRepository, IInventoryInfoRepository inventoryInfoRepository) |
| | | { |
| | | _locationInfoService = locationInfoService; |
| | | _taskRepository = taskRepository; |
| | |
| | | _outboundOrderDetailRepository = outboundOrderDetailRepository; |
| | | _outboundOrderRepository = outboundOrderRepository; |
| | | _stockInfoDetailRepository = stockInfoDetailRepository; |
| | | _inventoryInfoRepository = inventoryInfoRepository; |
| | | } |
| | | [HttpPost, Route("GetStockInfos")] |
| | | public WebResponseContent GetStockInfos() |
| | | { |
| | | WebResponseContent webResponseContent = new WebResponseContent(); |
| | | List<Dt_StockInfoDetail> _StockInfoDetails = _stockInfoDetailRepository.QueryData(x => x.Status == StockStatusEmun.å·²å
¥åº.ObjToInt()); |
| | | //List<Dt_StockInfoDetail> _StockInfoDetails = _stockInfoDetailRepository.QueryData(x => x.Status == StockStatusEmun.å·²å
¥åº.ObjToInt()); |
| | | List<StockInfo> stocks = new List<StockInfo>(); |
| | | foreach (var item in _StockInfoDetails.GroupBy(x => x.MaterielCode)) |
| | | List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoRepository.QueryData(x => x.StockStatus == StockStatusEmun.å·²å
¥åº.ObjToInt()); |
| | | foreach (var item in inventoryInfos.GroupBy(x => x.MaterielCode)) |
| | | { |
| | | StockInfo stockInfo = new StockInfo() |
| | | { |
| | |
| | | Dt_InboundOrder _InboundOrder = inboundOrders.Where(x => x.Id == item.OrderId).First(); |
| | | BoundOrderDTO boundOrderDTO = new BoundOrderDTO() |
| | | { |
| | | OrderNo = _InboundOrder.OrderNo, |
| | | Quantity = item.ReceiptQuantity, |
| | | BatchNo = item.BatchNo, |
| | | MaterielCode = item.MaterielCode, |
| | | MaterielName = item.MaterielName, |
| | |
| | | Dt_OutboundOrder _OutboundOrder = outboundOrders.Where(x => x.Id == item.OrderId).First(); |
| | | BoundOrderDTO boundOrderDTO = new BoundOrderDTO() |
| | | { |
| | | OrderNo = _OutboundOrder.OrderNo, |
| | | Quantity = item.LockQuantity, |
| | | BatchNo = item.BatchNo, |
| | | MaterielCode = item.MaterielCode, |
| | | MaterielName = item.MaterielName, |
| | |
| | | List<Dt_Task_Hty> Task_Hties = Task_YearHties.Where(x => x.InsertTime.Date == date.Date).ToList(); |
| | | List<Dt_Task_Hty> ZTask_Hties = Task_YearHties.Where(x => x.InsertTime.Date == date1.Date).ToList(); |
| | | |
| | | List<Dt_Task_Hty> _Task_InYearHties = Task_YearHties.Where(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt()).ToList(); |
| | | List<Dt_Task_Hty> _Task_OutYearHties = Task_YearHties.Where(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt()).ToList(); |
| | | List<Dt_Task_Hty> _Task_InYearHties = Task_YearHties.Where(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.InQuality.ObjToInt()).ToList(); |
| | | List<Dt_Task_Hty> _Task_OutYearHties = Task_YearHties.Where(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.OutQuality.ObjToInt()).ToList(); |
| | | |
| | | List<Dt_Task_Hty> _Task_InMonthHties = _Task_InYearHties.Where(x => x.InsertTime.Month == date.Month).ToList(); |
| | | List<Dt_Task_Hty> _Task_OutMonthHties = _Task_OutYearHties.Where(x => x.InsertTime.Month == date.Month).ToList(); |
| | |
| | | var name = model.MainData["Name"].ToString(); |
| | | |
| | | List<Dt_Task_Hty> task_Hties = new List<Dt_Task_Hty>(); |
| | | List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoRepository.QueryData(x => x.StockStatus == StockStatusEmun.åºåºä¸.ObjToInt() || x.StockStatus == StockStatusEmun.å·²å
¥åº.ObjToInt()); |
| | | if (name != "å
¥åº") |
| | | { |
| | | task_Hties = _taskHtyRepository.QueryData(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt()).ToList(); |
| | | task_Hties = _taskHtyRepository.QueryData(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.OutQuality.ObjToInt()).ToList(); |
| | | var task_htys = task_Hties.Where(x => x.InsertTime.Date == DateTime.Now.Date).ToList(); |
| | | var tasks = _taskRepository.QueryData(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt()).ToList(); |
| | | var tasks = _taskRepository.QueryData(x => x.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.PalletOutbound.ObjToInt() || x.TaskType == TaskOutboundTypeEnum.OutQuality.ObjToInt()).ToList(); |
| | | |
| | | List<Dt_OutboundOrderDetail> outboundOrderDetails = _outboundOrderDetailRepository.QueryData(x => x.OrderDetailStatus < OrderDetailStatusEnum.Outbound.ObjToInt()).ToList(); |
| | | //List<Dt_OutboundOrderDetail> outboundOrderDetails = _outboundOrderDetailRepository.QueryData(x => x.OrderDetailStatus < OrderDetailStatusEnum.Outbound.ObjToInt()).ToList(); |
| | | webResponseContent.OK(data: new |
| | | { |
| | | task_Htiesqty = task_Hties.Count, |
| | | task_htysqty = task_htys.Count, |
| | | tasksqty = tasks.Count, |
| | | inboundOrderDetailsqty = outboundOrderDetails.Sum(x => x.OrderQuantity - x.OverOutQuantity) |
| | | inboundOrderDetailsqty = inventoryInfos.Count,//outboundOrderDetails.Sum(x => x.OrderQuantity - x.OverOutQuantity) |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | task_Hties = _taskHtyRepository.QueryData(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt()).ToList(); |
| | | task_Hties = _taskHtyRepository.QueryData(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.InQuality.ObjToInt()).ToList(); |
| | | var task_htys = task_Hties.Where(x => x.InsertTime.Date == DateTime.Now.Date).ToList(); |
| | | var tasks = _taskRepository.QueryData(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt()).ToList(); |
| | | var tasks = _taskRepository.QueryData(x => x.TaskType == TaskInboundTypeEnum.Inbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.PalletInbound.ObjToInt() || x.TaskType == TaskInboundTypeEnum.InQuality.ObjToInt()).ToList(); |
| | | |
| | | List<Dt_InboundOrderDetail> inboundOrderDetails = _inboundOrderDetailRepository.QueryData(x => x.OrderDetailStatus <= OrderDetailStatusEnum.GroupAndInbound.ObjToInt()).ToList(); |
| | | //List<Dt_InboundOrderDetail> inboundOrderDetails = _inboundOrderDetailRepository.QueryData(x => x.OrderDetailStatus <= OrderDetailStatusEnum.GroupAndInbound.ObjToInt()).ToList(); |
| | | webResponseContent.OK(data: new |
| | | { |
| | | task_Htiesqty = task_Hties.Count, |
| | | task_htysqty = task_htys.Count, |
| | | tasksqty = tasks.Count, |
| | | inboundOrderDetailsqty = inboundOrderDetails.Sum(x => x.OrderQuantity - x.OverInQuantity) |
| | | inboundOrderDetailsqty = inventoryInfos.Count,//inboundOrderDetails.Sum(x => x.OrderQuantity - x.OverInQuantity) |
| | | }); |
| | | } |
| | | return webResponseContent; |
| | |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_ITaskInfoService; |
| | |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() |
| | | --- End of stack trace from previous location --- |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) |
| | | -------------------------------- |
| | | 2025/8/27 15:39:55| |
| | | 䏿æç¤º : è¿æ¥æ°æ®åºè¿ç¨ä¸åçéè¯¯ï¼æ£æ¥æå¡å¨æ¯å¦æ£å¸¸è¿æ¥å符串æ¯å¦æ£ç¡®ï¼é误信æ¯ï¼A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA". |
| | | English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA" |
| | | ãèªå®ä¹é误ãï¼ä¸ææç¤º : è¿æ¥æ°æ®åºè¿ç¨ä¸åçéè¯¯ï¼æ£æ¥æå¡å¨æ¯å¦æ£å¸¸è¿æ¥å符串æ¯å¦æ£ç¡®ï¼é误信æ¯ï¼A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA". |
| | | English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA" |
| | | ãå¼å¸¸ç±»åãï¼SqlSugarException |
| | | ãå¼å¸¸ä¿¡æ¯ãï¼ä¸ææç¤º : è¿æ¥æ°æ®åºè¿ç¨ä¸åçéè¯¯ï¼æ£æ¥æå¡å¨æ¯å¦æ£å¸¸è¿æ¥å符串æ¯å¦æ£ç¡®ï¼é误信æ¯ï¼A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA". |
| | | English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA" |
| | | ãå æ è°ç¨ãï¼ at SqlSugar.Check.Exception(Boolean isException, String message, String[] args) |
| | | at SqlSugar.AdoProvider.CheckConnection() |
| | | at SqlSugar.SqlServerProvider.GetCommand(String sql, SugarParameter[] parameters) |
| | | at SqlSugar.AdoProvider.GetDataReader(String sql, SugarParameter[] parameters) |
| | | at SqlSugar.AdoProvider.SqlQuery[T,T2,T3,T4,T5,T6,T7](String sql, Object parameters) |
| | | at SqlSugar.AdoProvider.SqlQuery[T](String sql, SugarParameter[] parameters) |
| | | at SqlSugar.AdoProvider.SqlQuery[T](String sql, Object parameters) |
| | | at WIDESEA_BasicService.LocationInfoService.GetLocationLayer() in E:\项ç®é\ChuanSuoCheKu\项ç®ä»£ç \WMS\WIDESEA_WMSServer\WIDESEA_BasicService\Base\LocationInfoService.cs:line 130 |
| | | at Castle.Proxies.Invocations.ILocationInfoService_GetLocationLayer.InvokeMethodOnTarget() |
| | | at Castle.DynamicProxy.AbstractInvocation.Proceed() |
| | | at Castle.Proxies.IService`1Proxy_3.GetLocationLayer() |
| | | at WIDESEA_WMSServer.Controllers.Basic.LocationInfoController.GetLocationLayer() |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() |
| | | --- End of stack trace from previous location --- |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) |
| | | -------------------------------- |
| | | 2025/8/27 15:39:55| |
| | | 䏿æç¤º : è¿æ¥æ°æ®åºè¿ç¨ä¸åçéè¯¯ï¼æ£æ¥æå¡å¨æ¯å¦æ£å¸¸è¿æ¥å符串æ¯å¦æ£ç¡®ï¼é误信æ¯ï¼A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA". |
| | | English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA" |
| | | ãèªå®ä¹é误ãï¼ä¸ææç¤º : è¿æ¥æ°æ®åºè¿ç¨ä¸åçéè¯¯ï¼æ£æ¥æå¡å¨æ¯å¦æ£å¸¸è¿æ¥å符串æ¯å¦æ£ç¡®ï¼é误信æ¯ï¼A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA". |
| | | English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA" |
| | | ãå¼å¸¸ç±»åãï¼SqlSugarException |
| | | ãå¼å¸¸ä¿¡æ¯ãï¼ä¸ææç¤º : è¿æ¥æ°æ®åºè¿ç¨ä¸åçéè¯¯ï¼æ£æ¥æå¡å¨æ¯å¦æ£å¸¸è¿æ¥å符串æ¯å¦æ£ç¡®ï¼é误信æ¯ï¼A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA". |
| | | English Message : Connection open error . A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: Shared Memory Provider, error: 0 - 管éçå¦ä¸ç«¯ä¸æ ä»»ä½è¿ç¨ã)DbType="SqlServer";ConfigId="WIDESEA" |
| | | ãå æ è°ç¨ãï¼ at SqlSugar.Check.Exception(Boolean isException, String message, String[] args) |
| | | at SqlSugar.AdoProvider.CheckConnection() |
| | | at SqlSugar.SqlServerProvider.GetCommand(String sql, SugarParameter[] parameters) |
| | | at SqlSugar.AdoProvider.GetDataReader(String sql, SugarParameter[] parameters) |
| | | at SqlSugar.QueryableProvider`1.GetData[TResult](KeyValuePair`2 sqlObj) |
| | | at SqlSugar.QueryableProvider`1._ToList[TResult]() |
| | | at SqlSugar.QueryableProvider`1.ToList() |
| | | at WIDESEA_Core.BaseRepository.RepositoryBase`1.QueryData(Expression`1 whereExpression) in E:\项ç®é\ChuanSuoCheKu\项ç®ä»£ç \WMS\WIDESEA_WMSServer\WIDESEA_Core\BaseRepository\RepositoryBase.cs:line 248 |
| | | at WIDESEA_SystemRepository.Sys_MenuRepository.GetAllMenu() in E:\项ç®é\ChuanSuoCheKu\项ç®ä»£ç \WMS\WIDESEA_WMSServer\WIDESEA_SystemRepository\Sys_MenuRepository.cs:line 30 |
| | | at WIDESEA_SystemRepository.Sys_MenuRepository.GetSuperAdminMenu() in E:\项ç®é\ChuanSuoCheKu\项ç®ä»£ç \WMS\WIDESEA_WMSServer\WIDESEA_SystemRepository\Sys_MenuRepository.cs:line 50 |
| | | at Castle.Proxies.Invocations.ISys_MenuRepository_GetSuperAdminMenu.InvokeMethodOnTarget() |
| | | at Castle.DynamicProxy.AbstractInvocation.Proceed() |
| | | at Castle.Proxies.IRepository`1Proxy_1.GetSuperAdminMenu() |
| | | at WIDESEA_SystemService.Sys_MenuService.GetMenuActionList(Int32 roleId) in E:\项ç®é\ChuanSuoCheKu\项ç®ä»£ç \WMS\WIDESEA_WMSServer\WIDESEA_SystemService\Sys_MenuService.cs:line 61 |
| | | at WIDESEA_SystemService.Sys_MenuService.GetCurrentMenuActionList() in E:\项ç®é\ChuanSuoCheKu\项ç®ä»£ç \WMS\WIDESEA_WMSServer\WIDESEA_SystemService\Sys_MenuService.cs:line 37 |
| | | at Castle.Proxies.Invocations.ISys_MenuService_GetCurrentMenuActionList.InvokeMethodOnTarget() |
| | | at Castle.DynamicProxy.AbstractInvocation.Proceed() |
| | | at Castle.Proxies.IService`1Proxy.GetCurrentMenuActionList() |
| | | at WIDESEA_WMSServer.Controllers.Sys_MenuController.GetTreeMenu() |
| | | at lambda_method883(Closure , Object , Object[] ) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() |
| | | --- End of stack trace from previous location --- |
| | | at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) |
| | |
| | | }); ; |
| | | builder.ConfigureApplication(); |
| | | |
| | | App.ExpDateTime = DateTime.Parse("2025-09-01 09:00:00"); |
| | | //App.ExpDateTime = DateTime.Parse("2025-09-20 00:00:00"); |
| | | |
| | | // 2ãé
ç½®æå¡ |
| | | builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注å |
| | |
| | | <Project> |
| | | <PropertyGroup> |
| | | <_PublishTargetUrl>E:\IISText\èæ¹ä¸ä¸\WMS</_PublishTargetUrl> |
| | | <History>True|2025-07-09T14:29:46.5043041Z;True|2025-07-09T22:28:37.9127415+08:00;True|2025-07-04T09:02:45.7658413+08:00;True|2025-06-28T12:22:26.5226251+08:00;True|2025-06-23T10:41:48.4640291+08:00;True|2025-06-20T12:54:56.1810887+08:00;True|2025-06-20T10:43:00.0676097+08:00;True|2025-05-21T14:27:23.3463661+08:00;True|2025-05-20T09:58:56.9385057+08:00;True|2025-05-20T09:50:56.2630438+08:00;True|2025-05-19T16:43:28.3327270+08:00;True|2025-05-19T16:39:14.2351867+08:00;True|2025-05-15T10:36:19.1660612+08:00;True|2025-05-13T15:37:28.0425978+08:00;True|2025-05-13T15:21:45.1951276+08:00;True|2025-05-07T17:51:44.1784374+08:00;True|2025-04-27T14:53:35.8458295+08:00;True|2025-04-18T17:17:44.2558979+08:00;True|2025-04-18T11:56:16.2333182+08:00;True|2025-04-17T14:04:11.2641163+08:00;True|2025-03-27T16:24:43.5017432+08:00;True|2025-03-18T16:14:40.3832855+08:00;True|2025-02-18T14:43:41.4214052+08:00;True|2025-02-17T16:47:47.1464719+08:00;True|2025-02-14T13:02:33.0683296+08:00;True|2025-02-11T13:55:27.2837544+08:00;True|2025-02-11T13:54:12.7390669+08:00;True|2025-02-10T16:40:04.5645895+08:00;True|2025-02-10T16:24:19.3540916+08:00;True|2025-02-10T14:24:04.2140946+08:00;True|2025-02-10T14:01:37.7817950+08:00;True|2025-02-10T13:58:35.5650499+08:00;True|2025-02-10T13:49:31.5513866+08:00;False|2025-02-10T13:49:18.2135044+08:00;True|2025-02-10T11:32:33.6168149+08:00;False|2025-02-10T11:31:56.1964136+08:00;False|2025-02-10T11:31:03.0326897+08:00;True|2025-02-10T11:25:27.6553142+08:00;True|2025-01-18T15:10:06.4957375+08:00;False|2025-01-18T15:09:32.6588841+08:00;True|2025-01-18T15:07:28.0952526+08:00;True|2025-01-18T15:05:38.5243008+08:00;True|2025-01-18T15:03:32.1684791+08:00;True|2025-01-18T15:00:14.2579995+08:00;False|2025-01-18T14:59:17.3888861+08:00;False|2025-01-18T14:57:59.9512472+08:00;True|2025-01-18T13:57:17.7790615+08:00;True|2025-01-18T12:53:22.4660853+08:00;True|2025-01-17T17:26:35.1781925+08:00;True|2025-01-17T16:54:55.6218094+08:00;</History> |
| | | <History>True|2025-09-29T01:44:22.7122741Z;True|2025-09-13T09:59:14.1811656+08:00;True|2025-09-11T14:44:21.4463899+08:00;True|2025-09-11T09:46:57.1606195+08:00;True|2025-09-11T08:54:45.2508701+08:00;True|2025-09-10T17:23:20.2805726+08:00;True|2025-09-10T11:03:28.6084368+08:00;True|2025-09-10T09:23:04.5233835+08:00;True|2025-08-31T13:15:01.0860708+08:00;True|2025-08-28T14:21:06.4731427+08:00;True|2025-08-18T09:21:31.6163565+08:00;True|2025-08-13T10:31:53.2822334+08:00;True|2025-08-07T16:34:33.8969844+08:00;True|2025-07-30T18:59:50.4912438+08:00;True|2025-07-15T10:34:32.4834130+08:00;True|2025-07-12T10:23:38.7794405+08:00;True|2025-07-12T10:10:47.3292316+08:00;True|2025-07-10T16:31:30.9386059+08:00;True|2025-07-10T11:32:42.0614780+08:00;True|2025-07-10T11:06:03.2986340+08:00;True|2025-07-10T09:53:23.2547896+08:00;True|2025-07-09T22:29:46.5043041+08:00;True|2025-07-09T22:28:37.9127415+08:00;True|2025-07-04T09:02:45.7658413+08:00;True|2025-06-28T12:22:26.5226251+08:00;True|2025-06-23T10:41:48.4640291+08:00;True|2025-06-20T12:54:56.1810887+08:00;True|2025-06-20T10:43:00.0676097+08:00;True|2025-05-21T14:27:23.3463661+08:00;True|2025-05-20T09:58:56.9385057+08:00;True|2025-05-20T09:50:56.2630438+08:00;True|2025-05-19T16:43:28.3327270+08:00;True|2025-05-19T16:39:14.2351867+08:00;True|2025-05-15T10:36:19.1660612+08:00;True|2025-05-13T15:37:28.0425978+08:00;True|2025-05-13T15:21:45.1951276+08:00;True|2025-05-07T17:51:44.1784374+08:00;True|2025-04-27T14:53:35.8458295+08:00;True|2025-04-18T17:17:44.2558979+08:00;True|2025-04-18T11:56:16.2333182+08:00;True|2025-04-17T14:04:11.2641163+08:00;True|2025-03-27T16:24:43.5017432+08:00;True|2025-03-18T16:14:40.3832855+08:00;True|2025-02-18T14:43:41.4214052+08:00;True|2025-02-17T16:47:47.1464719+08:00;True|2025-02-14T13:02:33.0683296+08:00;True|2025-02-11T13:55:27.2837544+08:00;True|2025-02-11T13:54:12.7390669+08:00;True|2025-02-10T16:40:04.5645895+08:00;True|2025-02-10T16:24:19.3540916+08:00;True|2025-02-10T14:24:04.2140946+08:00;True|2025-02-10T14:01:37.7817950+08:00;True|2025-02-10T13:58:35.5650499+08:00;True|2025-02-10T13:49:31.5513866+08:00;False|2025-02-10T13:49:18.2135044+08:00;True|2025-02-10T11:32:33.6168149+08:00;False|2025-02-10T11:31:56.1964136+08:00;False|2025-02-10T11:31:03.0326897+08:00;True|2025-02-10T11:25:27.6553142+08:00;True|2025-01-18T15:10:06.4957375+08:00;False|2025-01-18T15:09:32.6588841+08:00;True|2025-01-18T15:07:28.0952526+08:00;True|2025-01-18T15:05:38.5243008+08:00;True|2025-01-18T15:03:32.1684791+08:00;True|2025-01-18T15:00:14.2579995+08:00;False|2025-01-18T14:59:17.3888861+08:00;False|2025-01-18T14:57:59.9512472+08:00;True|2025-01-18T13:57:17.7790615+08:00;True|2025-01-18T12:53:22.4660853+08:00;True|2025-01-17T17:26:35.1781925+08:00;True|2025-01-17T16:54:55.6218094+08:00;</History> |
| | | <LastFailureDetails /> |
| | | </PropertyGroup> |
| | | </Project> |
| | |
| | | }, |
| | | "WCSIP": "http://127.0.0.1:8099", |
| | | "LogAopEnable": false, |
| | | "CreateQCIn": false, //æ¯å¦å建质æ£å
¥åºå |
| | | "wcsInterfaceAddress": "/api/Task/ReceiveTask,/api/Task/ModifyBarcode", |
| | | "ConveyorLineID": "1001,1002", //è¾é线ç¼å· |
| | | "CarChargingStation": "002-002-001", |
| | |
| | | let config = { |
| | | baseUrl: 'http://192.168.10.88:8098', |
| | | baseUrl: 'http://127.0.0.1:8098', |
| | | urls: [ |
| | | 'http://192.168.10.88:8098', |
| | | 'http://192.168.10.88:8098' |
¶Ô±ÈÐÂÎļþ |
| | |
| | | æå¡å¨IPå°åï¼192.168.188.6 |
| | | æ°æ®åºè´¦å·ï¼sa |
| | | å¯ç ï¼tizi@123 |
| | | æµè¯ç¨æ°æ®åºå®ä½ï¼AIS20250704095332 |
| | | è´¦å¥åç§°ï¼è´¦å¥åç§°ï¼æµè¯2 |