| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Model.Models; |
| | |
| | | public interface IMaterielInfoService : IService<Dt_MaterielInfo> |
| | | { |
| | | IRepository<Dt_MaterielInfo> Repository { get; } |
| | | |
| | | WebResponseContent GetMedicineGoodsInfom(); |
| | | WebResponseContent ProductSynchronous(); |
| | | } |
| | | } |
| | |
| | | var url = "http://172.16.1.4:8082/api/environment/sensor"; |
| | | var result = HttpHelper.Get(url); |
| | | var response = JsonConvert.DeserializeObject<CollResponse<CoolDto>>(result); |
| | | if (response == null || response.code != "000") throw new Exception("æ¥å£è¿åæ°æ®æ¥é"); |
| | | var deviceNames = response.data.Select(x => x.name?.Trim()).Distinct().ToList(); |
| | | var containers = BaseDal.QueryData(x => deviceNames.Contains(x.deviceName)).ToList(); |
| | | List<Dt_Container> containersAdd = new List<Dt_Container>(); |
| | | List<Dt_Container> containersUp = new List<Dt_Container>(); |
| | | foreach (var item in response.data) |
| | | { |
| | | Dt_Container? container = containers.Where(x => x.deviceName == item.name).FirstOrDefault(); |
| | | if (container == null) |
| | | { |
| | | container = new Dt_Container() |
| | | { |
| | | deviceName = item.name, |
| | | Alarm = item.alarm, |
| | | CurrentTemperature = item.temperature, |
| | | Humidity = item.humidity, |
| | | CreateDate = DateTime.Now, |
| | | AlarmInformation = item.message |
| | | }; |
| | | containersAdd.Add(container); |
| | | } |
| | | else |
| | | { |
| | | container.Alarm = item.alarm; |
| | | container.CurrentTemperature = item.temperature; |
| | | container.Humidity = item.humidity; |
| | | container.AlarmInformation = item.message; |
| | | container.ModifyDate = DateTime.Now; |
| | | containersUp.Add(container); |
| | | } |
| | | if (item.alarm != "æ£å¸¸") |
| | | { |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, |
| | | $"å·æ{item.alarm}", item.message, MessageStatusEnum.Undisposed); |
| | | } |
| | | } |
| | | if (containersAdd.Count > 0) BaseDal.AddData(containersAdd); |
| | | if (containersUp.Count > 0) BaseDal.UpdateData(containersUp); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | public WebResponseContent Sensor1() |
| | | { |
| | | try |
| | | { |
| | | var url = "http://172.16.1.4:8082/api/environment/sensor"; |
| | | var result = HttpHelper.Get(url); |
| | | var response = JsonConvert.DeserializeObject<CollResponse<CoolDto>>(result); |
| | | |
| | | if (response.code != "000" || response.data == null) |
| | | { |
| | |
| | | public class EquipmentAlarmInforService : ServiceBase<Dt_EquipmentAlarmInfor, IRepository<Dt_EquipmentAlarmInfor>>, IEquipmentAlarmInforService |
| | | { |
| | | private readonly IMessageInfoService _messageInfoService; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | |
| | | public EquipmentAlarmInforService(IRepository<Dt_EquipmentAlarmInfor> BaseDal, IMessageInfoService messageInfoService) : base(BaseDal) |
| | | public EquipmentAlarmInforService(IRepository<Dt_EquipmentAlarmInfor> BaseDal, IMessageInfoService messageInfoService, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal) |
| | | { |
| | | _messageInfoService = messageInfoService; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | } |
| | | |
| | | public WebResponseContent getDeviceStatus() |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | var url = "http://172.16.1.2:8080/cube/taskInfo/getDeviceStatus?token=wH5zdAUCv2BEHJIinmowyki8cdc5ge8fAwFDcYZs0bVldNgmORt0O0l4GJTDv1dglRdMxb9xDK5Qb3NJAqL1Li2GkfdVa3KnIkfrQZtsP7UXhMmUz6xEuztG6d5svAJO9HENLb8JWVqCfpO2EWV6ebo/g5tJ9x7kbwwAxvCBrWdiEJv09FvaRQ== "; |
| | | var result = HttpHelper.Get(url); |
| | | var response = JsonConvert.DeserializeObject<AGVResponse<DeviceStatusData>>(result); |
| | | if (response == null || response.code != "0" || response.data == null) return content.Error($"è·å设å¤ä¿¡æ¯å¤±è´¥: {response?.msg}"); |
| | | List<string> codes = new List<string>(); |
| | | if (response.data.robot.Count < 1 || response.data.sorters.Count < 0) return content.Error($"è·å设å¤ä¿¡æ¯ä¸ºç©º: {response?.msg}"); |
| | | |
| | | // å¤çæºå¨äººè®¾å¤æ°æ® |
| | | codes.AddRange(response.data.robot.Select(x => x.robotCode).ToList()); |
| | | |
| | | // å¤ç忣å°è®¾å¤æ°æ® |
| | | codes.AddRange(response.data.sorters.Select(x => x.sorterCode).ToList()); |
| | | |
| | | if (codes.Count < 1) return content; |
| | | List<Dt_EquipmentAlarmInfor> equipmentAlarmInfors = BaseDal.QueryData(x => codes.Contains(x.RobotCode)); |
| | | List<Dt_EquipmentAlarmInfor> equipmentAlarmInforsAdd = new List<Dt_EquipmentAlarmInfor>(); |
| | | List<Dt_EquipmentAlarmInfor> equipmentAlarmInforsUp = new List<Dt_EquipmentAlarmInfor>(); |
| | | foreach (var item in response.data.robot) |
| | | { |
| | | Dt_EquipmentAlarmInfor? equipmentAlarmInfor = equipmentAlarmInfors.Where(x => x.RobotCode == item.robotCode).FirstOrDefault(); |
| | | if (equipmentAlarmInfor == null) |
| | | { |
| | | equipmentAlarmInfor = new Dt_EquipmentAlarmInfor() |
| | | { |
| | | RobotCode = item.robotCode, |
| | | RobotName = item.robotName, |
| | | Status = item.status, |
| | | SyncTime = DateTime.Now, |
| | | CreateDate = DateTime.Now, |
| | | }; |
| | | equipmentAlarmInforsAdd.Add(equipmentAlarmInfor); |
| | | } |
| | | else |
| | | { |
| | | equipmentAlarmInfor.RobotName = item.robotName; |
| | | equipmentAlarmInfor.Status = item.status; |
| | | equipmentAlarmInfor.SyncTime = DateTime.Now; |
| | | equipmentAlarmInforsUp.Add(equipmentAlarmInfor); |
| | | } |
| | | if (string.Equals(item.status, nameof(DeviceStatus.Error), StringComparison.OrdinalIgnoreCase)) |
| | | { |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, item.robotName, item.status); |
| | | } |
| | | } |
| | | foreach (var item in response.data.sorters) |
| | | { |
| | | Dt_EquipmentAlarmInfor? equipmentAlarmInfor = equipmentAlarmInfors.Where(x => x.RobotCode == item.sorterCode).FirstOrDefault(); |
| | | if (equipmentAlarmInfor == null) |
| | | { |
| | | equipmentAlarmInfor = new Dt_EquipmentAlarmInfor() |
| | | { |
| | | RobotCode = item.sorterCode, |
| | | RobotName = item.sorterName, |
| | | Status = item.status, |
| | | SyncTime = DateTime.Now, |
| | | CreateDate = DateTime.Now, |
| | | }; |
| | | equipmentAlarmInforsAdd.Add(equipmentAlarmInfor); |
| | | } |
| | | else |
| | | { |
| | | equipmentAlarmInfor.RobotName = item.sorterCode; |
| | | equipmentAlarmInfor.Status = item.status; |
| | | equipmentAlarmInfor.SyncTime = DateTime.Now; |
| | | equipmentAlarmInforsUp.Add(equipmentAlarmInfor); |
| | | } |
| | | if (string.Equals(item.status, nameof(DeviceStatus.Error), StringComparison.OrdinalIgnoreCase)) |
| | | { |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, item.sorterCode, item.status); |
| | | } |
| | | } |
| | | if (equipmentAlarmInforsAdd.Count > 0) BaseDal.AddData(equipmentAlarmInforsAdd); |
| | | if (equipmentAlarmInforsUp.Count > 0) BaseDal.UpdateData(equipmentAlarmInforsUp); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¥çç«åºå°è½¦æ¥è¦ä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent getDeviceStatus() |
| | | public WebResponseContent getDeviceStatus1() |
| | | { |
| | | try |
| | | { |
| | | var url = "http://172.16.1.2:8080/cube/taskInfo/getDeviceStatus?token=wH5zdAUCv2BEHJIinmowyki8cdc5ge8fAwFDcYZs0bVldNgmORt0O0l4GJTDv1dglRdMxb9xDK5Qb3NJAqL1Li2GkfdVa3KnIkfrQZtsP7UXhMmUz6xEuztG6d5svAJO9HENLb8JWVqCfpO2EWV6ebo/g5tJ9x7kbwwAxvCBrWdiEJv09FvaRQ== "; |
| | | var result = HttpHelper.Get(url); |
| | | |
| | | var response = JsonConvert.DeserializeObject<AGVResponse<DeviceStatusData>>(result); |
| | | |
| | | |
| | | |
| | | // æ£æ¥æ¥å£ååºæ¯å¦æå |
| | | if (response == null || response.code != "0") |
| | |
| | | } |
| | | |
| | | var syncTime = DateTime.Now; |
| | | var saveCount = 0; |
| | | var AddEquipList = new List<Dt_EquipmentAlarmInfor>(); |
| | | var UpdateEquipList = new List<Dt_EquipmentAlarmInfor>(); |
| | | var alarmList = new List<(string deviceType, string deviceName, string deviceCode)>(); |
| | | |
| | | // æ¶éææè®¾å¤ç¼ç ï¼ä¸æ¬¡æ§æ¥è¯¢ |
| | | var allDeviceCodes = new List<string>(); |
| | | if (response.data?.robot != null && response.data.robot.Count > 0) |
| | | { |
| | | allDeviceCodes.AddRange(response.data.robot.Select(x => x.robotCode)); |
| | | } |
| | | if (response.data?.sorters != null && response.data.sorters.Count > 0) |
| | | { |
| | | allDeviceCodes.AddRange(response.data.sorters.Select(x => x.sorterCode)); |
| | | } |
| | | |
| | | // 䏿¬¡æ§æ¥è¯¢ææå·²åå¨ç设å¤è®°å½ |
| | | var existingRecords = allDeviceCodes.Any() |
| | | ? BaseDal.QueryData(x => allDeviceCodes.Contains(x.RobotCode)) |
| | | .ToDictionary(x => x.RobotCode, x => x) |
| | | : new Dictionary<string, Dt_EquipmentAlarmInfor>(); |
| | | |
| | | // å¤çæºå¨äººè®¾å¤æ°æ® |
| | | if (response.data?.robot != null && response.data.robot.Any()) |
| | | if (response.data?.robot != null && response.data.robot.Count > 0) |
| | | { |
| | | foreach (var robot in response.data.robot) |
| | | { |
| | | // æ ¹æ®è®¾å¤ç¼ç æ¥è¯¢æ¯å¦åå¨è®°å½ |
| | | var existingRecord = BaseDal.QueryData(x => x.RobotCode == robot.robotCode).FirstOrDefault(); |
| | | |
| | | if (existingRecord == null) |
| | | { |
| | | // å建æ°è®°å½ |
| | | var newRecord = new Dt_EquipmentAlarmInfor |
| | | { |
| | | RobotName = robot.robotName, |
| | | RobotCode = robot.robotCode, |
| | | Status = robot.status, |
| | | SyncTime = syncTime, |
| | | CreateDate = syncTime, |
| | | Creater = "System" |
| | | }; |
| | | BaseDal.AddData(newRecord); |
| | | if (robot.status == "error") |
| | | { |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, "å°è½¦åç§°:" + robot.robotName, $"å°è½¦ç¼å·ã{robot.robotCode}ãåçé误", MessageStatusEnum.Emergency); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | // æ´æ°ç°æè®°å½ |
| | | existingRecord.RobotName = robot.robotName; |
| | | existingRecord.Status = robot.status; |
| | | existingRecord.SyncTime = syncTime; |
| | | existingRecord.ModifyDate = syncTime; |
| | | existingRecord.Modifier = "System"; |
| | | BaseDal.UpdateData(existingRecord); |
| | | if (robot.status == "error") |
| | | { |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, "å°è½¦åç§°:" + robot.robotName, $"å°è½¦ç¼å·ã{robot.robotCode}ãåçé误", MessageStatusEnum.Emergency); |
| | | } |
| | | } |
| | | saveCount++; |
| | | ProcessDevice(robot.robotCode, robot.robotName, robot.status, "æºå¨äºº", |
| | | existingRecords, AddEquipList, UpdateEquipList, alarmList, syncTime); |
| | | } |
| | | } |
| | | |
| | | // å¤ç忣å°è®¾å¤æ°æ® |
| | | if (response.data?.sorters != null && response.data.sorters.Any()) |
| | | if (response.data?.sorters != null && response.data.sorters.Count > 0) |
| | | { |
| | | foreach (var sorter in response.data.sorters) |
| | | { |
| | | // æ ¹æ®è®¾å¤ç¼ç æ¥è¯¢æ¯å¦åå¨è®°å½ |
| | | var existingRecord = BaseDal.QueryData(x => x.RobotCode == sorter.sorterCode).FirstOrDefault(); |
| | | |
| | | if (existingRecord == null) |
| | | { |
| | | // å建æ°è®°å½ |
| | | var newRecord = new Dt_EquipmentAlarmInfor |
| | | { |
| | | RobotName = sorter.sorterName, |
| | | RobotCode = sorter.sorterCode, |
| | | Status = sorter.status, |
| | | SyncTime = syncTime, |
| | | CreateDate = syncTime, |
| | | Creater = "System" |
| | | }; |
| | | BaseDal.AddData(newRecord); |
| | | if (sorter.status == "error") |
| | | { |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, "忣å°åç§°:" + sorter.sorterName, $"ç¼å·ã{sorter.sorterCode}ãåçé误", MessageStatusEnum.Emergency); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | // æ´æ°ç°æè®°å½ |
| | | existingRecord.RobotName = sorter.sorterName; |
| | | existingRecord.Status = sorter.status; |
| | | existingRecord.SyncTime = syncTime; |
| | | existingRecord.ModifyDate = syncTime; |
| | | existingRecord.Modifier = "System"; |
| | | BaseDal.UpdateData(existingRecord); |
| | | if (sorter.status == "error") |
| | | { |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, "忣å°åç§°:" + sorter.sorterName, $"ç¼å·ã{sorter.sorterCode}ãåçé误", MessageStatusEnum.Emergency); |
| | | } |
| | | } |
| | | saveCount++; |
| | | ProcessDevice(sorter.sorterCode, sorter.sorterName, sorter.status, "忣å°", |
| | | existingRecords, AddEquipList, UpdateEquipList, alarmList, syncTime); |
| | | } |
| | | } |
| | | |
| | | //// è¿åç¶æç»è®¡ä¿¡æ¯ |
| | | //var stateStats = response.data?.stateStatistics; |
| | | //var statsInfo = stateStats != null ? |
| | | // $"å¯ç¨:{stateStats.enable}, å
çµ:{stateStats.charging}, ä¸å¯ç¨:{stateStats.disabled}, é误:{stateStats.error}, 离åº:{stateStats.down}, å ç¨:{stateStats.occupied}" |
| | | // : "æ ç»è®¡ä¿¡æ¯"; |
| | | |
| | | return new WebResponseContent |
| | | // å¼å¯äºå¡ |
| | | //_unitOfWorkManage.BeginTran(); |
| | | try |
| | | { |
| | | Status = true, |
| | | Message = $"忥æåï¼å
±å¤ç {saveCount} æ¡è®¾å¤è®°å½ã" |
| | | }; |
| | | // æ¹éæä½ |
| | | if (AddEquipList.Count > 0) |
| | | { |
| | | BaseDal.AddData(AddEquipList); |
| | | } |
| | | if (UpdateEquipList.Count > 0) |
| | | { |
| | | BaseDal.UpdateData(UpdateEquipList); |
| | | } |
| | | |
| | | // æäº¤äºå¡ |
| | | //_unitOfWorkManage.CommitTran(); |
| | | |
| | | // å¤çæ¥è¦ä¿¡æ¯ |
| | | ProcessAlarmMessages(alarmList); |
| | | |
| | | var totalCount = AddEquipList.Count + UpdateEquipList.Count; |
| | | return new WebResponseContent |
| | | { |
| | | Status = true, |
| | | Message = $"忥æåï¼æ°å¢ {AddEquipList.Count} æ¡ï¼æ´æ° {UpdateEquipList.Count} æ¡ï¼å
±å¤ç {totalCount} æ¡è®¾å¤è®°å½ã" |
| | | }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | //_unitOfWorkManage.RollbackTran(); |
| | | return new WebResponseContent |
| | | { |
| | | Status = false, |
| | | Message = $"æ°æ®ä¿å失败: {ex.Message}" |
| | | }; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | // è®°å½è¯¦ç»é误æ¥å¿ |
| | | Console.WriteLine($"è·å设å¤ç¶æå¼å¸¸: {ex.Message}, StackTrace: {ex.StackTrace}"); |
| | | |
| | | return new WebResponseContent |
| | | { |
| | | Status = false, |
| | |
| | | }; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å¤çå个设å¤è®°å½ |
| | | /// </summary> |
| | | private void ProcessDevice(string deviceCode, string deviceName, string status, string deviceType, |
| | | Dictionary<string, Dt_EquipmentAlarmInfor> existingRecords, |
| | | List<Dt_EquipmentAlarmInfor> addList, |
| | | List<Dt_EquipmentAlarmInfor> updateList, |
| | | List<(string deviceType, string deviceName, string deviceCode)> alarmList, |
| | | DateTime syncTime) |
| | | { |
| | | if (existingRecords.TryGetValue(deviceCode, out var existingRecord)) |
| | | { |
| | | // æ£æ¥ç¶ææ¯å¦åçååï¼é¿å
ä¸å¿
è¦çæ´æ°åé夿¥è¦ |
| | | bool statusChanged = existingRecord.Status != status; |
| | | |
| | | // æ´æ°ç°æè®°å½ |
| | | existingRecord.RobotName = deviceName; |
| | | existingRecord.Status = status; |
| | | existingRecord.SyncTime = syncTime; |
| | | existingRecord.ModifyDate = syncTime; |
| | | existingRecord.Modifier = "System"; |
| | | |
| | | updateList.Add(existingRecord); |
| | | |
| | | // åªæç¶æå为erroræ¶ææ¥è¦ |
| | | if (statusChanged && status == "error") |
| | | { |
| | | alarmList.Add((deviceType, deviceName, deviceCode)); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | // å建æ°è®°å½ |
| | | var newRecord = new Dt_EquipmentAlarmInfor |
| | | { |
| | | RobotName = deviceName, |
| | | RobotCode = deviceCode, |
| | | Status = status, |
| | | SyncTime = syncTime, |
| | | CreateDate = syncTime, |
| | | Creater = "System" |
| | | }; |
| | | addList.Add(newRecord); |
| | | |
| | | // æ°è®¾å¤ç¶æä¸ºerroræ¶æ¥è¦ |
| | | if (status == "error") |
| | | { |
| | | alarmList.Add((deviceType, deviceName, deviceCode)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å¤çæ¥è¦ä¿¡æ¯ |
| | | /// </summary> |
| | | private void ProcessAlarmMessages(List<(string deviceType, string deviceName, string deviceCode)> alarmList) |
| | | { |
| | | foreach (var alarm in alarmList) |
| | | { |
| | | string alarmTitle = alarm.deviceType == "æºå¨äºº" |
| | | ? "å°è½¦åç§°:" + alarm.deviceName |
| | | : "忣å°åç§°:" + alarm.deviceName; |
| | | |
| | | string alarmMessage = alarm.deviceType == "æºå¨äºº" |
| | | ? $"å°è½¦ç¼å·ã{alarm.deviceCode}ãåçé误" |
| | | : $"ç¼å·ã{alarm.deviceCode}ãåçé误"; |
| | | |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.EquipmentAlarm, alarmTitle, alarmMessage, MessageStatusEnum.Emergency); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_IWMsInfoServices; |
| | | using WIDESEA_Model.Models; |
| | | using static WIDESEA_DTO.SquareCabin.OrderDto; |
| | | using static WIDESEA_DTO.SquareCabin.TowcsDto; |
| | | |
| | | namespace WIDESEA_WMsInfoServices |
| | |
| | | { |
| | | } |
| | | public IRepository<Dt_MaterielInfo> Repository => BaseDal; |
| | | |
| | | |
| | | static string SearchDate = "2025-10-30 00:00:00"; |
| | | |
| | | /// <summary> |
| | | /// è·åè¯ååºç¡ä¿¡æ¯åæ¥æ¥å£ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent GetMedicineGoodsInfom() |
| | | { |
| | | var responseContent = new WebResponseContent(); |
| | | try |
| | | { |
| | | |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/goodsInfo"; |
| | | if (string.IsNullOrEmpty(SearchDate)) |
| | | { |
| | | // é»è®¤æ¥è¯¢è¿å»24å°æ¶çæ°æ® |
| | | SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | } |
| | | // 请æ±åæ° |
| | | var requestData = new |
| | | { |
| | | searchDate = SearchDate |
| | | }; |
| | | SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | // åèµ·è¯·æ± |
| | | var result = HttpHelper.Post(url, requestData.ToJsonString()); |
| | | |
| | | // ååºåå |
| | | var response = JsonConvert.DeserializeObject<UpstreamResponse<MedicationsInfo>>(result); |
| | | |
| | | if (response == null || response.resultCode != "0") |
| | | { |
| | | // è°ç¨å¼å¸¸æ¥å£ |
| | | //SendErrorToUpstream(5, "", response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败", ""); |
| | | return responseContent.Error(response?.resultMsg ?? "䏿¸¸æ¥å£è¿å失败"); |
| | | } |
| | | if (response.data.Count < 1) |
| | | { |
| | | return responseContent.OK("æ æ°è¯åæ°æ®"); |
| | | } |
| | | |
| | | var codes = response.data.Select(x => x.goods_no).ToList(); |
| | | |
| | | //è·åææå·²åå¨çååç¼å· |
| | | var existingGoodsNos = BaseDal.QueryData(x => codes.Contains(x.MaterielCode)).Select(x => x.MaterielCode).ToList(); |
| | | |
| | | // æ¶éææè¦æå
¥çå®ä½ |
| | | var entityList = response.data.Where(Medicat => !existingGoodsNos.Contains(Medicat.goods_no)).Select(Medicat => new Dt_MaterielInfo |
| | | { |
| | | MaterielCode = Medicat.goods_no, |
| | | MaterielErpType = Medicat.goods_type, |
| | | item = Medicat.goods_tym, //éç¨å |
| | | MaterielName = Medicat.goods_spm,//ç©æåç§° |
| | | Dosage_form = GetDosageForm(Medicat.dosage_form),//è¯å |
| | | Barcode = Medicat.barcode,//æ¡å½¢å |
| | | MaterielSpec = Medicat.model, |
| | | Factory = Medicat.factory, |
| | | MaterielUnit = Medicat.unit,//åä½ |
| | | MaterielSourceType = MaterielSourceTypeEnum.PurchasePart, |
| | | // ä½¿ç¨ ?? è¿ç®ç¬¦æä¾é»è®¤å¼ |
| | | MaterielLength = (float?)Medicat.item_length, |
| | | MaterielWide = (float?)Medicat.item_width, |
| | | MaterielHeight = (float?)Medicat.item_hight, |
| | | MaterielVolume = (float?)Medicat.item_volumn, |
| | | MaterielWeight = (float?)Medicat.item_weight, |
| | | MaterielStoragecondition = float.TryParse(Medicat.storage_confition, out var val) ? val : null, //å¨åæ¡ä»¶ |
| | | Remark = Medicat.remark, |
| | | GoodStatusState = "æªä¸å", |
| | | ModifyDate = Medicat.modify_date |
| | | }).ToList(); |
| | | // 䏿¬¡æ§æ¹éæå
¥æ°æ®åº |
| | | BaseDal.AddData(entityList); |
| | | |
| | | //ProductSynchronous(); |
| | | return responseContent.OK("忥æå"); |
| | | } |
| | | |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("è·åERPç©æä¿¡æ¯å¼å¸¸ï¼" + ex.Message); |
| | | //SendErrorToUpstream(5, "", ex.Message, ""); |
| | | return responseContent.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// å建è¯ååå
¸ |
| | | /// </summary> |
| | | private static readonly Dictionary<string, string> _dosageFormMap = new Dictionary<string, string> |
| | | { |
| | | {"001", "çå"}, {"002", "çå"}, {"003", "çå"}, {"004", "çå"}, {"005", "çå"}, |
| | | {"006", "çå"}, {"007", "çå"}, {"008", "çå"}, {"009", "çå"}, {"010", "çå"}, |
| | | {"011", "å
¶å®"}, {"012", "çå"}, {"013", "å
¶å®"}, {"014", "çå"}, {"015", "çå"}, |
| | | {"016", "çå"}, {"017", "çå"}, {"018", "å
¶å®"}, {"019", "å
¶å®"}, {"020", "å
¶å®"}, |
| | | {"021", "éå"}, {"022", "éå"}, {"023", "éå"}, {"024", "éå"}, {"025", "䏿è¯"}, |
| | | {"026", "䏿è¯"}, {"027", "å
¶å®"}, {"028", "å
¶å®"}, {"029", "å
¶å®"}, {"030", "å
¶å®"}, |
| | | {"031", "å
¶å®"}, {"032", "å
¶å®"}, {"033", "å
¶å®"}, {"034", "䏿è¯"}, {"035", "䏿è¯"}, |
| | | {"036", "䏿è¯"}, {"037", "䏿è¯"}, {"038", "å
¶å®"}, {"039", "å
¶å®"}, {"040", "å
¶å®"}, |
| | | {"041", "䏿è¯"}, {"042", "䏿è¯"}, {"043", "䏿è¯"}, {"044", "å
¶å®"}, {"045", "䏿è¯"}, |
| | | {"046", "䏿è¯"}, {"047", "䏿è¯"}, {"048", "䏿è¯"}, {"049", "䏿è¯"}, {"050", "䏿è¯"}, |
| | | {"051", "䏿è¯"}, {"052", "䏿è¯"}, {"053", "䏿è¯"}, {"054", "䏿è¯"}, {"055", "䏿è¯"}, |
| | | {"056", "å
¶å®"}, {"057", "å
¶å®"}, {"058", "å
¶å®"}, {"059", "å
¶å®"}, {"060", "å
¶å®"}, |
| | | {"061", "å
¶å®"}, {"062", "å
¶å®"}, {"063", "å
¶å®"}, {"064", "å
¶å®"}, {"065", "å
¶å®"}, |
| | | {"066", "å
¶å®"}, {"067", "䏿è¯"}, {"068", "䏿è¯"}, {"069", "䏿è¯"}, {"070", "å
¶å®"}, |
| | | {"071", "å
¶å®"}, {"072", "å
¶å®"}, {"073", "䏿è¯"}, {"074", "å
¶å®"}, {"075", "å
¶å®"}, |
| | | {"076", "䏿è¯"}, {"077", "å
¶å®"}, {"078", "å
¶å®"}, {"079", "䏿è¯"}, {"080", "䏿è¯"}, |
| | | {"081", "䏿è¯"}, {"082", "䏿è¯"}, {"083", "å
¶å®"}, {"084", "䏿è¯"}, {"085", "å
¶å®"}, |
| | | {"086", "䏿è¯"}, {"087", "å
¶å®"}, {"088", "å
¶å®"}, {"089", "䏿è¯"}, {"090", "䏿è¯"}, |
| | | {"091", "å
¶å®"}, {"092", "å
¶å®"}, {"093", "å
¶å®"}, {"094", "䏿è¯"}, {"095", "å
¶å®"}, |
| | | {"096", "å
¶å®"}, {"097", "å
¶å®"}, {"098", "å
¶å®"}, {"099", "å
¶å®"}, {"100", "å
¶å®"}, |
| | | {"101", "å
¶å®"}, {"102", "å
¶å®"}, {"103", "å
¶å®"}, {"104", "å
¶å®"}, {"105", "å
¶å®"}, |
| | | {"106", "å
¶å®"}, {"107", "å
¶å®"}, {"108", "å
¶å®"}, {"109", "å
¶å®"}, {"110", "å
¶å®"}, |
| | | {"111", "å
¶å®"}, {"112", "å
¶å®"}, {"113", "å
¶å®"}, {"114", "å
¶å®"}, {"115", "å
¶å®"}, |
| | | {"116", "å
¶å®"}, {"117", "å
¶ä»"} |
| | | }; |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ååç¼å·è·ååååç±» |
| | | /// </summary> |
| | | /// <param name="dosageCode">ååç¼å·(001-117)</param> |
| | | /// <returns>åååç±»(çå/éå/䏿è¯/å
¶å®/å
¶ä»)</returns> |
| | | public static string GetDosageForm(string dosageCode) |
| | | { |
| | | if (string.IsNullOrEmpty(dosageCode)) |
| | | return "æªç¥"; |
| | | |
| | | // å¤çç¼å·æ ¼å¼ï¼ç¡®ä¿æ¯3使°å |
| | | if (dosageCode.Length == 1) |
| | | dosageCode = "00" + dosageCode; |
| | | else if (dosageCode.Length == 2) |
| | | dosageCode = "0" + dosageCode; |
| | | |
| | | if (_dosageFormMap.TryGetValue(dosageCode, out string form)) |
| | | { |
| | | return form; |
| | | } |
| | | |
| | | return "æªç¥"; |
| | | } |
| | | public WebResponseContent ProductSynchronous() |
| | | { |
| | | try |
| | | { |
| | | List<Dt_MaterielInfo> materielInfos = BaseDal.QueryData(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty > 0 && x.MinQty > 0 && x.GoodStatusState == "æªä¸å").ToList(); |
| | | if (materielInfos.Count < 1) return WebResponseContent.Instance.Error("æ æªä¸åè¯å"); |
| | | var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous"; |
| | | foreach (var item in materielInfos) |
| | | { |
| | | var medicineDTO = new ProductInfo |
| | | { |
| | | //ç¨æ·code |
| | | customerCode = "905", |
| | | //ç©æç±»å |
| | | materialCode = item.MaterielErpType, |
| | | //产åç¼ç |
| | | productCode = item.MaterielCode, |
| | | //产åå |
| | | productName = item.MaterielName, |
| | | //äº§åæ¡ç |
| | | productBarCode = item.Barcode, |
| | | |
| | | //è¯å |
| | | medicine = item.Dosage_form,//è¿éè¦è°ç¨æ¹æ³ï¼è½¬åæ¹æ³ |
| | | |
| | | //è§æ ¼ |
| | | productSpecifications = item.MaterielSpec, |
| | | //åä½ |
| | | unit = item.MaterielUnit, |
| | | //é¿ |
| | | singleProductLongNum = (item.MaterielLength ?? 0).ToString(), |
| | | //宽 |
| | | singleProductWideNum = (item.MaterielWide ?? 0).ToString(), |
| | | //é« |
| | | singleProductHighNum = (item.MaterielHeight ?? 0).ToString(), |
| | | //éé |
| | | singleProductWeight = (item.MaterielWeight ?? 0).ToString(), |
| | | //ä½ç§¯ |
| | | singleProductVolume = (item.MaterielVolume ?? 0).ToString(), |
| | | //æ¯å¦åæ¶ 0æ¯ä¸å é¤ï¼1å é¤ |
| | | isDelete = "0" |
| | | }; |
| | | var result = HttpHelper.Post(url, medicineDTO.ToJsonString()); |
| | | var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result); |
| | | if (resp != null && resp.code == "0") item.GoodStatusState = "ä¸å宿"; |
| | | } |
| | | BaseDal.UpdateData(materielInfos); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("ä¸åWCSç©æä¿¡æ¯å¼å¸¸ï¼" + ex.Message); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// åç»ä¸æ¸¸wcs忥è¯åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent ProductSynchronous1() |
| | | { |
| | | try |
| | | { |
| | | //æå°ä»¶æªä¸åççä¿¡æ¯åç®±è§ä¸º0ï¼æä½åºå为0çè¿æ»¤æ |
| | | //var list = BaseDal.Db.Queryable<Dt_MaterielInfo>().Where(x => x.GoodStatusState == "æªä¸å" && x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart).ToList(); |
| | | var list = BaseDal.QueryData(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty > 0 && x.MinQty > 0 && x.GoodStatusState == "æªä¸å").ToList(); |
| | | if (list.Count < 1) |
| | | { |
| | | return new WebResponseContent().OK("æ æªä¸åè¯å"); |
| | | } |
| | | //æ¾å°äºå°±å°æ´ä¸ªliståç»ä¸æ¸¸ç³»ç» |
| | | foreach (var item in list) |
| | | { |
| | | var medicineDTO = new ProductInfo |
| | | { |
| | | //ç¨æ·code |
| | | customerCode = "905", |
| | | //ç©æç±»å |
| | | materialCode = item.MaterielErpType, |
| | | //产åç¼ç |
| | | productCode = item.MaterielCode, |
| | | //产åå |
| | | productName = item.MaterielName, |
| | | //äº§åæ¡ç |
| | | productBarCode = item.Barcode, |
| | | |
| | | //è¯å |
| | | medicine = item.Dosage_form,//è¿éè¦è°ç¨æ¹æ³ï¼è½¬åæ¹æ³ |
| | | |
| | | //è§æ ¼ |
| | | productSpecifications = item.MaterielSpec, |
| | | //åä½ |
| | | unit = item.MaterielUnit, |
| | | //é¿ |
| | | singleProductLongNum = (item.MaterielLength ?? 0).ToString(), |
| | | //宽 |
| | | singleProductWideNum = (item.MaterielWide ?? 0).ToString(), |
| | | //é« |
| | | singleProductHighNum = (item.MaterielHeight ?? 0).ToString(), |
| | | //éé |
| | | singleProductWeight = (item.MaterielWeight ?? 0).ToString(), |
| | | //ä½ç§¯ |
| | | singleProductVolume = (item.MaterielVolume ?? 0).ToString(), |
| | | //æ¯å¦åæ¶ 0æ¯ä¸å é¤ï¼1å é¤ |
| | | isDelete = "0" |
| | | }; |
| | | var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous"; |
| | | var result = HttpHelper.Post(url, medicineDTO.ToJsonString()); |
| | | var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result); |
| | | |
| | | if (resp != null && resp.code == "0") |
| | | { |
| | | item.GoodStatusState = "ä¸å宿"; |
| | | } |
| | | else |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | } |
| | | BaseDal.UpdateData(list); |
| | | //Db.Updateable(list).ExecuteCommand(); |
| | | return new WebResponseContent { Status = true, Message = "æå" }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("ProductSynchronous å¼å¸¸ï¼" + ex.Message); |
| | | return new WebResponseContent { Status = false, Message = ex.Message }; |
| | | } |
| | | |
| | | } |
| | | public override WebResponseContent DeleteData(object[] keys) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | |
| | | saveModel.MainData.Add("goodStatusState", "æªä¸å"); |
| | | } |
| | | // 妿ç°å¨è¿ä¸ªç©æä¿¡æ¯æ¯å°ä»¶å¹¶ä¸ç®±è§æè
æä½åºå为0ï¼é£ä¹å°±è¦æç¤ºä» |
| | | if (saveModel.MainData["materielSourceType"].ToString() == "SelfMadePart" && (saveModel.MainData["boxQty"].ToString() =="0"|| saveModel.MainData["minQty"].ToString()=="0")) |
| | | if (saveModel.MainData["materielSourceType"].ToString() == "SelfMadePart" && (saveModel.MainData["boxQty"].ToString() == "0" || saveModel.MainData["minQty"].ToString() == "0")) |
| | | { |
| | | // è¿éæ·»å ä½ çé»è¾ |
| | | return WebResponseContent.Instance.Error("ç®±è§åæå°åºåæ°ä¸å¯å·²ä¸º0"); |
| | |
| | | { |
| | | using HttpClient httpClient = new HttpClient(); |
| | | httpClient.Timeout = new TimeSpan(0, 0, 60); |
| | | |
| | | |
| | | if (headers != null) |
| | | { |
| | | foreach (var header in headers) |
| | |
| | | { |
| | | string result = string.Empty; |
| | | DateTime beginDate = DateTime.Now; |
| | | string message = string.Empty; |
| | | try |
| | | { |
| | | using (HttpContent httpContent = new StringContent(requestJson)) |
| | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | message = e.Message; |
| | | throw new Exception(e.Message); |
| | | } |
| | | finally |
| | | { |
| | | Logger.Add(serviceAddress, requestJson, result, beginDate); |
| | | if (!string.IsNullOrEmpty(message)) |
| | | Logger.Add(serviceAddress, requestJson, message, beginDate); |
| | | else |
| | | Logger.Add(serviceAddress, requestJson, result, beginDate); |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | public interface IBusiness : IDependency |
| | | { |
| | | WebResponseContent GetInOrder(); |
| | | WebResponseContent GetOutOrder(); |
| | | /// <summary> |
| | | /// è·å䏿¸¸å
¥åºè®¢å |
| | | /// </summary> |
| | |
| | | /// <param name="key"></param> |
| | | /// <returns></returns> |
| | | WebResponseContent FinishInOrder(int key); |
| | | WebResponseContent CompleteLKInOrder(Dt_CabinOrder cabinOrder, TowcsDto.EdiOrderCallbackRequest request); |
| | | } |
| | | } |
| | |
| | | WebResponseContent CheckTaskFinish(Dt_SupplyTask supplyTask, string LocationCode = null); |
| | | WebResponseContent CreateOutboundOrder(OrderDto.UpstramOutOrderInfo upstramOutOrderInfo); |
| | | WebResponseContent CreateCheckOutOrder(OrderDto.UpstramOutOrderInfo outorder); |
| | | WebResponseContent CompleteLKOutOrder(Dt_DeliveryOrder deliveryOrder, TowcsDto.EdiOrderCallbackRequest request); |
| | | } |
| | | } |
| | |
| | | /// è·åè¯ååºç¡ä¿¡æ¯åæ¥æ¥å£ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent GetMedicineGoodsInfom(); |
| | | //public WebResponseContent GetMedicineGoodsInfom(); |
| | | |
| | | public WebResponseContent ProductSynchronous(); |
| | | //public WebResponseContent ProductSynchronous(); |
| | | |
| | | |
| | | /// <summary> |
| | |
| | | using System.Xml.Linq; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using static WIDESEA_DTO.SquareCabin.AlarmDto; |
| | | using OfficeOpenXml.Style; |
| | | using System.Security.Policy; |
| | | |
| | | namespace WIDESEA_WMSServer |
| | | namespace WIDESEA_SquareCabinServices |
| | | { |
| | | public class Business : IBusiness |
| | | public partial class Business : IBusiness |
| | | { |
| | | private readonly ICabinOrderServices _cabinOrderServices; |
| | | private readonly ICabinOrderDetailServices _cabinDetailServices; |
| | | private readonly IDeliveryOrderServices _deliveryOrderServices; |
| | | private readonly IDeliveryOrderDetailServices _deliveryOrderDetailServices; |
| | | private readonly IMaterielInfoService _materielInfoService; |
| | | private readonly IMessageInfoService _messageInfoService; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | public Business(IDeliveryOrderServices deliveryOrderServices, IUnitOfWorkManage unitOfWorkManage, IDeliveryOrderDetailServices deliveryOrderDetailServices, ICabinOrderServices cabinOrderServices, ICabinOrderDetailServices cabinDetailServices, IMessageInfoService messageInfoService) |
| | | public Business(IDeliveryOrderServices deliveryOrderServices, IUnitOfWorkManage unitOfWorkManage, IDeliveryOrderDetailServices deliveryOrderDetailServices, ICabinOrderServices cabinOrderServices, ICabinOrderDetailServices cabinDetailServices, IMaterielInfoService materielInfoService, IMessageInfoService messageInfoService) |
| | | { |
| | | _deliveryOrderServices = deliveryOrderServices; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _deliveryOrderDetailServices = deliveryOrderDetailServices; |
| | | _cabinOrderServices = cabinOrderServices; |
| | | _cabinDetailServices = cabinDetailServices; |
| | | _materielInfoService = materielInfoService; |
| | | _messageInfoService = messageInfoService; |
| | | } |
| | | #region è·åERPå
¥åºå |
| | |
| | | // ååºåå |
| | | var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result); |
| | | |
| | | if (response == null || response.resultCode != "0" ) |
| | | if (response == null || response.resultCode != "0") |
| | | { |
| | | // è°ç¨å¼å¸¸æ¥å£ |
| | | //SendErrorToUpstream(1, "", response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败", ""); |
| | |
| | | if (!responseContent.Status) throw new Exception(responseContent.Message); |
| | | List<Dt_CabinOrder>? dt_CabinOrders = responseContent.Data as List<Dt_CabinOrder>; |
| | | if (dt_CabinOrders != null) |
| | | _cabinOrderServices.Db.CopyNew().InsertNav(dt_CabinOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _cabinOrderServices.Db.InsertNav(dt_CabinOrders).Include(x => x.Details).ExecuteCommand(); |
| | | } |
| | | else if (order.order_type == "3")//å
¥åºéæ |
| | | { |
| | |
| | | var result = HttpHelper.Post(url, requestData.ToJsonString()); |
| | | var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstramOutOrderInfo>>(result); |
| | | |
| | | if (response==null||response.resultCode != "0") |
| | | if (response == null || response.resultCode != "0") |
| | | { |
| | | //SendErrorToUpstream(3, "", response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败", ""); |
| | | return responseContent.Error(response?.resultMsg ?? "䏿¸¸æ¥å£è¿å失败"); |
| | |
| | | { |
| | | try |
| | | { |
| | | //2.æ¥è¯¢ç¬¦åæ¡ä»¶ç订åï¼è¡¨å¤´ = æ°å»º && å
嫿ææç»ï¼ |
| | | //var orders = BaseDal.Db.Queryable<Dt_CabinOrder>() |
| | | // .Where(o => o.OdrderStatus == "æ°å»º") |
| | | // .Includes(o => o.Details, d => d.MedicineGoods) |
| | | // .ToList(); |
| | | //æ¥åºå
å«å
¨é¨çå
¥åºåï¼å
å«å
¨é¨æç»+ä¸ä¸ªæç»å¯¹åºä¸ä¸ªåå |
| | | var reslut = WarehouseEnum.ç«åº.ObjToInt().ToString("000"); |
| | | var orders = _cabinOrderServices.Db.CopyNew() |
| | | .Queryable<Dt_CabinOrder>() |
| | | .Where(o => o.OdrderStatus == "æ°å»º" && o.Warehouse_no == reslut) |
| | | .Includes(o => o.Details, d => d.MedicineGoods) |
| | | .ToList(); |
| | | // 3. åè¿æ»¤æä¸ç¬¦åæ¡ä»¶çæç»ï¼åªä¿ç Status=0ï¼ |
| | | var orders = _cabinOrderServices.Repository.QueryData(x => x.OdrderStatus == "æ°å»º" && x.Warehouse_no == reslut); |
| | | if (orders.Count < 1) return WebResponseContent.Instance.OK(); |
| | | string url = "http://172.16.1.2:9357/file-admin/api/in/ediIn"; |
| | | var cabinOrderDetails = _cabinDetailServices.Repository.QueryData(x => orders.Select(x => x.Id).ToList().Contains(x.OrderId)); |
| | | var materielInfos = _materielInfoService.Repository.QueryData(x => cabinOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode)); |
| | | foreach (var order in orders) |
| | | { |
| | | //Console.WriteLine($"订å {order.Order_no} åæç»æ°ï¼{order.Details.Count}"); |
| | | order.Details = order.Details.Where(d => d.Status == 0).ToList(); |
| | | //Console.WriteLine($"订å {order.Order_no} è¿æ»¤åæç»æ°ï¼{order.Details.Count}"); |
| | | } |
| | | |
| | | |
| | | if (orders.Count < 1) |
| | | { |
| | | //Console.WriteLine("没æç¬¦åæ¡ä»¶ç订åéè¦æ¨é"); |
| | | return WebResponseContent.Instance.Error("没æç¬¦åæ¡ä»¶ç订åéè¦æ¨é"); |
| | | } |
| | | |
| | | // 4. éå订åï¼ç»è£
DTO å¹¶æ¨é |
| | | foreach (var order in orders) |
| | | { |
| | | // ä»ç¬¬ä¸ä¸ªæ MedicineGoods çæç»ä¸ååº MaterielErpType |
| | | string materialCode = order.Details |
| | | .Select(d => d.MedicineGoods?.MaterielErpType) |
| | | .FirstOrDefault(x => !string.IsNullOrEmpty(x)) ?? "YY"; // é»è®¤å¼YY |
| | | |
| | | order.Details = cabinOrderDetails.Where(x => x.OrderId == order.Id).ToList(); |
| | | foreach (var item in order.Details) |
| | | { |
| | | item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First(); |
| | | } |
| | | #region ä¸åWCS |
| | | string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY"; |
| | | var ediDto = new ToediInInfo |
| | | { |
| | | |
| | | //客æ·ä»£ç |
| | | customerCode = "905", |
| | | //ç©æç±»å |
| | |
| | | //产å |
| | | productCode = d.Goods_no, |
| | | //skuåç§° |
| | | productName = d.MedicineGoods?.MaterielName, |
| | | productName = d.MedicineGoods.MaterielName, |
| | | //skuè§æ ¼ |
| | | productSpecifications = d.MedicineGoods?.MaterielSpec, |
| | | productSpecifications = d.MedicineGoods.MaterielSpec, |
| | | //æ°é |
| | | quantity = (int)d.Order_qty, |
| | | //ææ |
| | | validityPeriod = d.Exp_date, |
| | | //ç产åå®¶ |
| | | manufacturer = d.MedicineGoods?.Factory, |
| | | manufacturer = d.MedicineGoods.Factory, |
| | | //æ¿å· |
| | | libraryNo = order.Warehouse_no, |
| | | }).ToList() |
| | | }; |
| | | |
| | | var url = "http://172.16.1.2:9357/file-admin/api/in/ediIn"; |
| | | //var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363019549"; |
| | | var result = HttpHelper.Post(url, ediDto.ToJsonString()); |
| | | var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result); |
| | | |
| | | if (resp != null && resp.code == "0") |
| | | { |
| | | // æ´æ°è¡¨å¤´ç¶æ |
| | | _cabinOrderServices.Db.Updateable<Dt_CabinOrder>() |
| | | .SetColumns(o => new Dt_CabinOrder { OdrderStatus = "å¼å§" }) |
| | | .Where(o => o.Id == order.Id) |
| | | .ExecuteCommand(); |
| | | |
| | | // æ´æ°æç»ç¶æä¸ºå·²åæ¥ //è¿éè¦æ¯å°æ°å»º--ãå¼å§ç¶æ,å¨å端æ¥å£è¿åæä»¬çæ¶åå¨è¿å已宿 |
| | | _cabinDetailServices.Db.Updateable<Dt_CabinOrderDetail>() |
| | | .SetColumns(d => new Dt_CabinOrderDetail { Status = 1, OrderDetailStatus = "å¼å§" }) |
| | | .Where(d => d.OrderId == order.Id && d.Status == 0) |
| | | .ExecuteCommand(); |
| | | |
| | | Console.WriteLine($"订å {order.Order_no} æ¨éæå"); |
| | | order.OdrderStatus = "å¼å§"; |
| | | foreach (var item in cabinOrderDetails.Where(x => x.OrderId == order.Id)) |
| | | { |
| | | item.Status = 1; |
| | | item.OrderDetailStatus = "å¼å§"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | continue; |
| | | //SendErrorToUpstream(3, order.Order_no, resp?.msg ?? "WCS æ¨é失败", ""); |
| | | //Console.WriteLine($"订å {order.Order_no} æ¨é失败ï¼{resp?.msg}"); |
| | | //return new WebResponseContent { Status = false, Message = "è®¢åæ¨é失败" }; |
| | | } |
| | | #endregion |
| | | } |
| | | return new WebResponseContent { Status = true, Message = "æ¨éæå" }; |
| | | _cabinOrderServices.UpdateData(orders); |
| | | _cabinDetailServices.UpdateData(cabinOrderDetails); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | Console.WriteLine("EdiIn å¼å¸¸ï¼" + ex.Message); |
| | | return new WebResponseContent { Status = false, Message = ex.Message }; |
| | | Console.WriteLine("ä¸åWCSå
¥åºåå¼å¸¸ï¼" + ex.Message); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | #region MyRegion |
| | | |
| | | //public WebResponseContent EdiIn1() |
| | | //{ |
| | | // try |
| | | // { |
| | | // //2.æ¥è¯¢ç¬¦åæ¡ä»¶ç订åï¼è¡¨å¤´ = æ°å»º && å
嫿ææç»ï¼ |
| | | // //var orders = BaseDal.Db.Queryable<Dt_CabinOrder>() |
| | | // // .Where(o => o.OdrderStatus == "æ°å»º") |
| | | // // .Includes(o => o.Details, d => d.MedicineGoods) |
| | | // // .ToList(); |
| | | // //æ¥åºå
å«å
¨é¨çå
¥åºåï¼å
å«å
¨é¨æç»+ä¸ä¸ªæç»å¯¹åºä¸ä¸ªåå |
| | | // var reslut = WarehouseEnum.ç«åº.ObjToInt().ToString("000"); |
| | | // var orders = _cabinOrderServices.Db.CopyNew() |
| | | // .Queryable<Dt_CabinOrder>() |
| | | // .Where(o => o.OdrderStatus == "æ°å»º" && o.Warehouse_no == reslut) |
| | | // .Includes(o => o.Details, d => d.MedicineGoods) |
| | | // .ToList(); |
| | | // // 3. åè¿æ»¤æä¸ç¬¦åæ¡ä»¶çæç»ï¼åªä¿ç Status=0ï¼ |
| | | // foreach (var order in orders) |
| | | // { |
| | | // //Console.WriteLine($"订å {order.Order_no} åæç»æ°ï¼{order.Details.Count}"); |
| | | // order.Details = order.Details.Where(d => d.Status == 0).ToList(); |
| | | // //Console.WriteLine($"订å {order.Order_no} è¿æ»¤åæç»æ°ï¼{order.Details.Count}"); |
| | | // } |
| | | |
| | | |
| | | // if (orders.Count < 1) |
| | | // { |
| | | // //Console.WriteLine("没æç¬¦åæ¡ä»¶ç订åéè¦æ¨é"); |
| | | // return WebResponseContent.Instance.Error("没æç¬¦åæ¡ä»¶ç订åéè¦æ¨é"); |
| | | // } |
| | | // List<Dt_CabinOrderDetail> cabinOrderDetails = new List<Dt_CabinOrderDetail>(); |
| | | // var url = "http://172.16.1.2:9357/file-admin/api/in/ediIn"; |
| | | // // 4. éå订åï¼ç»è£
DTO å¹¶æ¨é |
| | | // foreach (var order in orders) |
| | | // { |
| | | // // ä»ç¬¬ä¸ä¸ªæ MedicineGoods çæç»ä¸ååº MaterielErpType |
| | | // string materialCode = order.Details |
| | | // .Select(d => d.MedicineGoods?.MaterielErpType) |
| | | // .FirstOrDefault(x => !string.IsNullOrEmpty(x)) ?? "YY"; // é»è®¤å¼YY |
| | | |
| | | // var ediDto = new ToediInInfo |
| | | // { |
| | | |
| | | // //客æ·ä»£ç |
| | | // customerCode = "905", |
| | | // //ç©æç±»å |
| | | // materialCode = materialCode, |
| | | // //å
¥åºåå· |
| | | // externalOrderNo = order.Order_no, |
| | | // //å
¥åºåç±»å |
| | | // inOrderType = order.Order_type == "5" ? "20" : "10", |
| | | // //ä¼å
级 |
| | | // priority = 0, |
| | | // //æ¯å¦åæ¶ |
| | | // Is_cancel = 0, |
| | | // details = order.Details.Select(d => new ToediInDetail |
| | | // { |
| | | // //æ¹å· |
| | | // batchNo = d.Batch_num, |
| | | // //产å |
| | | // productCode = d.Goods_no, |
| | | // //skuåç§° |
| | | // productName = d.MedicineGoods?.MaterielName, |
| | | // //skuè§æ ¼ |
| | | // productSpecifications = d.MedicineGoods?.MaterielSpec, |
| | | // //æ°é |
| | | // quantity = (int)d.Order_qty, |
| | | // //ææ |
| | | // validityPeriod = d.Exp_date, |
| | | // //ç产åå®¶ |
| | | // manufacturer = d.MedicineGoods?.Factory, |
| | | // //æ¿å· |
| | | // libraryNo = order.Warehouse_no, |
| | | // }).ToList() |
| | | // }; |
| | | |
| | | // //var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363019549"; |
| | | // var result = HttpHelper.Post(url, ediDto.ToJsonString()); |
| | | // var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result); |
| | | |
| | | // if (resp != null && resp.code == "0") |
| | | // { |
| | | // order.OdrderStatus = "å¼å§"; |
| | | // foreach (var item in order.Details) |
| | | // { |
| | | // item.Status = 1; |
| | | // item.OrderDetailStatus = "å¼å§"; |
| | | // } |
| | | // cabinOrderDetails.AddRange(order.Details); |
| | | // // æ´æ°è¡¨å¤´ç¶æ |
| | | // //_cabinOrderServices.Db.Updateable<Dt_CabinOrder>() |
| | | // // .SetColumns(o => new Dt_CabinOrder { OdrderStatus = "å¼å§" }) |
| | | // // .Where(o => o.Id == order.Id) |
| | | // // .ExecuteCommand(); |
| | | |
| | | // // æ´æ°æç»ç¶æä¸ºå·²åæ¥ //è¿éè¦æ¯å°æ°å»º--ãå¼å§ç¶æ,å¨å端æ¥å£è¿åæä»¬çæ¶åå¨è¿å已宿 |
| | | // //_cabinDetailServices.Db.Updateable<Dt_CabinOrderDetail>() |
| | | // // .SetColumns(d => new Dt_CabinOrderDetail { Status = 1, OrderDetailStatus = "å¼å§" }) |
| | | // // .Where(d => d.OrderId == order.Id && d.Status == 0) |
| | | // // .ExecuteCommand(); |
| | | |
| | | // //Console.WriteLine($"订å {order.Order_no} æ¨éæå"); |
| | | // } |
| | | // else |
| | | // { |
| | | // continue; |
| | | // //SendErrorToUpstream(3, order.Order_no, resp?.msg ?? "WCS æ¨é失败", ""); |
| | | // //Console.WriteLine($"订å {order.Order_no} æ¨é失败ï¼{resp?.msg}"); |
| | | // //return new WebResponseContent { Status = false, Message = "è®¢åæ¨é失败" }; |
| | | // } |
| | | // } |
| | | // _cabinOrderServices.UpdateData(orders); |
| | | // _cabinDetailServices.UpdateData(cabinOrderDetails); |
| | | // return new WebResponseContent { Status = true, Message = "æ¨éæå" }; |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | |
| | | // Console.WriteLine("EdiIn å¼å¸¸ï¼" + ex.Message); |
| | | // return new WebResponseContent { Status = false, Message = ex.Message }; |
| | | // } |
| | | //} |
| | | #endregion |
| | | #endregion |
| | | |
| | | #region ä¸åç«åºåºåºå |
| | | public WebResponseContent EdiOut() |
| | | { |
| | | try |
| | | { |
| | | var reslut = WarehouseEnum.ç«åº.ObjToInt().ToString("000"); |
| | | var orders = _deliveryOrderServices.Repository.QueryData(x => x.OutStatus == "æ°å»º" && x.Warehouse_no == reslut); |
| | | if (orders.Count < 1) return WebResponseContent.Instance.OK(); |
| | | string url = "http://172.16.1.2:9357/file-admin/api/out/ediOut"; |
| | | var deliveryOrderDetails = _deliveryOrderDetailServices.Repository.QueryData(x => orders.Select(x => x.Id).ToList().Contains(x.DeliveryOrderId)); |
| | | var materielInfos = _materielInfoService.Repository.QueryData(x => deliveryOrderDetails.Select(x => x.Goods_no).Contains(x.MaterielCode)); |
| | | foreach (var order in orders) |
| | | { |
| | | order.Details = deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id).ToList(); |
| | | foreach (var item in order.Details) |
| | | { |
| | | item.MedicineGoods = materielInfos.Where(x => x.MaterielCode == item.Goods_no).First(); |
| | | } |
| | | #region ä¸åWCS |
| | | string materialCode = order.Details.FirstOrDefault()?.MedicineGoods?.MaterielErpType ?? "YY"; |
| | | var ediDto = new ToediOutInfo |
| | | { |
| | | //客æ·ä»£ç |
| | | customerCode = "905", |
| | | //ç©æç±»å |
| | | materialCode = materialCode, |
| | | externalOrderNo = order.Out_no, |
| | | outOrderType = order.Out_type, |
| | | priority = 1, |
| | | Is_cancel = 0, |
| | | details = order.Details.Select(d => new ToeOutdiInDetail |
| | | { |
| | | batchNo = d.Batch_num, |
| | | productCode = d.Goods_no, |
| | | productName = d.MedicineGoods.MaterielName, |
| | | productSpecifications = d.MedicineGoods.MaterielModel, |
| | | quantity = (int)d.Order_qty, |
| | | }).ToList() |
| | | }; |
| | | var result = HttpHelper.Post(url, ediDto.ToJsonString()); |
| | | var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result); |
| | | if (resp != null && resp.code == "0") |
| | | { |
| | | order.OutStatus = "å¼å§"; |
| | | foreach (var item in deliveryOrderDetails.Where(x => x.DeliveryOrderId == order.Id)) |
| | | { |
| | | item.Status = 1; |
| | | item.OotDetailStatus = "å¼å§"; |
| | | } |
| | | } |
| | | #endregion |
| | | } |
| | | _deliveryOrderServices.UpdateData(orders); |
| | | _deliveryOrderDetailServices.UpdateData(deliveryOrderDetails); |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("ä¸åWCSåºåºåå¼å¸¸ï¼" + ex.Message); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | #region MyRegion |
| | | public WebResponseContent EdiOut1() |
| | | { |
| | | var responseContent = new WebResponseContent(); |
| | | var WarehouseLk = WarehouseEnum.ç«åº.ObjToInt().ToString("000"); |
| | |
| | | //Console.WriteLine("没æç¬¦åæ¡ä»¶ç订åéè¦æ¨é"); |
| | | return responseContent.Error("没æç¬¦åæ¡ä»¶ç订åéè¦æ¨é"); |
| | | } |
| | | |
| | | List<Dt_DeliveryOrderDetail> deliveryOrderDetails = new List<Dt_DeliveryOrderDetail>(); |
| | | var url = "http://172.16.1.2:9357/file-admin/api/out/ediOut"; |
| | | foreach (var order in outOrders) |
| | | { |
| | | try |
| | |
| | | }; |
| | | |
| | | // 4. è°ç¨æ¥å£ |
| | | var url = "http://172.16.1.2:9357/file-admin/api/out/ediOut"; |
| | | //var url = "http://127.0.0.1:4523/m2/5660322-5340849-default/363076920"; |
| | | |
| | | var result = HttpHelper.Post(url, ediDto.ToJsonString()); |
| | |
| | | |
| | | if (resp != null && resp.code == "0") |
| | | { |
| | | order.OutStatus = "å¼å§"; |
| | | foreach (var item in order.Details) |
| | | { |
| | | item.Status = 1; |
| | | item.OotDetailStatus = "å¼å§"; |
| | | } |
| | | deliveryOrderDetails.AddRange(order.Details); |
| | | // æ´æ°è¡¨å¤´ç¶æ |
| | | _cabinDetailServices.Db.CopyNew().Updateable<Dt_DeliveryOrder>() |
| | | .SetColumns(o => new Dt_DeliveryOrder { OutStatus = "å¼å§" }) |
| | | .Where(o => o.Id == order.Id) |
| | | .ExecuteCommand(); |
| | | //_cabinDetailServices.Db.CopyNew().Updateable<Dt_DeliveryOrder>() |
| | | // .SetColumns(o => new Dt_DeliveryOrder { OutStatus = "å¼å§" }) |
| | | // .Where(o => o.Id == order.Id) |
| | | // .ExecuteCommand(); |
| | | |
| | | // æ´æ°æç»ç¶æ |
| | | _deliveryOrderDetailServices.Db.CopyNew().Updateable<Dt_DeliveryOrderDetail>() |
| | | .SetColumns(d => new Dt_DeliveryOrderDetail { Status = 1, OotDetailStatus = "å¼å§" }) |
| | | .Where(d => d.DeliveryOrderId == order.Id && d.Status == 0) |
| | | .ExecuteCommand(); |
| | | Console.WriteLine($"订å {order.Out_no} æ¨éæå"); |
| | | //_deliveryOrderDetailServices.Db.CopyNew().Updateable<Dt_DeliveryOrderDetail>() |
| | | // .SetColumns(d => new Dt_DeliveryOrderDetail { Status = 1, OotDetailStatus = "å¼å§" }) |
| | | // .Where(d => d.DeliveryOrderId == order.Id && d.Status == 0) |
| | | // .ExecuteCommand(); |
| | | //Console.WriteLine($"订å {order.Out_no} æ¨éæå"); |
| | | } |
| | | else |
| | | { |
| | |
| | | //Console.WriteLine($"订å {order.Out_no} æ¨éå¼å¸¸ï¼{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | _deliveryOrderServices.UpdateData(outOrders); |
| | | _deliveryOrderDetailServices.UpdateData(deliveryOrderDetails); |
| | | return responseContent.OK("åºåºè®¢åæ¨é宿"); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | return responseContent.Error("åºåºè®¢åæ¨é失败ï¼" + ex.Message); |
| | | } |
| | | } |
| | | #endregion |
| | | #endregion |
| | | |
| | | #region å
¥åºå®æä¸æ¥ERP |
| | |
| | | var responseContent = new WebResponseContent(); |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | #region æ¥æ¾ææå·²å®æå
¥åºå |
| | | var inorders = _cabinOrderServices.Repository.QueryData(x => x.OdrderStatus == "已宿").Select(x => x.Order_no).Distinct().ToList(); |
| | | foreach (var inorder in inorders) |
| | | var Orders = _cabinOrderServices.Db.Queryable<Dt_CabinOrder>().Where(x => inorders.Contains(x.Order_no)).Includes(x => x.Details).ToList(); |
| | | List<Dt_CabinOrder> cabinOrders = new List<Dt_CabinOrder>(); |
| | | List<Dt_CabinOrderDetail> cabinOrderDetails = new List<Dt_CabinOrderDetail>(); |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk"; |
| | | foreach (var item in Orders.GroupBy(x => x.Order_no)) |
| | | { |
| | | var Orders = _cabinOrderServices.Db.CopyNew().Queryable<Dt_CabinOrder>().Where(x => x.Order_no == inorder).Includes(x => x.Details).ToList(); |
| | | |
| | | if (!Orders.Where(x => x.OdrderStatus != "已宿").Any()) |
| | | if (!item.Where(x => x.OdrderStatus != "已宿").Any()) |
| | | { |
| | | if (Orders.FirstOrDefault().Order_type == InOrderTypeEnum.Allocat.ObjToInt().ToString()) |
| | | if (item.First().Order_type == InOrderTypeEnum.Allocat.ObjToInt().ToString()) |
| | | { |
| | | foreach (var item in Orders) |
| | | foreach (var a in item) |
| | | { |
| | | if (item.Details != null) |
| | | _cabinDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.èªå¨å®æ); |
| | | item.Details = null; |
| | | if (a.Details != null) cabinOrderDetails.AddRange(a.Details); |
| | | a.Details = null; |
| | | cabinOrders.Add(a); |
| | | } |
| | | _cabinOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.èªå¨å®æ); |
| | | } |
| | | else |
| | | { |
| | | // è°ç¨ä¸æ¸¸æ¥å£ |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/inOrderOk"; |
| | | |
| | | |
| | | |
| | | var result = HttpHelper.Post(url, new { order_no = inorder }.ToJsonString()); |
| | | var result = HttpHelper.Post(url, new { order_no = item.Key }.ToJsonString()); |
| | | var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result); |
| | | if (response != null&&response.resultCode == "0") |
| | | if (response != null && response.resultCode == "0") |
| | | { |
| | | foreach (var item in Orders) |
| | | foreach (var a in item) |
| | | { |
| | | if (item.Details != null) |
| | | _cabinDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.èªå¨å®æ); |
| | | item.Details = null; |
| | | if (a.Details != null) cabinOrderDetails.AddRange(a.Details); |
| | | a.Details = null; |
| | | cabinOrders.Add(a); |
| | | } |
| | | _cabinOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.èªå¨å®æ); |
| | | // æäº¤äºå¡ |
| | | } |
| | | else |
| | | { |
| | | string mess = "䏿¥ERPæ ååº"; |
| | | if (response != null) mess = response.resultMsg; |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, $"å
¥åºåå·ã{inorder}ã宿䏿¥ERP失败", mess); |
| | | //_unitOfWorkManage.RollbackTran(); |
| | | //SendErrorToUpstream(2, "", $"䏿¸¸æ¥å£è¿å失败: {response.resultMsg}", inorder); |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, $"å
¥åºåå·ã{item.Key}ã宿䏿¥ERP失败", mess); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | _cabinDetailServices.Repository.DeleteAndMoveIntoHty(cabinOrderDetails, OperateTypeEnum.èªå¨å®æ); |
| | | _cabinOrderServices.Repository.DeleteAndMoveIntoHty(cabinOrders, OperateTypeEnum.èªå¨å®æ); |
| | | #endregion |
| | | _unitOfWorkManage.CommitTran(); |
| | | return responseContent.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return responseContent.Error("æ¹éå¤ç失败ï¼" + ex.Message); |
| | | } |
| | | } |
| | |
| | | var responseContent = new WebResponseContent(); |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | #region æ¥æ¾ææå·²å®æåºåºå |
| | | var outorders = _deliveryOrderServices.Repository.QueryData(x => x.OutStatus == "已宿").Select(x => x.Out_no).Distinct().ToList(); |
| | | foreach (var outorder in outorders) |
| | | var Orders = _deliveryOrderServices.Db.Queryable<Dt_DeliveryOrder>().Where(x => outorders.Contains(x.Out_no)).Includes(x => x.Details).ToList(); |
| | | List<Dt_DeliveryOrder> cabinOrders = new List<Dt_DeliveryOrder>(); |
| | | List<Dt_DeliveryOrderDetail> cabinOrderDetails = new List<Dt_DeliveryOrderDetail>(); |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk"; |
| | | foreach (var item in Orders.GroupBy(x => x.Out_no)) |
| | | { |
| | | var Orders = _deliveryOrderServices.Db.CopyNew().Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == outorder).Includes(x => x.Details).ToList(); |
| | | |
| | | if (!Orders.Where(x => x.OutStatus != "已宿").Any()) |
| | | if (!item.Where(x => x.OutStatus != "已宿").Any()) |
| | | { |
| | | if (Orders.FirstOrDefault().Out_type == OutOrderTypeEnum.Allocate.ObjToInt().ToString()) |
| | | if (item.First().Out_type == OutOrderTypeEnum.Allocate.ObjToInt().ToString()) |
| | | { |
| | | foreach (var item in Orders) |
| | | foreach (var a in item) |
| | | { |
| | | if (item.Details != null) |
| | | _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.èªå¨å®æ); |
| | | item.Details = null; |
| | | if (a.Details != null) cabinOrderDetails.AddRange(a.Details); |
| | | a.Details = null; |
| | | cabinOrders.Add(a); |
| | | } |
| | | _deliveryOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.èªå¨å®æ); |
| | | } |
| | | else |
| | | { |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk"; |
| | | var requestDate = new |
| | | { |
| | | order_no = outorder |
| | | }; |
| | | var result = HttpHelper.Post(url, requestDate.ToJsonString()); |
| | | var result = HttpHelper.Post(url, new { order_no = item.Key }.ToJsonString()); |
| | | var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result); |
| | | if (response != null && response.resultCode == "0") |
| | | { |
| | | foreach (var item in Orders) |
| | | foreach (var a in item) |
| | | { |
| | | if (item.Details != null) |
| | | _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.èªå¨å®æ); |
| | | item.Details = null; |
| | | if (a.Details != null) cabinOrderDetails.AddRange(a.Details); |
| | | a.Details = null; |
| | | cabinOrders.Add(a); |
| | | } |
| | | _deliveryOrderServices.Repository.DeleteAndMoveIntoHty(Orders, OperateTypeEnum.èªå¨å®æ); |
| | | } |
| | | else |
| | | { |
| | | string mess = "䏿¥ERPæ ååº"; |
| | | if (response != null) mess = response.resultMsg; |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.OutOrderAlarm, $"åºåºåå·ã{outorder}ã宿䏿¥ERP失败", mess); |
| | | //_unitOfWorkManage.RollbackTran(); |
| | | //SendErrorToUpstream(4, "", $"䏿¸¸æ¥å£è¿å失败: {response.resultMsg}", outorder); |
| | | _messageInfoService.AddMessageInfo(MessageGroupByEnum.InOrderAlarm, $"åºåºåå·ã{item.Key}ã宿䏿¥ERP失败", mess); |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(cabinOrderDetails, OperateTypeEnum.èªå¨å®æ); |
| | | _deliveryOrderServices.Repository.DeleteAndMoveIntoHty(cabinOrders, OperateTypeEnum.èªå¨å®æ); |
| | | |
| | | #endregion |
| | | _unitOfWorkManage.CommitTran(); |
| | | return responseContent.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return responseContent.Error("æ¹éå¤ç失败ï¼" + ex.Message); |
| | | } |
| | | } |
| | |
| | | |
| | | namespace WIDESEA_SquareCabinServices |
| | | { |
| | | public class CabinOrderServices : ServiceBase<Dt_CabinOrder, IRepository<Dt_CabinOrder>>, ICabinOrderServices |
| | | public partial class CabinOrderServices : ServiceBase<Dt_CabinOrder, IRepository<Dt_CabinOrder>>, ICabinOrderServices |
| | | { |
| | | private readonly IMedicineGoodsServices _medicineGoodsServices; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | |
| | | }).ToList() |
| | | }; |
| | | dt_CabinOrders.Add(entityOrder); |
| | | webResponseContent.OK(data: dt_CabinOrders); |
| | | BaseDal.Db.InsertNav(dt_CabinOrders).Include(x => x.Details).ExecuteCommand(); |
| | | //webResponseContent.OK(data: dt_CabinOrders); |
| | | } |
| | | #endregion |
| | | else |
| | | { |
| | | #region å建å
¥åºå头表ã大件åºåç«åº |
| | | var entityOrder = new Dt_CabinOrder//大件åºè®¢å |
| | | { |
| | | Order_no = order.order_no, |
| | |
| | | Warehouse_no = WarehouseEnum.ç«åº.ObjToInt().ToString("000"), |
| | | Details = new List<Dt_CabinOrderDetail>() |
| | | }; |
| | | #endregion |
| | | |
| | | List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => order.details.Select(x => x.goods_no).Contains(x.MaterielCode)); |
| | | List<Dt_MaterielInfo> materielInfosUp = new List<Dt_MaterielInfo>(); |
| | | foreach (var item in order.details) |
| | | { |
| | | // å°ä¸æ¸¸å
¥åºæ°éè½¬ä¸ºæ£æ° |
| | | item.order_qty = Math.Abs(item.order_qty); |
| | | #region æ ¹æ®ç©æç¼ç æ¥è¯¢ç©æä¿¡æ¯ |
| | | Dt_MaterielInfo materielInfo = _materielInfoService.Repository.QueryFirst(x => x.MaterielCode == item.goods_no); |
| | | Dt_MaterielInfo? materielInfo = materielInfos.Where(x => x.MaterielCode == item.goods_no).FirstOrDefault(); |
| | | if (materielInfo == null) throw new Exception($"æªæ¾å°è¯åç¼ç ã{item.goods_no}ãçä¿¡æ¯"); |
| | | if (!Enum.IsDefined(typeof(MaterielSourceTypeEnum), materielInfo.MaterielSourceType)) |
| | | throw new Exception($"请设置è¯åç¼å·ã{item.goods_no}ãç屿§åç±»"); |
| | |
| | | entityOrder.Details.Add(orderDetail); |
| | | } |
| | | #endregion |
| | | materielInfosUp.Add(materielInfo); |
| | | } |
| | | _materielInfoService.UpdateData(materielInfo); |
| | | //_materielInfoService.UpdateData(materielInfo); |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | if (materielInfosUp.Count > 0) _materielInfoService.UpdateData(materielInfosUp); |
| | | if (entityOrder.Details.Count > 0) dt_CabinOrders.Add(entityOrder); |
| | | if (entityOrderLK.Details.Count > 0) dt_CabinOrders.Add(entityOrderLK); |
| | | webResponseContent.OK(data: dt_CabinOrders); |
| | | if (dt_CabinOrders.Count > 0) BaseDal.Db.InsertNav(dt_CabinOrders).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | //webResponseContent.OK(data: dt_CabinOrders); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | webResponseContent.Error(ex.Message); |
| | | } |
| | | return webResponseContent; |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | string WareCodeMJ = WarehouseEnum.麻精åº.ObjToInt().ToString("000"); |
| | | string WareCodeLD = WarehouseEnum.å·å»åº.ObjToInt().ToString("000"); |
| | | List<Dt_SupplyTask_Hty> supplyTask_Hties = new List<Dt_SupplyTask_Hty>(); |
| | | List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>(); |
| | | List<Dt_InventoryInfo> infosUp = new List<Dt_InventoryInfo>(); |
| | | var codes = order.details.Select(x => x.goods_no).ToList(); |
| | | #region ç¹æ®åºæ¿ |
| | | if (order.warehouse_no == WareCodeMJ || order.warehouse_no == WareCodeLD) |
| | | { |
| | | |
| | | List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)); |
| | | List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)); |
| | | #region åºåãåºåæ¹æ¬¡å¹³è´¦ |
| | | foreach (var item in order.details) |
| | | { |
| | | //æ¾åºåæ¹æ¬¡ä¿¡æ¯ |
| | | Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num); |
| | | Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First(); |
| | | var Qty = Math.Abs(inventory_Batch.StockQuantity - inventory_Batch.SupplyQuantity); |
| | | if (Qty != item.order_qty) throw new Exception($"ççå
¥åºåã{order.order_no}ãç©æç¼å·ã{item.goods_no}ãç©ææ¹æ¬¡ã{item.batch_num}ãçççæ°éæè¯¯"); |
| | | //æ¾ææåºå |
| | | List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo); |
| | | List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList(); |
| | | foreach (var inventoryInfo in inventoryInfos) |
| | | { |
| | | #region æ·»å ççå
¥åºä»»å¡ |
| | |
| | | SupplyQuantity = 0, |
| | | Remark = "ççå
¥åº" |
| | | }; |
| | | _supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | //_supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | supplyTask_Hties.Add(supplyTask_Hty); |
| | | } |
| | | #endregion |
| | | inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity; |
| | | inventoryInfo.SupplyQuantity = 0; |
| | | inventoryInfo.StockStatus = StockStatusEmun.å
¥åºå®æ.ObjToInt(); |
| | | } |
| | | infosUp.AddRange(inventoryInfos); |
| | | inventory_Batch.StockQuantity = inventory_Batch.SupplyQuantity; |
| | | inventory_Batch.SupplyQuantity = 0; |
| | | _inventoryInfoService.UpdateData(inventoryInfos); |
| | | _inventory_BatchServices.UpdateData(inventory_Batch); |
| | | batchesUp.Add(inventory_Batch); |
| | | //_inventoryInfoService.UpdateData(inventoryInfos); |
| | | //_inventory_BatchServices.UpdateData(inventory_Batch); |
| | | } |
| | | #endregion |
| | | |
| | |
| | | Status = 2, |
| | | }).ToList() |
| | | }; |
| | | Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.BeginTran(); |
| | | _supplyTaskHtyService.AddData(supplyTask_Hties); |
| | | _inventoryInfoService.UpdateData(infosUp); |
| | | _inventory_BatchServices.UpdateData(batchesUp); |
| | | BaseDal.Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | //Repository.AddData(entityOrder); |
| | | #endregion |
| | | } |
| | | #endregion |
| | | else |
| | | { |
| | | List<Dt_CabinOrder> cabinOrdersAdd = new List<Dt_CabinOrder>(); |
| | | string WareCodeLK = WarehouseEnum.ç«åº.ObjToInt().ToString("000"); |
| | | string WareCodeDJ = WarehouseEnum.大件åº.ObjToInt().ToString("000"); |
| | | |
| | | List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)); |
| | | List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)); |
| | | foreach (var item in order.details) |
| | | { |
| | | //æ¾åºåæ¹æ¬¡ä¿¡æ¯ |
| | | Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num); |
| | | Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First(); |
| | | var Qty = Math.Abs(inventory_Batch.StockQuantity - inventory_Batch.SupplyQuantity); |
| | | if (Qty != item.order_qty) throw new Exception($"ççå
¥åºåã{order.order_no}ãç©æç¼å·ã{item.goods_no}ãç©ææ¹æ¬¡ã{item.batch_num}ãçççæ°éæè¯¯"); |
| | | //æ¾ææåºå |
| | | List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo); |
| | | List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList(); |
| | | //è·åç«åºçç¹å·®å¼æ° |
| | | var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).First(); |
| | | var LkQty = Math.Abs(inventoryLK.StockQuantity - inventoryLK.SupplyQuantity); |
| | |
| | | SupplyQuantity = 0, |
| | | Remark = "ççå
¥åº" |
| | | }; |
| | | _supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | //_supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | supplyTask_Hties.Add(supplyTask_Hty); |
| | | } |
| | | #endregion |
| | | inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity; |
| | | inventoryInfo.SupplyQuantity = 0; |
| | | inventoryInfo.StockStatus = StockStatusEmun.å
¥åºå®æ.ObjToInt(); |
| | | } |
| | | _inventoryInfoService.UpdateData(inventoryInfos); |
| | | //_inventoryInfoService.UpdateData(inventoryInfos); |
| | | infosUp.AddRange(inventoryInfos); |
| | | inventory_Batch.StockQuantity = inventory_Batch.SupplyQuantity; |
| | | inventory_Batch.SupplyQuantity = 0; |
| | | _inventory_BatchServices.UpdateData(inventory_Batch); |
| | | //_inventory_BatchServices.UpdateData(inventory_Batch); |
| | | batchesUp.Add(inventory_Batch); |
| | | #endregion |
| | | |
| | | #region å建大件åºçç¹å |
| | |
| | | }).ToList() |
| | | }; |
| | | //Repository.AddData(entityOrder); |
| | | Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | |
| | | //Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | cabinOrdersAdd.Add(entityOrder); |
| | | #endregion |
| | | } |
| | | else |
| | |
| | | SupplyQuantity = 0, |
| | | Remark = "ççå
¥åº" |
| | | }; |
| | | _supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | //_supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | supplyTask_Hties.Add(supplyTask_Hty); |
| | | } |
| | | #endregion |
| | | inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity; |
| | | inventoryInfo.SupplyQuantity = 0; |
| | | inventoryInfo.StockStatus = StockStatusEmun.å
¥åºå®æ.ObjToInt(); |
| | | } |
| | | _inventoryInfoService.UpdateData(inventoryInfos); |
| | | //_inventoryInfoService.UpdateData(inventoryInfos); |
| | | infosUp.AddRange(inventoryInfos); |
| | | #endregion |
| | | |
| | | #region å建大件åºçç¹å |
| | |
| | | }).ToList() |
| | | }; |
| | | //Repository.AddData(cabinOrder); |
| | | Db.InsertNav(cabinOrder).Include(it => it.Details).ExecuteCommand(); |
| | | |
| | | //Db.InsertNav(cabinOrder).Include(it => it.Details).ExecuteCommand(); |
| | | cabinOrdersAdd.Add(cabinOrder); |
| | | } |
| | | #endregion |
| | | |
| | |
| | | }).ToList() |
| | | }; |
| | | //Repository.AddData(entityOrder); |
| | | Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | //Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | cabinOrdersAdd.Add(entityOrder); |
| | | #endregion |
| | | } |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | _supplyTaskHtyService.AddData(supplyTask_Hties); |
| | | _inventoryInfoService.UpdateData(infosUp); |
| | | _inventory_BatchServices.UpdateData(batchesUp); |
| | | BaseDal.Db.InsertNav(cabinOrdersAdd).Include(it => it.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | { |
| | | Dt_CabinOrder cabinOrder = BaseDal.QueryFirst(x => x.Id == key); |
| | | List<Dt_CabinOrder> cabinOrders = Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == cabinOrder.Order_no).Includes(x => x.Details).ToList();//æ¾åºææåºåºåå·ç¸åçåºåºå |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | List<Dt_CabinOrderDetail> cabinOrderDetails = new List<Dt_CabinOrderDetail>(); |
| | | foreach (var item in cabinOrders) |
| | | { |
| | | if (item.Details != null) |
| | | _cabinOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.äººå·¥å®æ); |
| | | if (item.Details != null) cabinOrderDetails.AddRange(cabinOrderDetails); |
| | | item.Modifier = App.User.UserName; |
| | | item.ModifyDate = DateTime.Now; |
| | | item.Details = null; |
| | | } |
| | | BaseDal.DeleteAndMoveIntoHty(cabinOrders, OperateTypeEnum.äººå·¥å®æ); |
| | | |
| | | if (cabinOrder.Order_type == InOrderTypeEnum.Allocat.ObjToInt().ToString()) |
| | | _unitOfWorkManage.CommitTran(); |
| | | { |
| | | _cabinOrderDetailServices.Repository.DeleteAndMoveIntoHty(cabinOrderDetails, OperateTypeEnum.äººå·¥å®æ); |
| | | BaseDal.DeleteAndMoveIntoHty(cabinOrders, OperateTypeEnum.äººå·¥å®æ); |
| | | } |
| | | else |
| | | { |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk"; |
| | |
| | | var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result); |
| | | if (response == null) throw new Exception("䏿¥ERPå
¥åºåå®æå¤±è´¥ï¼"); |
| | | if (response.resultCode != "0") throw new Exception(response.resultMsg); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | _cabinOrderDetailServices.Repository.DeleteAndMoveIntoHty(cabinOrderDetails, OperateTypeEnum.äººå·¥å®æ); |
| | | BaseDal.DeleteAndMoveIntoHty(cabinOrders, OperateTypeEnum.äººå·¥å®æ); |
| | | } |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | |
| | | WebResponseContent webResponseContent = new WebResponseContent(); |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | Dt_Tactics tactics = _tacticsService.Repository.QueryFirst(x => x.TacticeName == "åºåºçç¥"); |
| | | #region ç¹æ®åºæ¿åºåº |
| | | string WareCodeMJ = WarehouseEnum.麻精åº.ObjToInt().ToString("000"); |
| | |
| | | Status = 2, // padå¹³åºï¼æ é忥 |
| | | }).ToList() |
| | | }; |
| | | BaseDal.Db.CopyNew().InsertNav(entityOrder).Include(x => x.Details).ExecuteCommand(); |
| | | #endregion |
| | | #region å¤çåºåãåºåæ¹æ¬¡ãæ·»å åºåºä»»å¡ |
| | | List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>(); |
| | | List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>(); |
| | | List<Dt_InventoryInfo> inventoryInfosUp = new List<Dt_InventoryInfo>(); |
| | | var inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => entityOrder.Details.Select(e => e.Goods_no).Contains(x.MaterielCode)); |
| | | var InventoryInfos = _inventoryInfoService.Repository.QueryData(x => entityOrder.Details.Select(e => e.Goods_no).Contains(x.MaterielCode) && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt() && x.AvailableQuantity > 0 && x.WarehouseCode == outorder.warehouse_no); |
| | | foreach (var item in entityOrder.Details) |
| | | { |
| | | Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.MaterielCode == item.Goods_no && x.BatchNo == item.Batch_num); |
| | | Dt_Inventory_Batch? inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.Goods_no && x.BatchNo == item.Batch_num).FirstOrDefault(); |
| | | if (inventory_Batch == null) throw new Exception($"æªæ¾å°åºåºåå·ã{entityOrder.Out_no}ãä¸ç©æç¼å·ã{item.Goods_no}ãç©ææ¹æ¬¡ã{item.Batch_num}ãçåºåæ¹æ¬¡ä¿¡æ¯"); |
| | | if (inventory_Batch.AvailableQuantity < item.Order_qty) throw new Exception($"åºåºåå·ã{entityOrder.Out_no}ãä¸ç©æç¼å·ã{item.Goods_no}ãç©ææ¹æ¬¡ã{item.Batch_num}ãçåºåæ¹æ¬¡ä¿¡æ¯å¯ç¨æ°éä¸è¶³"); |
| | | inventory_Batch.AvailableQuantity -= item.Order_qty; |
| | | inventory_Batch.OutboundQuantity += item.Order_qty; |
| | | List<Dt_InventoryInfo> dt_InventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == item.Goods_no && x.BatchNo == item.Batch_num && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt() && x.AvailableQuantity > 0 && x.WarehouseCode == item.Reservoirarea); |
| | | if (dt_InventoryInfos.Count < 1) throw new Exception($"åºåºåå·ã{entityOrder.Out_no}ãä¸ç©æç¼å·ã{item.Goods_no}ãç©ææ¹æ¬¡ã{item.Batch_num}ãçåºåå½åç¶æä¸å¯åºåº"); |
| | | List<Dt_InventoryInfo> dt_InventoryInfos = InventoryInfos.Where(x => x.MaterielCode == item.Goods_no && x.BatchNo == item.Batch_num).ToList(); |
| | | if (dt_InventoryInfos.Count < 1) throw new Exception($"åºåºåå·ã{entityOrder.Out_no}ãä¸ç©æç¼å·ã{item.Goods_no}ãç©ææ¹æ¬¡ã{item.Batch_num}ãçå¯ç¨åºåä¸è¶³"); |
| | | #region æåºåºçç¥æ¥æ¾åºå |
| | | if (tactics.SelectTactice == TacticsEnum.ComeOutonFirstTime.ObjToInt()) |
| | | dt_InventoryInfos = dt_InventoryInfos.OrderBy(x => x.ValidityPeriod).ToList(); |
| | |
| | | supplyTasks.Add(supplyTask); |
| | | Order_qty = 0; |
| | | } |
| | | inventoryInfosUp.Add(InventoryInfo); |
| | | } |
| | | _inventory_BatchServices.Repository.UpdateData(inventory_Batch); |
| | | _inventoryInfoService.Repository.UpdateData(dt_InventoryInfos); |
| | | batchesUp.Add(inventory_Batch); |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | _supplyTaskService.AddData(supplyTasks); |
| | | _inventory_BatchServices.UpdateData(batchesUp); |
| | | _inventoryInfoService.UpdateData(inventoryInfosUp); |
| | | BaseDal.Db.CopyNew().InsertNav(entityOrder).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | #endregion |
| | | } |
| | | #endregion |
| | |
| | | }; |
| | | #endregion |
| | | #region æ¥æ¾åºå |
| | | List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>(); |
| | | List<Dt_InventoryInfo> inventoryInfosUp = new List<Dt_InventoryInfo>(); |
| | | List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>(); |
| | | List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode)); |
| | | var inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode)); |
| | | var InventoryInfos = _inventoryInfoService.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode) && x.StockStatus == StockStatusEmun.å
¥åºå®æ.ObjToInt() && x.AvailableQuantity > 0 && (x.WarehouseCode == WareCodeDJ || x.WarehouseCode == WareCodeLK)); |
| | | foreach (var detail in outorder.details) |
| | | { |
| | | #region æ¥è¯¢åºåæ¹æ¬¡ååºå |
| | | Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.MaterielCode == detail.goods_no && x.BatchNo == detail.batch_num); |
| | | Dt_Inventory_Batch? inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == detail.goods_no && x.BatchNo == detail.batch_num).FirstOrDefault(); |
| | | if (inventory_Batch == null) throw new Exception($"æªæ¾å°åºåºåå·ã{outorder.order_no}ãä¸ç©æç¼å·ã{detail.goods_no}ãç©ææ¹æ¬¡ã{detail.batch_num}ãçåºåæ¹æ¬¡ä¿¡æ¯"); |
| | | if (inventory_Batch.AvailableQuantity < detail.order_qty) throw new Exception($"åºåºåå·ã{outorder.order_no}ãä¸ç©æç¼å·ã{detail.goods_no}ãç©ææ¹æ¬¡ã{detail.batch_num}ãçåºåæ¹æ¬¡ä¿¡æ¯å¯ç¨æ°éä¸è¶³"); |
| | | inventory_Batch.AvailableQuantity -= detail.order_qty; |
| | | inventory_Batch.OutboundQuantity += detail.order_qty; |
| | | List<Dt_InventoryInfo> dt_InventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo && x.AvailableQuantity > 0 && (x.WarehouseCode == WareCodeDJ || x.WarehouseCode == WareCodeLK)); |
| | | if (dt_InventoryInfos.Count < 1) throw new Exception($"åºåºåå·ã{outorder.order_no}ãä¸ç©æç¼å·ã{detail.goods_no}ãç©ææ¹æ¬¡ã{detail.batch_num}ãçåºåå½åç¶æä¸å¯åºåº"); |
| | | List<Dt_InventoryInfo> dt_InventoryInfos = InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList(); |
| | | if (dt_InventoryInfos.Count < 1) throw new Exception($"åºåºåå·ã{outorder.order_no}ãä¸ç©æç¼å·ã{detail.goods_no}ãç©ææ¹æ¬¡ã{detail.batch_num}ãçå¯ç¨åºåä¸è¶³"); |
| | | #endregion |
| | | #region æåºåºçç¥æ¥æ¾åºå |
| | | if (tactics.SelectTactice == TacticsEnum.ComeOutonFirstTime.ObjToInt()) |
| | |
| | | #endregion |
| | | var Order_qty = Math.Abs(detail.order_qty);//åºåºåæ°é |
| | | #region æ ¹æ®ç©æç¼ç æ¥è¯¢ç©æä¿¡æ¯ |
| | | Dt_MaterielInfo materielInfo = _materielInfoService.Repository.QueryFirst(x => x.MaterielCode == detail.goods_no); |
| | | Dt_MaterielInfo? materielInfo = materielInfos.Where(x => x.MaterielCode == detail.goods_no).FirstOrDefault(); |
| | | if (materielInfo == null) throw new Exception($"æªæ¾å°è¯åç¼ç ã{detail.goods_no}ãçä¿¡æ¯"); |
| | | if (!Enum.IsDefined(typeof(MaterielSourceTypeEnum), materielInfo.MaterielSourceType)) |
| | | throw new Exception($"请设置è¯åç¼å·ã{detail.goods_no}ãç屿§åç±»"); |
| | |
| | | entityOrder.Details.Add(orderDetail); |
| | | #endregion |
| | | |
| | | List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>(); |
| | | #region 计ç®åºåãæ·»å åºåºä»»å¡ |
| | | foreach (var InventoryInfo in dt_InventoryInfos) |
| | | { |
| | |
| | | } |
| | | } |
| | | #endregion |
| | | _inventory_BatchServices.Repository.UpdateData(inventory_Batch); |
| | | _inventoryInfoService.Repository.UpdateData(dt_InventoryInfos); |
| | | _supplyTaskService.AddData(supplyTasks); |
| | | inventoryInfosUp.AddRange(dt_InventoryInfos); |
| | | batchesUp.Add(inventory_Batch); |
| | | //_inventory_BatchServices.Repository.UpdateData(inventory_Batch); |
| | | //_inventoryInfoService.Repository.UpdateData(dt_InventoryInfos); |
| | | //_supplyTaskService.AddData(supplyTasks); |
| | | } |
| | | #endregion |
| | | else |
| | | { |
| | | if (materielInfo.BoxQty < 1) throw new Exception($"请设置è¯åç¼å·ã{detail.goods_no}ãçç®±è§æ°é"); |
| | | List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>(); |
| | | Dt_DeliveryOrderDetail orderDetail = null; |
| | | Dt_DeliveryOrderDetail orderDetailLK = null; |
| | | var ys = Order_qty % materielInfo.BoxQty; //ä¸è½æ´é¤ç®±è§çæ£ä»¶æ° |
| | |
| | | Remark = "åºåº" |
| | | }; |
| | | supplyTasks.Add(supplyTask); |
| | | _inventoryInfoService.Repository.UpdateData(item); |
| | | inventoryInfosUp.Add(item); |
| | | //_inventoryInfoService.Repository.UpdateData(item); |
| | | } |
| | | #endregion |
| | | |
| | |
| | | }; |
| | | supplyTasks.Add(supplyTask); |
| | | #endregion |
| | | _inventoryInfoService.Repository.UpdateData(inventoryInfo); |
| | | //_inventoryInfoService.Repository.UpdateData(inventoryInfo); |
| | | inventoryInfosUp.Add(inventoryInfo); |
| | | entityOrderLK.Details.Add(orderDetailLK); |
| | | } |
| | | #endregion |
| | | if (orderDetail != null) entityOrder.Details.Add(orderDetail); |
| | | _inventory_BatchServices.Repository.UpdateData(inventory_Batch); |
| | | _supplyTaskService.AddData(supplyTasks); |
| | | batchesUp.Add(inventory_Batch); |
| | | //_inventory_BatchServices.Repository.UpdateData(inventory_Batch); |
| | | //_supplyTaskService.AddData(supplyTasks); |
| | | } |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | _supplyTaskService.AddData(supplyTasks); |
| | | _inventory_BatchServices.UpdateData(batchesUp); |
| | | _inventoryInfoService.UpdateData(inventoryInfosUp); |
| | | if (entityOrder.Details.Count > 0) |
| | | BaseDal.Db.CopyNew().InsertNav(entityOrder).Include(x => x.Details).ExecuteCommand(); |
| | | if (entityOrderLK.Details.Count > 0) |
| | | BaseDal.Db.CopyNew().InsertNav(entityOrderLK).Include(x => x.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | #endregion |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | webResponseContent.OK(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | _unitOfWorkManage.BeginTran(); |
| | | string WareCodeMJ = WarehouseEnum.麻精åº.ObjToInt().ToString("000"); |
| | | string WareCodeLD = WarehouseEnum.å·å»åº.ObjToInt().ToString("000"); |
| | | List<Dt_SupplyTask_Hty> supplyTask_Hties = new List<Dt_SupplyTask_Hty>(); |
| | | List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>(); |
| | | List<Dt_InventoryInfo> infosUp = new List<Dt_InventoryInfo>(); |
| | | var codes = order.details.Select(x => x.goods_no).ToList(); |
| | | #region ç¹æ®åºæ¿ |
| | | if (order.warehouse_no == WareCodeMJ || order.warehouse_no == WareCodeLD) |
| | | { |
| | | List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)); |
| | | List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)); |
| | | #region åºåãåºåæ¹æ¬¡å¹³è´¦ |
| | | foreach (var item in order.details) |
| | | { |
| | | //æ¾åºåæ¹æ¬¡ä¿¡æ¯ |
| | | Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num); |
| | | Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First(); |
| | | var Qty = Math.Abs(inventory_Batch.StockQuantity - inventory_Batch.SupplyQuantity); |
| | | if (Qty != item.order_qty) throw new Exception($"çäºåºåºåã{order.order_no}ãç©æç¼å·ã{item.goods_no}ãç©ææ¹æ¬¡ã{item.batch_num}ãççäºæ°éæè¯¯"); |
| | | //æ¾ææåºå |
| | | List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo); |
| | | List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList(); |
| | | foreach (var inventoryInfo in inventoryInfos) |
| | | { |
| | | #region æ·»å çäºåºåºä»»å¡ |
| | |
| | | SupplyQuantity = 0, |
| | | Remark = "çäºå
¥åº" |
| | | }; |
| | | _supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | //_supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | supplyTask_Hties.Add(supplyTask_Hty); |
| | | } |
| | | #endregion |
| | | inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity; |
| | |
| | | } |
| | | inventory_Batch.StockQuantity = inventory_Batch.SupplyQuantity; |
| | | inventory_Batch.SupplyQuantity = 0; |
| | | _inventoryInfoService.UpdateData(inventoryInfos); |
| | | _inventory_BatchServices.UpdateData(inventory_Batch); |
| | | infosUp.AddRange(inventoryInfos); |
| | | batchesUp.Add(inventory_Batch); |
| | | //_inventoryInfoService.UpdateData(inventoryInfos); |
| | | //_inventory_BatchServices.UpdateData(inventory_Batch); |
| | | } |
| | | #endregion |
| | | |
| | |
| | | Status = 2, |
| | | }).ToList() |
| | | }; |
| | | Repository.AddData(entityOrder); |
| | | _unitOfWorkManage.BeginTran(); |
| | | _supplyTaskHtyService.AddData(supplyTask_Hties); |
| | | _inventoryInfoService.UpdateData(infosUp); |
| | | _inventory_BatchServices.UpdateData(batchesUp); |
| | | BaseDal.Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | #endregion |
| | | } |
| | | #endregion |
| | | else |
| | | { |
| | | List<Dt_DeliveryOrder> deliveryOrdersAdd = new List<Dt_DeliveryOrder>(); |
| | | string WareCodeLK = WarehouseEnum.ç«åº.ObjToInt().ToString("000"); |
| | | string WareCodeDJ = WarehouseEnum.大件åº.ObjToInt().ToString("000"); |
| | | |
| | | List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)); |
| | | List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)); |
| | | foreach (var item in order.details) |
| | | { |
| | | //æ¾åºåæ¹æ¬¡ä¿¡æ¯ |
| | | Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num); |
| | | Dt_Inventory_Batch inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.goods_no && x.BatchNo == item.batch_num).First(); |
| | | var Qty = Math.Abs(inventory_Batch.StockQuantity - inventory_Batch.SupplyQuantity); |
| | | if (Qty != item.order_qty) throw new Exception($"ççå
¥åºåã{order.order_no}ãç©æç¼å·ã{item.goods_no}ãç©ææ¹æ¬¡ã{item.batch_num}ãçççæ°éæè¯¯"); |
| | | if (Qty != item.order_qty) throw new Exception($"çäºåºåºåã{order.order_no}ãç©æç¼å·ã{item.goods_no}ãç©ææ¹æ¬¡ã{item.batch_num}ãççäºæ°éæè¯¯"); |
| | | //æ¾ææåºå |
| | | List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo); |
| | | List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList(); |
| | | //è·åç«åºçç¹å·®å¼æ°.ãããããããããããã |
| | | var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).First(); |
| | | var LkQty = Math.Abs(inventoryLK.StockQuantity - inventoryLK.SupplyQuantity); |
| | |
| | | SupplyQuantity = 0, |
| | | Remark = "çäºå
¥åº" |
| | | }; |
| | | _supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | //_supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | supplyTask_Hties.Add(supplyTask_Hty); |
| | | } |
| | | #endregion |
| | | inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity; |
| | | inventoryInfo.SupplyQuantity = 0; |
| | | inventoryInfo.StockStatus = StockStatusEmun.å
¥åºå®æ.ObjToInt(); |
| | | } |
| | | _inventoryInfoService.UpdateData(inventoryInfos); |
| | | //_inventoryInfoService.UpdateData(inventoryInfos); |
| | | inventory_Batch.StockQuantity = inventory_Batch.SupplyQuantity; |
| | | inventory_Batch.SupplyQuantity = 0; |
| | | _inventory_BatchServices.UpdateData(inventory_Batch); |
| | | //_inventory_BatchServices.UpdateData(inventory_Batch); |
| | | infosUp.AddRange(inventoryInfos); |
| | | batchesUp.Add(inventory_Batch); |
| | | #endregion |
| | | |
| | | #region å建大件åºçç¹å |
| | |
| | | Status = 2, |
| | | }).ToList() |
| | | }; |
| | | Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | //Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | //Repository.AddData(entityOrder); |
| | | deliveryOrdersAdd.Add(entityOrder); |
| | | #endregion |
| | | } |
| | | else |
| | |
| | | SupplyQuantity = 0, |
| | | Remark = "çäºåºåº" |
| | | }; |
| | | _supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | //_supplyTaskHtyService.AddData(supplyTask_Hty); |
| | | supplyTask_Hties.Add(supplyTask_Hty); |
| | | } |
| | | #endregion |
| | | inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity; |
| | | inventoryInfo.SupplyQuantity = 0; |
| | | inventoryInfo.StockStatus = StockStatusEmun.å
¥åºå®æ.ObjToInt(); |
| | | } |
| | | _inventoryInfoService.UpdateData(inventoryInfos); |
| | | //_inventoryInfoService.UpdateData(inventoryInfos); |
| | | infosUp.AddRange(inventoryInfos); |
| | | #endregion |
| | | |
| | | #region å建大件åºçç¹å |
| | |
| | | }).ToList() |
| | | }; |
| | | //Repository.AddData(cabinOrder); |
| | | Db.InsertNav(cabinOrder).Include(it => it.Details).ExecuteCommand(); |
| | | //Db.InsertNav(cabinOrder).Include(it => it.Details).ExecuteCommand(); |
| | | deliveryOrdersAdd.Add(cabinOrder); |
| | | } |
| | | #endregion |
| | | |
| | |
| | | Status = 0, |
| | | }).ToList() |
| | | }; |
| | | Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | //Db.InsertNav(entityOrder).Include(it => it.Details).ExecuteCommand(); |
| | | //Repository.AddData(entityOrder); |
| | | deliveryOrdersAdd.Add(entityOrder); |
| | | #endregion |
| | | } |
| | | //return WebResponseContent.Instance.OK("æå"); |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | _supplyTaskHtyService.AddData(supplyTask_Hties); |
| | | _inventoryInfoService.UpdateData(infosUp); |
| | | _inventory_BatchServices.UpdateData(batchesUp); |
| | | BaseDal.Db.InsertNav(deliveryOrdersAdd).Include(it => it.Details).ExecuteCommand(); |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | return WebResponseContent.Instance.OK("æå"); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | Dt_SupplyTask supplyTask = _supplyTaskService.Repository.QueryFirst(x => x.TaskId == TaskId && x.TaskStatus == SupplyStatusEnum.NewOut.ObjToInt()); |
| | | if (supplyTask == null) throw new Exception("å½ååºåºä»»å¡å·²å®æ"); |
| | | if (supplyTask.LocationCode != LocationCode) throw new Exception($"å½ååºåºè´§ä½ã{LocationCode}ãä¸ä»»å¡åé
è´§ä½ä¸å¹é
"); |
| | | content = OutTaskFinish(supplyTask); |
| | | Dt_DeliveryOrder deliveryOrder = BaseDal.Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == supplyTask.OrderNo && x.Warehouse_no == supplyTask.WarehouseCode).Includes(x => x.Details).First(); |
| | | if (deliveryOrder == null) return WebResponseContent.Instance.OK($"åºåºå已宿"); |
| | | content = OutTaskFinish(supplyTask, deliveryOrder); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | } |
| | | return content; |
| | | } |
| | | public WebResponseContent OutTaskFinish(Dt_SupplyTask supplyTask, Dt_DeliveryOrder deliveryOrder) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_DeliveryOrderDetail? cabinOrderDetail = deliveryOrder.Details.FirstOrDefault(x => x.Batch_num == supplyTask.BatchNo && x.Goods_no == supplyTask.MaterielCode); |
| | | if (cabinOrderDetail == null) throw new Exception($"åºåºåæç»æªæ¾å°"); |
| | | Dt_MaterielInfo materielInfo = _materielInfoService.Repository.QueryFirst(x => x.MaterielCode == supplyTask.MaterielCode); |
| | | if (materielInfo == null) throw new Exception($"请维æ¤ç©æç¼å·ã{supplyTask.MaterielCode}ãçç©æä¿¡æ¯"); |
| | | cabinOrderDetail.Order_Outqty += supplyTask.StockQuantity; |
| | | if (cabinOrderDetail.Order_Outqty > cabinOrderDetail.Order_qty) throw new Exception($"åºåºæ°éä¸å¯è¶
åºåæ®æ°é"); |
| | | deliveryOrder.OutStatus = "å¼å§"; |
| | | cabinOrderDetail.OotDetailStatus = "å¼å§"; |
| | | if (cabinOrderDetail.Order_Outqty == cabinOrderDetail.Order_qty) cabinOrderDetail.OotDetailStatus = "已宿"; |
| | | |
| | | #region åºå |
| | | Dt_InventoryInfo inventoryInfo = _inventoryInfoService.Repository.QueryFirst(x => x.BatchNo == cabinOrderDetail.Batch_num && x.MaterielCode == cabinOrderDetail.Goods_no && x.LocationCode == supplyTask.LocationCode); |
| | | if (inventoryInfo == null) throw new Exception($"æªæ¾å°è´§ä½ã{supplyTask.LocationCode}ãçåºåä¿¡æ¯"); |
| | | inventoryInfo.StockQuantity -= supplyTask.StockQuantity; |
| | | inventoryInfo.OutboundQuantity -= supplyTask.StockQuantity; |
| | | #endregion |
| | | Dt_LocationInfo location = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == supplyTask.LocationCode); |
| | | #region è´§ä½ |
| | | if (supplyTask.WarehouseCode != WarehouseEnum.ç«åº.ObjToInt().ToString("000")) |
| | | { |
| | | if (location == null) |
| | | return WebResponseContent.Instance.Error($"请维æ¤è´§ä½ç¼å·ã{supplyTask.LocationCode}ãçè´§ä½ä¿¡æ¯"); |
| | | Dt_InventoryInfo inventoryInfo1 = _inventoryInfoService.Repository.QueryFirst(x => x.LocationCode == supplyTask.LocationCode); |
| | | if (inventoryInfo1 == null) location.LocationStatus = LocationStatusEnum.Free.ObjToInt(); |
| | | } |
| | | #endregion |
| | | |
| | | #region åºåæ¹æ¬¡ 妿任å¡ç±»åæ¯è°æ¨åºåºä»»å¡ï¼8ï¼å°±ä¸ä¿®æ¹æ¹æ¬¡åºå |
| | | Dt_Inventory_Batch inventory_Batch = _inventory_BatchServices.Repository.QueryFirst(x => x.BatchNo == inventoryInfo.BatchNo && x.MaterielCode == |
| | | inventoryInfo.MaterielCode); |
| | | if (supplyTask.TaskType != TaskTypeEnum.AllocatOut.ObjToInt()) |
| | | { |
| | | inventory_Batch.StockQuantity -= supplyTask.StockQuantity; |
| | | inventory_Batch.OutboundQuantity -= supplyTask.StockQuantity; |
| | | } |
| | | #endregion |
| | | if (supplyTask.WarehouseCode == WarehouseEnum.ç«åº.ObjToInt().ToString("000")) |
| | | { |
| | | materielInfo.Business_qty -= supplyTask.StockQuantity; |
| | | if (materielInfo.Business_qty < materielInfo.MinQty) |
| | | CreateAllocatInOut(materielInfo);//åå»ºè°æ¨ä»»å¡ |
| | | } |
| | | supplyTask.TaskStatus = SupplyStatusEnum.OutFinish.ObjToInt(); |
| | | |
| | | _unitOfWorkManage.BeginTran(); |
| | | if (inventory_Batch.StockQuantity <= 0) |
| | | _inventory_BatchServices.DeleteData(inventory_Batch); |
| | | else |
| | | _inventory_BatchServices.UpdateData(inventory_Batch); |
| | | _materielInfoService.UpdateData(materielInfo); |
| | | if (inventoryInfo.StockQuantity <= 0) |
| | | _inventoryInfoService.DeleteData(inventoryInfo); |
| | | else |
| | | _inventoryInfoService.UpdateData(inventoryInfo); |
| | | if (location != null) _locationInfoService.UpdateData(location); |
| | | _deliveryOrderDetailServices.UpdateData(cabinOrderDetail); |
| | | _supplyTaskService.Repository.DeleteAndMoveIntoHty(supplyTask, OperateTypeEnum.äººå·¥å®æ); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | #region å¤æè¯¦æ
æ¯å¦å
¨é¨å®æ |
| | | if (!_deliveryOrderDetailServices.Repository.QueryData(x => x.DeliveryOrderId == deliveryOrder.Id && x.OotDetailStatus != "已宿").Any()) |
| | | deliveryOrder.OutStatus = "已宿"; |
| | | BaseDal.UpdateData(deliveryOrder); |
| | | #endregion |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | public WebResponseContent OutTaskFinish(Dt_SupplyTask supplyTask) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | Dt_DeliveryOrder? cabinOrder = BaseDal.Db.CopyNew().Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == supplyTask.OrderNo && x.Warehouse_no == supplyTask.WarehouseCode).Includes(x => x.Details).First(); |
| | | if (cabinOrder == null) return WebResponseContent.Instance.Error($"åºåºå已宿"); |
| | | if (cabinOrder == null) return WebResponseContent.Instance.OK($"åºåºå已宿"); |
| | | |
| | | Dt_DeliveryOrderDetail? cabinOrderDetail = cabinOrder.Details.Where(x => x.Batch_num == supplyTask.BatchNo && x.Reservoirarea == supplyTask.WarehouseCode && x.Goods_no == supplyTask.MaterielCode).FirstOrDefault(); |
| | | if (cabinOrderDetail == null) return WebResponseContent.Instance.Error($"åºåºåæç»å·²å®æ"); |
| | | if (cabinOrderDetail == null) return WebResponseContent.Instance.Error($"åºåºåæç»æªæ¾å°"); |
| | | Dt_MaterielInfo materielInfo = _materielInfoService.Repository.QueryFirst(x => x.MaterielCode == cabinOrderDetail.Goods_no); |
| | | if (materielInfo == null) return WebResponseContent.Instance.Error($"请维æ¤ç©æç¼å·ã{cabinOrderDetail.Goods_no}ãçç©æä¿¡æ¯"); |
| | | cabinOrderDetail.Order_Outqty += supplyTask.StockQuantity; |
| | |
| | | |
| | | |
| | | #region å¤çåºåºåï¼è´§ä½ï¼åºåï¼åºåæ¹æ¬¡ä¿¡æ¯,åºåºä»»å¡ |
| | | _unitOfWorkManage.BeginTran(); |
| | | //_unitOfWorkManage.BeginTran(); |
| | | |
| | | #region åºåºå |
| | | cabinOrder.OutStatus = "å¼å§"; |
| | |
| | | if (materielInfo.Business_qty < materielInfo.MinQty) |
| | | CreateAllocatInOut(materielInfo);//åå»ºè°æ¨ä»»å¡ |
| | | } |
| | | _unitOfWorkManage.CommitTran(); |
| | | //_unitOfWorkManage.CommitTran(); |
| | | #endregion |
| | | content.OK(); |
| | | } |
| | |
| | | { |
| | | Dt_DeliveryOrder deliveryOrder = BaseDal.QueryFirst(x => x.Id == key); |
| | | List<Dt_DeliveryOrder> deliveryOrders = Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == deliveryOrder.Out_no).Includes(x => x.Details).ToList();//æ¾åºææåºåºåå·ç¸åçåºåºå |
| | | _unitOfWorkManage.BeginTran(); |
| | | |
| | | List<Dt_DeliveryOrderDetail> deliveryOrderDetails = new List<Dt_DeliveryOrderDetail>(); |
| | | foreach (var item in deliveryOrders) |
| | | { |
| | | if (item.Details != null) |
| | | _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(item.Details, OperateTypeEnum.äººå·¥å®æ); |
| | | if (item.Details != null) deliveryOrderDetails.AddRange(item.Details); |
| | | item.Modifier = App.User.UserName; |
| | | item.ModifyDate = DateTime.Now; |
| | | item.Details = null; |
| | | } |
| | | BaseDal.DeleteAndMoveIntoHty(deliveryOrders, OperateTypeEnum.äººå·¥å®æ); |
| | | if (deliveryOrder.Out_type == OutOrderTypeEnum.Allocate.ObjToInt().ToString()) |
| | | _unitOfWorkManage.CommitTran(); |
| | | { |
| | | _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(deliveryOrderDetails, OperateTypeEnum.äººå·¥å®æ); |
| | | BaseDal.DeleteAndMoveIntoHty(deliveryOrders, OperateTypeEnum.äººå·¥å®æ); |
| | | } |
| | | else |
| | | { |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/outOrderOk"; |
| | | |
| | | var requestDate = new |
| | | { |
| | | order_no = deliveryOrder.Out_no |
| | |
| | | var response = JsonConvert.DeserializeObject<UpstreamOrderResponse>(result); |
| | | if (response == null) throw new Exception("䏿¥ERPåºåºåå®æå¤±è´¥ï¼"); |
| | | if (response.resultCode != "0") throw new Exception(response.resultMsg); |
| | | _unitOfWorkManage.CommitTran(); |
| | | _deliveryOrderDetailServices.Repository.DeleteAndMoveIntoHty(deliveryOrderDetails, OperateTypeEnum.äººå·¥å®æ); |
| | | BaseDal.DeleteAndMoveIntoHty(deliveryOrders, OperateTypeEnum.äººå·¥å®æ); |
| | | } |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | |
| | | { |
| | | public class InventoryServices : ServiceBase<Dt_Inventory, IRepository<Dt_Inventory>>, IInventoryServices |
| | | { |
| | | private readonly ICabinOrderServices _cabinOrderServices; |
| | | private readonly IDeliveryOrderServices _deliveryOrderServices; |
| | | public InventoryServices(IRepository<Dt_Inventory> BaseDal, IDeliveryOrderServices deliveryOrderServices) : base(BaseDal) |
| | | private readonly ISupplyTaskService _supplyTaskService; |
| | | public InventoryServices(IRepository<Dt_Inventory> BaseDal, ICabinOrderServices cabinOrderServices, IDeliveryOrderServices deliveryOrderServices, ISupplyTaskService supplyTaskService) : base(BaseDal) |
| | | { |
| | | _cabinOrderServices = cabinOrderServices; |
| | | _deliveryOrderServices = deliveryOrderServices; |
| | | _supplyTaskService = supplyTaskService; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// è·å䏿¸¸åºåä¿¡æ¯ |
| | |
| | | } |
| | | |
| | | |
| | | public ApiResponse<Dt_InventoryInfo> OrderFeedback(EdiOrderCallbackRequest request) |
| | | { |
| | | try |
| | | { |
| | | if (request == null || request.details == null || request.details.Count < 1) throw new Exception("请æ±åæ°æ æ"); |
| | | var Warecode = WarehouseEnum.ç«åº.ObjToInt().ToString("000"); |
| | | switch (request.orderType) |
| | | { |
| | | case "1": //å
¥åº |
| | | { |
| | | Dt_CabinOrder cabinOrder = _cabinOrderServices.Db.Queryable<Dt_CabinOrder>().Where(x => x.Order_no == request.externalOrderNo && x.Warehouse_no == Warecode).Includes(x => x.Details).First(); |
| | | if (cabinOrder == null) throw new Exception($"æªæ¾å°å
¥åºåå·ã{request.externalOrderNo}ãçå
¥åºåä¿¡æ¯"); |
| | | if (cabinOrder.OdrderStatus == "已宿") |
| | | return new ApiResponse<Dt_InventoryInfo> { code = "0", msg = $"æå" }; |
| | | WebResponseContent content = _cabinOrderServices.CompleteLKInOrder(cabinOrder, request); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | } |
| | | break; |
| | | case "2": |
| | | { |
| | | Dt_DeliveryOrder deliveryOrder = _deliveryOrderServices.Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == request.externalOrderNo && x.Warehouse_no == Warecode).Includes(x => x.Details).First(); |
| | | if (deliveryOrder == null) throw new Exception($"æªæ¾å°åºåºåå·ã{request.externalOrderNo}ãçåºåºåä¿¡æ¯"); |
| | | if (deliveryOrder.OutStatus == "已宿") |
| | | return new ApiResponse<Dt_InventoryInfo> { code = "0", msg = $"æå" }; |
| | | WebResponseContent content = _deliveryOrderServices.CompleteLKOutOrder(deliveryOrder, request); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | } |
| | | break; |
| | | case "3": |
| | | { |
| | | #region æ¾çç¹ä»»å¡ |
| | | List<Dt_SupplyTask> supplyTasks = _supplyTaskService.Repository.QueryData(x => x.OrderNo == request.externalOrderNo && x.WarehouseCode == Warecode && x.TaskStatus == SupplyStatusEnum.NewCheck.ObjToInt()); |
| | | foreach (var detail in request.details) |
| | | { |
| | | Dt_SupplyTask? supplyTask = supplyTasks.Where(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo).FirstOrDefault(); |
| | | if (supplyTask == null) throw new Exception($"æªæ¾å°è®¢åå·ã{request.externalOrderNo}ãç©æç¼å·ã{detail.productCode}ãççç¹ä»»å¡"); |
| | | if (detail.isLossOrProfit == 1) // çäº |
| | | { |
| | | supplyTask.SupplyQuantity = supplyTask.StockQuantity - detail.ea; |
| | | } |
| | | else if (detail.isLossOrProfit == 2) // çç |
| | | { |
| | | supplyTask.SupplyQuantity = supplyTask.StockQuantity + detail.ea; |
| | | } |
| | | else // çä¸ |
| | | { |
| | | supplyTask.SupplyQuantity = supplyTask.StockQuantity; |
| | | } |
| | | var content = _deliveryOrderServices.CheckTaskFinish(supplyTask); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | } |
| | | #endregion |
| | | } |
| | | break; |
| | | default: |
| | | throw new Exception($"æªå®ä¹çç±»åã{request.orderType}ã"); |
| | | } |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | | code = "0", |
| | | msg = $"æå" |
| | | }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | | code = "500", |
| | | msg = $"å¤ç失败: {ex.Message}" |
| | | }; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// wcsåä¼ ç»æè°ç¨æçæ¹æ³ ä¸ç®¡æ¯å
¥åº åºåº çç¹é½ä¼è°ç¨è¿ä¸ªæ¥å£ |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <returns></returns> |
| | | public ApiResponse<Dt_InventoryInfo> OrderFeedback(EdiOrderCallbackRequest request) |
| | | public ApiResponse<Dt_InventoryInfo> OrderFeedback1(EdiOrderCallbackRequest request) |
| | | { |
| | | try |
| | | { |
| | |
| | | } |
| | | var reslut = WarehouseEnum.ç«åº.ObjToInt().ToString("000"); |
| | | // 2ï¸â£ å¼å¯äºå¡ |
| | | BaseDal.Db.Ado.BeginTran(); |
| | | //BaseDal.Db.Ado.BeginTran(); |
| | | foreach (var detail in request.details) |
| | | { |
| | | #region æ¥è¯¢ç©æä¿¡æ¯ãè®¡ç®æ»å |
| | |
| | | case "2": |
| | | { |
| | | Dt_DeliveryOrder cabinOrder = Db.Queryable<Dt_DeliveryOrder>().Where(x => x.Out_no == request.externalOrderNo && x.Warehouse_no == reslut).Includes(x => x.Details).First(); |
| | | if (cabinOrder == null) throw new Exception($"æªæ¾å°åºåºåå·ã{request.externalOrderNo}ãçå
¥åºåä¿¡æ¯"); |
| | | if (cabinOrder == null) throw new Exception($"æªæ¾å°åºåºåå·ã{request.externalOrderNo}ãçåºåºåä¿¡æ¯"); |
| | | |
| | | if (cabinOrder.Out_type == "6") |
| | | { |
| | |
| | | } |
| | | |
| | | // 9ï¸â£ æäº¤äºå¡ |
| | | BaseDal.Db.Ado.CommitTran(); |
| | | //BaseDal.Db.Ado.CommitTran(); |
| | | |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | |
| | | catch (Exception ex) |
| | | { |
| | | // ð åæ»äºå¡ |
| | | BaseDal.Db.Ado.RollbackTran(); |
| | | //BaseDal.Db.Ado.RollbackTran(); |
| | | |
| | | return new ApiResponse<Dt_InventoryInfo> |
| | | { |
| | | code = "500", |
| | | msg = $"å¤ç失败: {ex.Message}" |
| | | }; |
| | | |
| | | //Console.WriteLine(ex.Message); |
| | | } |
| | | } |
| | | |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_Model.Models; |
| | | using static WIDESEA_DTO.SquareCabin.OrderDto; |
| | | using static WIDESEA_DTO.SquareCabin.TowcsDto; |
| | | |
| | | namespace WIDESEA_SquareCabinServices |
| | | { |
| | | public partial class CabinOrderServices |
| | | { |
| | | /// <summary> |
| | | /// ç«åºå
¥åºä»»å¡å®æ |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent CompleteLKInOrder(Dt_CabinOrder cabinOrder, EdiOrderCallbackRequest request) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_CabinOrderDetail> cabinOrderDetailsUp = new List<Dt_CabinOrderDetail>(); |
| | | List<Dt_SupplyTask_Hty> supplyTask_Hties = new List<Dt_SupplyTask_Hty>(); |
| | | List<Dt_InventoryInfo> infosUp = new List<Dt_InventoryInfo>(); |
| | | List<Dt_InventoryInfo> infosAdd = new List<Dt_InventoryInfo>(); |
| | | List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>(); |
| | | List<Dt_Inventory_Batch> batchesAdd = new List<Dt_Inventory_Batch>(); |
| | | List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => cabinOrder.Details.Select(x => x.Goods_no).ToList().Contains(x.MaterielCode)); |
| | | List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => cabinOrder.Warehouse_no == x.WarehouseCode && cabinOrder.Details.Select(x => x.Goods_no).ToList().Contains(x.MaterielCode)); |
| | | List<Dt_Inventory_Batch> inventory_Batches = _inventory_BatchServices.Repository.QueryData(x => cabinOrder.Details.Select(x => x.Goods_no).ToList().Contains(x.MaterielCode)); |
| | | #region ççå
¥åºå |
| | | if (cabinOrder.Order_type == "5") |
| | | { |
| | | foreach (var detail in request.details) |
| | | { |
| | | Dt_CabinOrderDetail? orderDetail = cabinOrder.Details.FirstOrDefault(x => x.Goods_no == detail.productCode && x.Batch_num == detail.batchNo); |
| | | if (orderDetail == null) throw new Exception($"æªæ¾å°çç¹åã{cabinOrder.Order_no}ãç©æç¼å·ã{detail.productCode}ãç©ææ¹æ¬¡ã{detail.batchNo}ãçæç»ä¿¡æ¯"); |
| | | decimal orderQty = detail.orderDetails?.Sum(x => decimal.TryParse(x.quantity, out var q) ? Math.Abs(q) : 0) ?? 0; |
| | | Dt_InventoryInfo inventoryInfo = inventoryInfos.Where(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo).First(); |
| | | var qty = inventoryInfo.SupplyQuantity - inventoryInfo.StockQuantity; |
| | | if (orderQty != qty) |
| | | throw new Exception($"ççå
¥åºæ°éä¸ä¸è´,ä¸ä¼ æ°éã{orderQty}ã,åºåççæ°éã{qty}ã"); |
| | | inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity; |
| | | inventoryInfo.SupplyQuantity = 0; |
| | | inventoryInfo.StockStatus = StockStatusEmun.å
¥åºå®æ.ObjToInt(); |
| | | infosUp.Add(inventoryInfo); |
| | | Dt_Inventory_Batch inventory_Batch = inventory_Batches.First(x => x.MaterielCode == inventoryInfo.MaterielCode && x.BatchNo == inventoryInfo.BatchNo); |
| | | inventory_Batch.StockQuantity = inventory_Batch.SupplyQuantity; |
| | | inventory_Batch.SupplyQuantity = 0; |
| | | batchesUp.Add(inventory_Batch); |
| | | orderDetail.OrderDetailStatus = "已宿"; |
| | | cabinOrderDetailsUp.Add(orderDetail); |
| | | #region æ·»å ççå
¥åºä»»å¡ |
| | | Dt_SupplyTask_Hty supplyTask_Hty = new Dt_SupplyTask_Hty() |
| | | { |
| | | WarehouseCode = inventoryInfo.WarehouseCode, |
| | | OperateType = OperateTypeEnum.èªå¨å®æ.ToString(), |
| | | InsertTime = DateTime.Now, |
| | | TaskStatus = SupplyStatusEnum.InFinish.ObjToInt(), |
| | | BatchNo = inventoryInfo.BatchNo, |
| | | MaterielName = inventoryInfo.MaterielName, |
| | | MaterielCode = inventoryInfo.MaterielCode, |
| | | MaterielSpec = inventoryInfo.MaterielSpec, |
| | | TaskType = TaskTypeEnum.ChenckIn.ObjToInt(), |
| | | CreateDate = DateTime.Now, |
| | | Creater = App.User.UserName, |
| | | LocationCode = inventoryInfo.LocationCode, |
| | | OrderNo = cabinOrder.Order_no, |
| | | StockQuantity = orderQty, |
| | | SupplyQuantity = 0, |
| | | Remark = "ççå
¥åº" |
| | | }; |
| | | supplyTask_Hties.Add(supplyTask_Hty); |
| | | #endregion |
| | | } |
| | | cabinOrder.OdrderStatus = "已宿"; |
| | | if (cabinOrder.Details.Where(x => !cabinOrderDetailsUp.Select(x => x.Id).Contains(x.Id)).Any()) |
| | | cabinOrder.OdrderStatus = "å¼å§"; |
| | | _unitOfWorkManage.BeginTran(); |
| | | _supplyTaskHtyService.AddData(supplyTask_Hties); |
| | | _inventoryInfoService.UpdateData(infosUp); |
| | | _inventory_BatchServices.UpdateData(batchesUp); |
| | | _cabinOrderDetailServices.UpdateData(cabinOrderDetailsUp); |
| | | BaseDal.UpdateData(cabinOrder); |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | #endregion |
| | | else |
| | | { |
| | | foreach (var detail in request.details) |
| | | { |
| | | Dt_CabinOrderDetail? orderDetail = cabinOrder.Details.FirstOrDefault(x => x.Goods_no == detail.productCode && x.Batch_num == detail.batchNo); |
| | | if (orderDetail == null) throw new Exception($"æªæ¾å°çç¹åã{cabinOrder.Order_no}ãç©æç¼å·ã{detail.productCode}ãç©æåç§°ã{detail.batchNo}ãçæç»ä¿¡æ¯"); |
| | | if (orderDetail.OrderDetailStatus == "已宿") continue; |
| | | decimal orderQty = detail.orderDetails?.Sum(x => decimal.TryParse(x.quantity, out var q) ? Math.Abs(q) : 0) ?? 0; |
| | | orderDetail.Order_Inqty += orderQty; |
| | | if (orderDetail.Order_Inqty > orderDetail.Order_qty) throw new Exception($"å
¥åºæ°éä¸å¯è¶
åºåæ®æ°é"); |
| | | orderDetail.OrderDetailStatus = "å¼å§"; |
| | | cabinOrder.OdrderStatus = orderDetail.OrderDetailStatus; |
| | | if (orderDetail.Order_Inqty == orderDetail.Order_qty) |
| | | { |
| | | orderDetail.OrderDetailStatus = "已宿"; |
| | | cabinOrder.Details.Remove(orderDetail); |
| | | } |
| | | cabinOrderDetailsUp.Add(orderDetail); |
| | | Dt_MaterielInfo? materielInfo = materielInfos.FirstOrDefault(x => orderDetail.Goods_no == x.MaterielCode); |
| | | if (materielInfo == null) throw new Exception($"æªæ¾å°ç©æç¼ç ã{orderDetail.Goods_no}ãçç©æä¿¡æ¯"); |
| | | #region åºå |
| | | Dt_InventoryInfo? dt_InventoryInfo = inventoryInfos.FirstOrDefault(x => x.MaterielCode == orderDetail.Goods_no && x.BatchNo == orderDetail.Batch_num); |
| | | if (dt_InventoryInfo != null) |
| | | { |
| | | dt_InventoryInfo.StockQuantity += orderQty; |
| | | dt_InventoryInfo.AvailableQuantity += orderQty; |
| | | dt_InventoryInfo.InDate = DateTime.Now; |
| | | infosUp.Add(dt_InventoryInfo); |
| | | } |
| | | else |
| | | { |
| | | dt_InventoryInfo = new Dt_InventoryInfo |
| | | { |
| | | PalletCode = detail.orderDetails?.FirstOrDefault()?.palletCode ?? "", |
| | | WarehouseCode = "001", |
| | | LocationCode = "ç«åº", |
| | | StockStatus = StockStatusEmun.å
¥åºå®æ.ObjToInt(), |
| | | MaterielCode = materielInfo.MaterielCode, |
| | | MaterielName = materielInfo.MaterielName, |
| | | MaterielSpec = materielInfo.MaterielSpec, |
| | | BatchNo = detail.batchNo, |
| | | StockQuantity = orderQty, |
| | | OutboundQuantity = 0, |
| | | SupplyQuantity = 0, |
| | | AvailableQuantity = orderQty, |
| | | InDate = DateTime.Now, |
| | | ProductionDate = detail.finishDate.ToString("yyyy-MM-dd"), |
| | | ShelfLife = 0, |
| | | ValidityPeriod = orderDetail.Exp_date, |
| | | Remark = "æºè½ç«åº" |
| | | }; |
| | | infosAdd.Add(dt_InventoryInfo); |
| | | } |
| | | #endregion |
| | | |
| | | #region åºåæ¹æ¬¡ |
| | | if (cabinOrder.Order_type != InOrderTypeEnum.Allocat.ObjToInt().ToString()) |
| | | { |
| | | Dt_Inventory_Batch? inventory_Batch = inventory_Batches.FirstOrDefault(x => x.MaterielCode == dt_InventoryInfo.MaterielCode && x.BatchNo == dt_InventoryInfo.BatchNo); |
| | | if (inventory_Batch != null) |
| | | { |
| | | inventory_Batch.StockQuantity += orderQty; |
| | | inventory_Batch.AvailableQuantity += orderQty; |
| | | batchesUp.Add(inventory_Batch); |
| | | } |
| | | else |
| | | { |
| | | inventory_Batch = new Dt_Inventory_Batch |
| | | { |
| | | MaterielCode = dt_InventoryInfo.MaterielCode, |
| | | MaterielName = dt_InventoryInfo.MaterielName, |
| | | MaterielSpec = dt_InventoryInfo.MaterielSpec, |
| | | BatchNo = dt_InventoryInfo.BatchNo, |
| | | StockQuantity = dt_InventoryInfo.StockQuantity, |
| | | OutboundQuantity = dt_InventoryInfo.OutboundQuantity, |
| | | AvailableQuantity = dt_InventoryInfo.AvailableQuantity, |
| | | SupplyQuantity = dt_InventoryInfo.SupplyQuantity, |
| | | ERPStockQuantity = 0, |
| | | Status = false, |
| | | ProductionDate = detail.finishDate.ToString("yyyy-MM-dd"), |
| | | ValidityPeriod = dt_InventoryInfo.ValidityPeriod.ObjToDate(), |
| | | Remark = "èªå¨å建" |
| | | }; |
| | | batchesAdd.Add(inventory_Batch); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region æ·»å å
¥åºä»»å¡åå² |
| | | Dt_SupplyTask_Hty supplyTask_Hty = new Dt_SupplyTask_Hty() |
| | | { |
| | | WarehouseCode = dt_InventoryInfo.WarehouseCode, |
| | | TaskNum = dt_InventoryInfo.Id, |
| | | OperateType = OperateTypeEnum.èªå¨å®æ.ToString(), |
| | | InsertTime = DateTime.Now, |
| | | TaskStatus = SupplyStatusEnum.InFinish.ObjToInt(), |
| | | BatchNo = dt_InventoryInfo.BatchNo, |
| | | MaterielName = dt_InventoryInfo.MaterielName, |
| | | MaterielCode = dt_InventoryInfo.MaterielCode, |
| | | MaterielSpec = dt_InventoryInfo.MaterielSpec, |
| | | TaskType = cabinOrder.Order_type == "1" ? TaskTypeEnum.In.ObjToInt() : TaskTypeEnum.OutReturn.ObjToInt(), |
| | | CreateDate = DateTime.Now, |
| | | Creater = App.User.UserName, |
| | | LocationCode = dt_InventoryInfo.LocationCode, |
| | | OrderNo = cabinOrder.Order_no, |
| | | StockQuantity = orderQty, |
| | | SupplyQuantity = 0, |
| | | Remark = "å
¥åº" |
| | | }; |
| | | if (cabinOrder.Order_type == InOrderTypeEnum.Allocat.ObjToInt().ToString()) supplyTask_Hty.TaskType = TaskTypeEnum.AllocatIn.ObjToInt(); |
| | | supplyTask_Hties.Add(supplyTask_Hty); |
| | | #endregion |
| | | } |
| | | if (cabinOrder.Details == null || !cabinOrder.Details.Where(x => x.OrderDetailStatus != "已宿").Any()) |
| | | cabinOrder.OdrderStatus = "已宿"; |
| | | _unitOfWorkManage.BeginTran(); |
| | | _supplyTaskHtyService.AddData(supplyTask_Hties); |
| | | if (infosUp.Count > 0) _inventoryInfoService.UpdateData(infosUp); |
| | | if (infosAdd.Count > 0) _inventoryInfoService.AddData(infosAdd); |
| | | if (batchesUp.Count > 0) _inventory_BatchServices.UpdateData(batchesUp); |
| | | if (batchesAdd.Count > 0) _inventory_BatchServices.AddData(batchesAdd); |
| | | _cabinOrderDetailServices.UpdateData(cabinOrderDetailsUp); |
| | | BaseDal.UpdateData(cabinOrder); |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using static WIDESEA_DTO.SquareCabin.TowcsDto; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Model.Models; |
| | | using WIDESEA_Common.StockEnum; |
| | | using WIDESEA_Common.TaskEnum; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_ISquareCabinServices; |
| | | using WIDESEA_Core.Helper; |
| | | |
| | | namespace WIDESEA_SquareCabinServices |
| | | { |
| | | public partial class DeliveryOrderServices |
| | | { |
| | | public WebResponseContent CompleteLKOutOrder(Dt_DeliveryOrder deliveryOrder, EdiOrderCallbackRequest request) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | List<Dt_DeliveryOrderDetail> cabinOrderDetailsUp = new List<Dt_DeliveryOrderDetail>(); |
| | | List<Dt_SupplyTask_Hty> supplyTask_Hties = new List<Dt_SupplyTask_Hty>(); |
| | | List<Dt_InventoryInfo> infosUp = new List<Dt_InventoryInfo>(); |
| | | List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>(); |
| | | List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => deliveryOrder.Details.Select(x => x.Goods_no).ToList().Contains(x.MaterielCode)); |
| | | List<Dt_InventoryInfo> inventoryInfos = _inventoryInfoService.Repository.QueryData(x => deliveryOrder.Warehouse_no == x.WarehouseCode && deliveryOrder.Details.Select(x => x.Goods_no).ToList().Contains(x.MaterielCode)); |
| | | List<Dt_Inventory_Batch> inventory_Batches = _inventory_BatchServices.Repository.QueryData(x => deliveryOrder.Details.Select(x => x.Goods_no).ToList().Contains(x.MaterielCode)); |
| | | #region çäºåºåºå |
| | | if (deliveryOrder.Out_type == "6") |
| | | { |
| | | try |
| | | { |
| | | foreach (var detail in request.details) |
| | | { |
| | | Dt_DeliveryOrderDetail? orderDetail = deliveryOrder.Details.FirstOrDefault(x => x.Goods_no == detail.productCode && x.Batch_num == detail.batchNo); |
| | | if (orderDetail == null) throw new Exception($"æªæ¾å°çç¹åã{deliveryOrder.Out_no}ãç©æç¼å·ã{detail.productCode}ãç©ææ¹æ¬¡ã{detail.batchNo}ãçæç»ä¿¡æ¯"); |
| | | decimal orderQty = detail.orderDetails?.Sum(x => decimal.TryParse(x.quantity, out var q) ? Math.Abs(q) : 0) ?? 0; |
| | | Dt_InventoryInfo inventoryInfo = inventoryInfos.Where(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo).First(); |
| | | var qty = inventoryInfo.SupplyQuantity - inventoryInfo.StockQuantity; |
| | | if (orderQty != qty) |
| | | throw new Exception($"çäºåºåºæ°éä¸ä¸è´,ä¸ä¼ æ°éã{orderQty}ã,åºåçäºæ°éã{qty}ã"); |
| | | inventoryInfo.StockQuantity = inventoryInfo.SupplyQuantity; |
| | | inventoryInfo.SupplyQuantity = 0; |
| | | inventoryInfo.StockStatus = StockStatusEmun.å
¥åºå®æ.ObjToInt(); |
| | | infosUp.Add(inventoryInfo); |
| | | Dt_Inventory_Batch inventory_Batch = inventory_Batches.First(x => x.MaterielCode == inventoryInfo.MaterielCode && x.BatchNo == inventoryInfo.BatchNo); |
| | | inventory_Batch.StockQuantity = inventory_Batch.SupplyQuantity; |
| | | inventory_Batch.SupplyQuantity = 0; |
| | | batchesUp.Add(inventory_Batch); |
| | | orderDetail.OotDetailStatus = "已宿"; |
| | | cabinOrderDetailsUp.Add(orderDetail); |
| | | #region æ·»å ççå
¥åºä»»å¡ |
| | | Dt_SupplyTask_Hty supplyTask_Hty = new Dt_SupplyTask_Hty() |
| | | { |
| | | WarehouseCode = inventoryInfo.WarehouseCode, |
| | | OperateType = OperateTypeEnum.èªå¨å®æ.ToString(), |
| | | InsertTime = DateTime.Now, |
| | | TaskStatus = SupplyStatusEnum.OutFinish.ObjToInt(), |
| | | BatchNo = inventoryInfo.BatchNo, |
| | | MaterielName = inventoryInfo.MaterielName, |
| | | MaterielCode = inventoryInfo.MaterielCode, |
| | | MaterielSpec = inventoryInfo.MaterielSpec, |
| | | TaskType = TaskTypeEnum.ChenckOut.ObjToInt(), |
| | | CreateDate = DateTime.Now, |
| | | Creater = App.User.UserName, |
| | | LocationCode = inventoryInfo.LocationCode, |
| | | OrderNo = deliveryOrder.Out_no, |
| | | StockQuantity = orderQty, |
| | | SupplyQuantity = 0, |
| | | Remark = "çäºåºåº" |
| | | }; |
| | | supplyTask_Hties.Add(supplyTask_Hty); |
| | | #endregion |
| | | } |
| | | deliveryOrder.OutStatus = "已宿"; |
| | | if (deliveryOrder.Details.Where(x => !cabinOrderDetailsUp.Select(x => x.Id).Contains(x.Id)).Any()) |
| | | deliveryOrder.OutStatus = "å¼å§"; |
| | | _unitOfWorkManage.BeginTran(); |
| | | _supplyTaskHtyService.AddData(supplyTask_Hties); |
| | | _inventoryInfoService.UpdateData(infosUp); |
| | | _inventory_BatchServices.UpdateData(batchesUp); |
| | | _deliveryOrderDetailServices.UpdateData(cabinOrderDetailsUp); |
| | | BaseDal.UpdateData(deliveryOrder); |
| | | _unitOfWorkManage.CommitTran(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | #endregion |
| | | else |
| | | { |
| | | List<Dt_SupplyTask> supplyTasks = _supplyTaskService.Repository.QueryData(x => deliveryOrder.Details.Select(x => x.Goods_no).ToList().Contains(x.MaterielCode) && x.OrderNo == request.externalOrderNo && x.WarehouseCode == deliveryOrder.Warehouse_no && x.TaskStatus == SupplyStatusEnum.NewOut.ObjToInt()); |
| | | foreach (var detail in request.details) |
| | | { |
| | | decimal orderQty = detail.orderDetails?.Sum(x => decimal.TryParse(x.quantity, out var q) ? Math.Abs(q) : 0) ?? 0; |
| | | Dt_SupplyTask? supplyTask = supplyTasks.FirstOrDefault(x => x.MaterielCode == detail.productCode && x.BatchNo == detail.batchNo); |
| | | if (supplyTask == null) throw new Exception($"æªæ¾å°è®¢åå·ã{request.externalOrderNo}ãç©æç¼å·ã{detail.productCode}ãçåºåºä»»å¡"); |
| | | if (supplyTask.StockQuantity != orderQty) |
| | | throw new Exception($"订åå·ã{request.orderNo}ãç©æç¼å·ã{detail.productCode}ãçåºåºæ°éä¸åºåºä»»å¡æ°éä¸ç¸ç"); |
| | | content = OutTaskFinish(supplyTask, deliveryOrder); |
| | | if (!content.Status) throw new Exception(content.Message); |
| | | } |
| | | } |
| | | content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | public IRepository<Dt_MedicineGoods> Repository => BaseDal; |
| | | |
| | | static string SearchDate = "2025-10-30 00:00:00"; |
| | | |
| | | /// <summary> |
| | | /// è·åè¯ååºç¡ä¿¡æ¯åæ¥æ¥å£ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent GetMedicineGoodsInfom() |
| | | { |
| | | var responseContent = new WebResponseContent(); |
| | | try |
| | | { |
| | | |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/goodsInfo"; |
| | | |
| | | |
| | | //if (string.IsNullOrEmpty(SearchDate)) SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | //请æ±åæ° |
| | | //var requestData = new |
| | | //{ |
| | | // searchDate = "2009-01-10 20:45:16" // æ£ç¡®çæ ¼å¼ |
| | | //}; |
| | | if (string.IsNullOrEmpty(SearchDate)) |
| | | { |
| | | // é»è®¤æ¥è¯¢è¿å»24å°æ¶çæ°æ® |
| | | SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | } |
| | | // 请æ±åæ° |
| | | var requestData = new |
| | | { |
| | | searchDate = SearchDate |
| | | }; |
| | | SearchDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | // åèµ·è¯·æ± |
| | | var result = HttpHelper.Post(url, requestData.ToJsonString()); |
| | | |
| | | // ååºåå |
| | | var response = JsonConvert.DeserializeObject<UpstreamResponse<MedicationsInfo>>(result); |
| | | |
| | | if (response == null || response.resultCode != "0") |
| | | { |
| | | // è°ç¨å¼å¸¸æ¥å£ |
| | | //SendErrorToUpstream(5, "", response.resultMsg ?? "䏿¸¸æ¥å£è¿å失败", ""); |
| | | return responseContent.Error(response?.resultMsg ?? "䏿¸¸æ¥å£è¿å失败"); |
| | | } |
| | | if (response.data.Count < 1) |
| | | { |
| | | return responseContent.OK("æ æ°è¯åæ°æ®"); |
| | | } |
| | | |
| | | //è·åææå·²åå¨çååç¼å· |
| | | var existingGoodsNos = BaseDal.Db.Queryable<Dt_MaterielInfo>() |
| | | .Select(g => g.MaterielCode) |
| | | .ToList(); |
| | | |
| | | // æ¶éææè¦æå
¥çå®ä½ |
| | | var entityList = response.data.Where(Medicat => !existingGoodsNos.Contains(Medicat.goods_no)).Select(Medicat => new Dt_MaterielInfo |
| | | { |
| | | MaterielCode = Medicat.goods_no, |
| | | MaterielErpType = Medicat.goods_type, |
| | | item = Medicat.goods_tym, //éç¨å |
| | | MaterielName = Medicat.goods_spm,//ç©æåç§° |
| | | Dosage_form = GetDosageForm(Medicat.dosage_form),//è¯å |
| | | Barcode = Medicat.barcode,//æ¡å½¢å |
| | | MaterielSpec = Medicat.model, |
| | | Factory = Medicat.factory, |
| | | MaterielUnit = Medicat.unit,//åä½ |
| | | MaterielSourceType = MaterielSourceTypeEnum.PurchasePart, |
| | | // ä½¿ç¨ ?? è¿ç®ç¬¦æä¾é»è®¤å¼ |
| | | MaterielLength = (float?)Medicat.item_length, |
| | | MaterielWide = (float?)Medicat.item_width, |
| | | MaterielHeight = (float?)Medicat.item_hight, |
| | | MaterielVolume = (float?)Medicat.item_volumn, |
| | | MaterielWeight = (float?)Medicat.item_weight, |
| | | MaterielStoragecondition = float.TryParse(Medicat.storage_confition, out var val) ? val : null, //å¨åæ¡ä»¶ |
| | | Remark = Medicat.remark, |
| | | GoodStatusState = "æªä¸å", |
| | | ModifyDate = Medicat.modify_date |
| | | }).ToList(); |
| | | // 䏿¬¡æ§æ¹éæå
¥æ°æ®åº |
| | | BaseDal.Db.Insertable(entityList).ExecuteCommand(); |
| | | |
| | | //ProductSynchronous(); |
| | | return responseContent.OK("忥æå"); |
| | | } |
| | | |
| | | catch (Exception ex) |
| | | { |
| | | //SendErrorToUpstream(5, "", ex.Message, ""); |
| | | return responseContent.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// åç»ä¸æ¸¸wcs忥è¯åä¿¡æ¯ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent ProductSynchronous() |
| | | { |
| | | try |
| | | { |
| | | //æå°ä»¶æªä¸åççä¿¡æ¯åç®±è§ä¸º0ï¼æä½åºå为0çè¿æ»¤æ |
| | | //var list = BaseDal.Db.Queryable<Dt_MaterielInfo>().Where(x => x.GoodStatusState == "æªä¸å" && x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart).ToList(); |
| | | var list = BaseDal.Db.Queryable<Dt_MaterielInfo>().Where(x => x.MaterielSourceType == MaterielSourceTypeEnum.SelfMadePart && x.BoxQty != 0 && x.MinQty != 0 && x.GoodStatusState == "æªä¸å").ToList(); |
| | | if (list.Count < 1) |
| | | { |
| | | return new WebResponseContent().OK("æ æªä¸åè¯å"); |
| | | } |
| | | //æ¾å°äºå°±å°æ´ä¸ªliståç»ä¸æ¸¸ç³»ç» |
| | | foreach (var item in list) |
| | | { |
| | | var medicineDTO = new ProductInfo |
| | | { |
| | | //ç¨æ·code |
| | | customerCode = "905", |
| | | //ç©æç±»å |
| | | materialCode = item.MaterielErpType, |
| | | //产åç¼ç |
| | | productCode = item.MaterielCode, |
| | | //产åå |
| | | productName = item.MaterielName, |
| | | //äº§åæ¡ç |
| | | productBarCode = item.Barcode, |
| | | |
| | | //è¯å |
| | | medicine = item.Dosage_form,//è¿éè¦è°ç¨æ¹æ³ï¼è½¬åæ¹æ³ |
| | | |
| | | //è§æ ¼ |
| | | productSpecifications = item.MaterielSpec, |
| | | //åä½ |
| | | unit = item.MaterielUnit, |
| | | //é¿ |
| | | singleProductLongNum = (item.MaterielLength ?? 0).ToString(), |
| | | //宽 |
| | | singleProductWideNum = (item.MaterielWide ?? 0).ToString(), |
| | | //é« |
| | | singleProductHighNum = (item.MaterielHeight ?? 0).ToString(), |
| | | //éé |
| | | singleProductWeight = (item.MaterielWeight ?? 0).ToString(), |
| | | //ä½ç§¯ |
| | | singleProductVolume = (item.MaterielVolume ?? 0).ToString(), |
| | | //æ¯å¦åæ¶ 0æ¯ä¸å é¤ï¼1å é¤ |
| | | isDelete = "0" |
| | | }; |
| | | var url = "http://172.16.1.2:9357/file-admin/api/product/productSynchronous"; |
| | | var result = HttpHelper.Post(url, medicineDTO.ToJsonString()); |
| | | var resp = JsonConvert.DeserializeObject<TowcsResponse<object>>(result); |
| | | |
| | | if (resp != null && resp.code == "0") |
| | | { |
| | | //æ´æ°è¯åç¶æ-已宿 |
| | | BaseDal.Db.Updateable<Dt_MaterielInfo>() |
| | | .SetColumns(x => x.GoodStatusState == "ä¸å宿") |
| | | .Where(x => x.MaterielCode == item.MaterielCode) |
| | | .ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | //SendErrorToUpstream(5, medicineDTO.materialCode, resp?.msg ?? "WCSè¯åä¿¡æ¯åæ¥å¤±è´¥", ""); |
| | | //return new WebResponseContent { Status = false, Message = "è®¢åæ¨é失败" }; |
| | | continue; |
| | | } |
| | | |
| | | } |
| | | return new WebResponseContent { Status = true, Message = "æå" }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("ProductSynchronous å¼å¸¸ï¼" + ex.Message); |
| | | return new WebResponseContent { Status = false, Message = ex.Message }; |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 忥å é¤å é¤ååä¿¡æ¯ |
| | |
| | | Console.WriteLine("å¼å¸¸æ¥å£æ¨é失败ï¼" + e.Message); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// å建è¯ååå
¸ |
| | | /// </summary> |
| | | private static readonly Dictionary<string, string> _dosageFormMap = new Dictionary<string, string> |
| | | { |
| | | {"001", "çå"}, {"002", "çå"}, {"003", "çå"}, {"004", "çå"}, {"005", "çå"}, |
| | | {"006", "çå"}, {"007", "çå"}, {"008", "çå"}, {"009", "çå"}, {"010", "çå"}, |
| | | {"011", "å
¶å®"}, {"012", "çå"}, {"013", "å
¶å®"}, {"014", "çå"}, {"015", "çå"}, |
| | | {"016", "çå"}, {"017", "çå"}, {"018", "å
¶å®"}, {"019", "å
¶å®"}, {"020", "å
¶å®"}, |
| | | {"021", "éå"}, {"022", "éå"}, {"023", "éå"}, {"024", "éå"}, {"025", "䏿è¯"}, |
| | | {"026", "䏿è¯"}, {"027", "å
¶å®"}, {"028", "å
¶å®"}, {"029", "å
¶å®"}, {"030", "å
¶å®"}, |
| | | {"031", "å
¶å®"}, {"032", "å
¶å®"}, {"033", "å
¶å®"}, {"034", "䏿è¯"}, {"035", "䏿è¯"}, |
| | | {"036", "䏿è¯"}, {"037", "䏿è¯"}, {"038", "å
¶å®"}, {"039", "å
¶å®"}, {"040", "å
¶å®"}, |
| | | {"041", "䏿è¯"}, {"042", "䏿è¯"}, {"043", "䏿è¯"}, {"044", "å
¶å®"}, {"045", "䏿è¯"}, |
| | | {"046", "䏿è¯"}, {"047", "䏿è¯"}, {"048", "䏿è¯"}, {"049", "䏿è¯"}, {"050", "䏿è¯"}, |
| | | {"051", "䏿è¯"}, {"052", "䏿è¯"}, {"053", "䏿è¯"}, {"054", "䏿è¯"}, {"055", "䏿è¯"}, |
| | | {"056", "å
¶å®"}, {"057", "å
¶å®"}, {"058", "å
¶å®"}, {"059", "å
¶å®"}, {"060", "å
¶å®"}, |
| | | {"061", "å
¶å®"}, {"062", "å
¶å®"}, {"063", "å
¶å®"}, {"064", "å
¶å®"}, {"065", "å
¶å®"}, |
| | | {"066", "å
¶å®"}, {"067", "䏿è¯"}, {"068", "䏿è¯"}, {"069", "䏿è¯"}, {"070", "å
¶å®"}, |
| | | {"071", "å
¶å®"}, {"072", "å
¶å®"}, {"073", "䏿è¯"}, {"074", "å
¶å®"}, {"075", "å
¶å®"}, |
| | | {"076", "䏿è¯"}, {"077", "å
¶å®"}, {"078", "å
¶å®"}, {"079", "䏿è¯"}, {"080", "䏿è¯"}, |
| | | {"081", "䏿è¯"}, {"082", "䏿è¯"}, {"083", "å
¶å®"}, {"084", "䏿è¯"}, {"085", "å
¶å®"}, |
| | | {"086", "䏿è¯"}, {"087", "å
¶å®"}, {"088", "å
¶å®"}, {"089", "䏿è¯"}, {"090", "䏿è¯"}, |
| | | {"091", "å
¶å®"}, {"092", "å
¶å®"}, {"093", "å
¶å®"}, {"094", "䏿è¯"}, {"095", "å
¶å®"}, |
| | | {"096", "å
¶å®"}, {"097", "å
¶å®"}, {"098", "å
¶å®"}, {"099", "å
¶å®"}, {"100", "å
¶å®"}, |
| | | {"101", "å
¶å®"}, {"102", "å
¶å®"}, {"103", "å
¶å®"}, {"104", "å
¶å®"}, {"105", "å
¶å®"}, |
| | | {"106", "å
¶å®"}, {"107", "å
¶å®"}, {"108", "å
¶å®"}, {"109", "å
¶å®"}, {"110", "å
¶å®"}, |
| | | {"111", "å
¶å®"}, {"112", "å
¶å®"}, {"113", "å
¶å®"}, {"114", "å
¶å®"}, {"115", "å
¶å®"}, |
| | | {"116", "å
¶å®"}, {"117", "å
¶ä»"} |
| | | }; |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®ååç¼å·è·ååååç±» |
| | | /// </summary> |
| | | /// <param name="dosageCode">ååç¼å·(001-117)</param> |
| | | /// <returns>åååç±»(çå/éå/䏿è¯/å
¶å®/å
¶ä»)</returns> |
| | | public static string GetDosageForm(string dosageCode) |
| | | { |
| | | if (string.IsNullOrEmpty(dosageCode)) |
| | | return "æªç¥"; |
| | | |
| | | // å¤çç¼å·æ ¼å¼ï¼ç¡®ä¿æ¯3使°å |
| | | if (dosageCode.Length == 1) |
| | | dosageCode = "00" + dosageCode; |
| | | else if (dosageCode.Length == 2) |
| | | dosageCode = "0" + dosageCode; |
| | | |
| | | if (_dosageFormMap.TryGetValue(dosageCode, out string form)) |
| | | { |
| | | return form; |
| | | } |
| | | |
| | | return "æªç¥"; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | using HslCommunication; |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_ISquareCabinServices; |
| | | using WIDESEA_Model.Models; |
| | | using static WIDESEA_DTO.SquareCabin.OrderDto; |
| | | |
| | | namespace WIDESEA_SquareCabinServices |
| | | { |
| | | public partial class Business |
| | | { |
| | | #region è·åERPå
¥åºå |
| | | static string SearchInOrderDate = "2025-10-30 00:00:00"; |
| | | public WebResponseContent GetInOrder() |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/inOrder"; |
| | | if (string.IsNullOrEmpty(SearchInOrderDate)) SearchInOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | var requestData = new { searchDate = SearchInOrderDate }; |
| | | SearchInOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | var result = HttpHelper.Post(url, requestData.ToJsonString()); |
| | | var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstreamOrderInfo>>(result); |
| | | if (response == null || response.resultCode != "0") return content; |
| | | if (response.data.Count < 1) return content; |
| | | var ordernos = response.data.Select(x => x.order_no).ToList(); |
| | | var existingOrderNos = _cabinOrderServices.Repository.QueryData(x => ordernos.Contains(x.Order_no)).Select(x => x.Order_no).Distinct().ToList(); |
| | | var newOrders = response.data.Where(order => !existingOrderNos.Contains(order.order_no)).ToList(); |
| | | if (newOrders.Count < 1) return content; |
| | | foreach (var order in newOrders) |
| | | { |
| | | try |
| | | { |
| | | if (order.order_type == "1") |
| | | { |
| | | _cabinOrderServices.CreateInboundOrder(order); |
| | | } |
| | | else if (order.order_type == "3")//å
¥åºéæ |
| | | { |
| | | #region 转æ¢ä¸ºåºåºå |
| | | UpstramOutOrderInfo upstramOutOrderInfo = new UpstramOutOrderInfo() |
| | | { |
| | | order_no = order.order_no, |
| | | order_type = order.order_type, |
| | | warehouse_no = order.warehouse_no, |
| | | details = new List<UpstreamOutOrderDetail>() |
| | | }; |
| | | foreach (var item in order.details) |
| | | { |
| | | UpstreamOutOrderDetail detail = new UpstreamOutOrderDetail() |
| | | { |
| | | batch_num = item.batch_num, |
| | | goods_no = item.goods_no, |
| | | order_qty = item.order_qty, |
| | | exp_date = item.exp_date, |
| | | }; |
| | | upstramOutOrderInfo.details.Add(detail); |
| | | } |
| | | _deliveryOrderServices.CreateOutboundOrder(upstramOutOrderInfo); |
| | | #endregion |
| | | } |
| | | else if (order.order_type == "5")//æ¥æº¢å
¥åº |
| | | { |
| | | _cabinOrderServices.CreateCheckInOrder(order); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | return content.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("è·åERPå
¥åºåä¿¡æ¯å¼å¸¸ï¼" + ex.Message); |
| | | return content.Error(ex.Message); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region è·åERPåºåºå |
| | | static string SearchOutOrderDate = "2025-10-30 00:00:00"; |
| | | public WebResponseContent GetOutOrder() |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | var url = "http://121.37.118.63:80/GYZ2/95fck/outOrder"; |
| | | if (string.IsNullOrEmpty(SearchOutOrderDate)) SearchOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | var requestData = new { searchDate = SearchOutOrderDate }; |
| | | SearchOutOrderDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | var result = HttpHelper.Post(url, requestData.ToJsonString()); |
| | | var response = JsonConvert.DeserializeObject<UpstreamResponse<UpstramOutOrderInfo>>(result); |
| | | |
| | | if (response == null || response.resultCode != "0") return content; |
| | | if (response.data.Count < 1) return content; |
| | | var ordernos = response.data.Select(x => x.order_no).ToList(); |
| | | var existingOutOrderNos = _deliveryOrderServices.Repository.QueryData(x => ordernos.Contains(x.Out_no)).Select(x => x.Out_no).Distinct().ToList(); |
| | | var newOutOrders = response.data.Where(outorder => !existingOutOrderNos.Contains(outorder.order_no)).ToList(); |
| | | if (newOutOrders.Count < 1) return content; |
| | | |
| | | foreach (var outorder in newOutOrders) |
| | | { |
| | | if (outorder.order_type == "1")// æ£å¸¸åºåºå |
| | | { |
| | | _deliveryOrderServices.CreateOutboundOrder(outorder); |
| | | } |
| | | else if (outorder.order_type == "2")//åºåºéè´§ |
| | | { |
| | | #region è½¬æ¢æå
¥åºå |
| | | UpstreamOrderInfo order = new UpstreamOrderInfo() |
| | | { |
| | | order_no = outorder.order_no, |
| | | order_type = outorder.order_type, |
| | | warehouse_no = outorder.warehouse_no, |
| | | details = new List<UpstreamOrderDetail>() |
| | | }; |
| | | foreach (var item in outorder.details) |
| | | { |
| | | UpstreamOrderDetail detail = new UpstreamOrderDetail() |
| | | { |
| | | batch_num = item.batch_num, |
| | | goods_no = item.goods_no, |
| | | order_qty = item.order_qty, |
| | | exp_date = item.exp_date, |
| | | }; |
| | | order.details.Add(detail); |
| | | } |
| | | #endregion |
| | | _cabinOrderServices.CreateInboundOrder(order); |
| | | } |
| | | else if (outorder.order_type == "6")//æ¥æåºåº |
| | | { |
| | | _deliveryOrderServices.CreateCheckOutOrder(outorder); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | _inventoryInfoService = inventoryInfoService; |
| | | } |
| | | //æ¯é1ç§æ§è¡ä¸æ¬¡ |
| | | [Invoke(Begin = "2025-09-01", Interval = 1000 * 10, IsEnabled = true, SkipWhileExecuting = true)] |
| | | [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = true, SkipWhileExecuting = true)] |
| | | public void Run() |
| | | { |
| | | //å·åº |
| | |
| | | [ApiController] |
| | | public class CabinOrderController : ApiBaseController<ICabinOrderServices, Dt_CabinOrder> |
| | | { |
| | | public CabinOrderController(ICabinOrderServices service) : base(service) |
| | | private readonly IBusiness _business; |
| | | public CabinOrderController(ICabinOrderServices service, IBusiness business) : base(service) |
| | | { |
| | | _business = business; |
| | | } |
| | | [HttpPost, HttpGet, Route("GetUpstreamOrder"), AllowAnonymous] |
| | | public WebResponseContent GetUpstreamOrder() |
| | | { |
| | | return _business.GetUpstreamOrder(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 宿å
¥åºå |
| | | /// </summary> |
| | |
| | | { |
| | | |
| | | } |
| | | [HttpPost,Route("GetMedicineGoodsInfom"),AllowAnonymous] |
| | | public WebResponseContent GetMedicineGoodsInfom() |
| | | { |
| | | return Service.GetMedicineGoodsInfom(); |
| | | } |
| | | |
| | | [HttpPost, Route("DeleteProduct"), AllowAnonymous] |
| | | public WebResponseContent DeleteProduct(string goodsno) |
| | |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_IWMsInfoServices; |
| | | using WIDESEA_Model.Models; |
| | |
| | | public MaterielInfoController(IMaterielInfoService service) : base(service) |
| | | { |
| | | } |
| | | |
| | | [HttpPost, Route("GetMedicineGoodsInfom"), AllowAnonymous] |
| | | public WebResponseContent GetMedicineGoodsInfom() |
| | | { |
| | | return Service.GetMedicineGoodsInfom(); |
| | | } |
| | | } |
| | | } |
| | |
| | | using Pomelo.AspNetCore.TimedJob; |
| | | using WIDESEA_ISquareCabinServices; |
| | | using WIDESEA_IWMsInfoServices; |
| | | using static WIDESEA_DTO.SquareCabin.TowcsDto; |
| | | |
| | | namespace WIDESEA_WMSServer |
| | | { |
| | | public class GoodsJob : Job |
| | | { |
| | | private readonly IMedicineGoodsServices _medicineGoodsServices; |
| | | public GoodsJob(IMedicineGoodsServices medicineGoodsServices) |
| | | private readonly IMaterielInfoService _materielInfoService; |
| | | public GoodsJob(IMaterielInfoService materielInfoService) |
| | | { |
| | | _medicineGoodsServices = medicineGoodsServices; |
| | | _materielInfoService = materielInfoService; |
| | | } |
| | | //æ¯é1ç§æ§è¡ä¸æ¬¡ |
| | | [Invoke(Begin = "2025-09-01", Interval = 1000 * 60, IsEnabled = true, SkipWhileExecuting = true)] |
| | | [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = true, SkipWhileExecuting = true)] |
| | | public void Run() |
| | | { |
| | | _medicineGoodsServices.GetMedicineGoodsInfom(); |
| | | _medicineGoodsServices.ProductSynchronous(); |
| | | _materielInfoService.GetMedicineGoodsInfom(); |
| | | _materielInfoService.ProductSynchronous(); |
| | | Console.WriteLine($"ç©æä¿¡æ¯ä»»å¡æ§è¡ç»æï¼{DateTime.Now}"); |
| | | } |
| | | } |
| | |
| | | _business = business; |
| | | } |
| | | //æ¯é1ç§æ§è¡ä¸æ¬¡ |
| | | [Invoke(Begin = "2025-09-01", Interval = 1000 * 60 * 10, IsEnabled = true, SkipWhileExecuting = true)] |
| | | [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = true, SkipWhileExecuting = true)] |
| | | public void Run() |
| | | { |
| | | _business.GetUpstreamOrder(); |
| | | _business.GetUpstreamOutOrder(); |
| | | _business.GetInOrder(); |
| | | _business.GetOutOrder(); |
| | | //_business.EdiIn(); |
| | | //_business.CompleteAllOrders(); |
| | | _business.CompleteAllOrders(); |
| | |
| | | _business = business; |
| | | } |
| | | //æ¯é1ç§æ§è¡ä¸æ¬¡ |
| | | [Invoke(Begin = "2025-09-01", Interval = 1000 * 60, IsEnabled = true, SkipWhileExecuting = true)] |
| | | [Invoke(Begin = "2025-09-01", Interval = 1000 * 5, IsEnabled = true, SkipWhileExecuting = true)] |
| | | public void Run() |
| | | { |
| | | //è·å䏿¸¸åºåºåæ°æ® |
| | |
| | | _business.EdiIn(); |
| | | _business.EdiOut(); |
| | | |
| | | |
| | | |
| | | Console.WriteLine($"WCS任塿§è¡ç»æï¼{DateTime.Now}"); |
| | | |
| | | } |
| | |
| | | //"ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=WMS_TC;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //æ§WMSæ°æ®åºè¿æ¥ |
| | | "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WMSDBF_Z22;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WMSDBF_Z22;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //"ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WMSDBF_Z22;User ID=sa;Password=48PYX_h7KS@f;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | //è·¨å |
| | | "Cors": { |
| | |
| | | const id=rows[0].id |
| | | |
| | | // è¿éæ·»å ä½ çä¸å¡é»è¾ |
| | | this.http.post(`/api/CabinOrder/FinishInOrder?key${id}`).then((x) => { |
| | | this.http.post(`/api/CabinOrder/FinishInOrder?key=${id}`).then((x) => { |
| | | if (x.status) { |
| | | this.$Message.success('æä½æå'); |
| | | this.refresh(); |