using JetBrains.Annotations; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using NUglify.Helpers; using Seyounth.Auto.Hs.Runtime.Plc; using Seyounth.Auto.Hs.Runtime.Printer; using Syc.Abp.Application.Contracts; using Syc.Basic.Web.WMS.Dto; using Syc.Basic.Web.WMS.Entitys; using Syc.Basic.Web.WMS.IService; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; using System.Text; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Repositories; namespace Syc.Basic.Web.WMS.Service { [AllowAnonymous] public class BoxService : ApiService, IBoxService, ITransientDependency { private readonly IRepository boxRepository; private readonly IRepository produceRepository; private readonly IRepository silkRepository; private readonly IPlcService plcService; private readonly ILogger logger; private readonly IPrinterService printerService; public BoxService(IRepository boxRepository,IRepository produceRepository,IRepository silkRepository,IPlcService plcService, ILogger logger,IPrinterService printerService) { this.boxRepository = boxRepository; this.produceRepository = produceRepository; this.silkRepository = silkRepository; this.plcService = plcService; this.logger = logger; this.printerService = printerService; } /// /// 查询纸箱 /// /// /// [HttpPost] public async Task> GetBoxList(BoxInput input) { var boxlist = await boxRepository.GetQueryableAsync(); boxlist = boxlist.Where(x => x.IsDelete == 0); if (input.Lot_No != null) boxlist = boxlist.Where(x => x.Lot_No.Contains(input.Lot_No)); if (input.Spec != null) boxlist = boxlist.Where(x => x.Spec.Contains(input.Spec)); var result = boxlist.PageResult(input.Page, input.PageSize); var data = result.Queryable.Select(e => new BoxDto() { Length = e.Length, Net_Weight = e.Net_Weight, Qty = e.Qty, Id = e.Id, Code = e.Code, Dom_Time = e.Dom_Time, Exp_Time = e.Exp_Time.ToString(), Lot_No = e.Lot_No, Spec = e.Spec, Gross_Weight = e.Gross_Weight, Type = e.Type }).ToList(); PageOutput pageOutput = new PageOutput(); pageOutput.Total = boxlist.Count(); pageOutput.Data = data.OrderByDescending(x=>x.Id); pageOutput.PageIndex = input.Page; pageOutput.PageSize=input.PageSize; return pageOutput; } /// /// 查询数量纸箱 /// /// /// [HttpGet] public async Task> GetBoxByNum() { var produce=await produceRepository.FirstOrDefaultAsync(x=>x.IfUse==1); var silks = await silkRepository.GetListAsync(x=>x.Status==1||x.Status==0); var boxlist = await boxRepository.GetQueryableAsync(); boxlist = boxlist.Where(x => x.IsDelete == 0); var data = boxlist.Select(e => new BoxDto() { Net_Weight = e.Net_Weight, Id = e.Id, Code = e.Code }).ToList(); return data.OrderByDescending(x => x.Id).ToList().Take(1).ToList(); } /// /// 添加纸箱 /// /// /// [HttpPost] public async Task InsertBox(BoxDto input) { if (await boxRepository.AnyAsync(x => x.Code == input.Code)) throw Oops.Oh("条码已存在,不允许添加"); var boxs = await boxRepository.GetListAsync(e => e.IsUse); if (boxs.Any()) { boxs.ForEach(e => e.IsUse = false); await boxRepository.UpdateManyAsync(boxs); } var box = new Box() { Dom_Time = DateTime.Now, Exp_Time = string.IsNullOrWhiteSpace(input.Exp_Time) ? null : Convert.ToDateTime(input.Exp_Time), Qty = input.Qty, Length = input.Length, Lot_No = input.Lot_No, Code = input.Code, Net_Weight = input.Net_Weight, Spec = input.Spec, IsUse = true, IsDelete = 0 }; var entity= await boxRepository.InsertAsync(box,true); string content = "#!A1" + "\r\n#N13" + "\r\n#PC1017/0" + "\r\n#IMR104/130" + //"\r\n#HV50" + "\r\n#PR6//" + "\r\n#PO0" + "\r\n#ERNC/1//0.00" + "\r\n#R0/0" + "\r\n#T7.28 #J11.17 #FD/1/L #SS100/BVUN/51X68/0 #VW/L/\"YuLinHengShenXinCaiLiaoYouXianGongSi\"#G" + "\r\n#T13.37 #J40.30 #FD/1/L #SS100/BVUN/46X62/0 #VW/L/\"Yulin Hengshen COLtd\"#G" + "\r\n#T52.15 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"TYPE " + box.Type + "\"#G" + "\r\n#T67.39 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"QTY/PCS " + box.Qty + "\"#G" + "\r\n#T82.63 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"LOT NO. " + box.Lot_No + "\"#G" + "\r\n#T98.97 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"DOM. " + box.Dom_Time.ToString() + "\"#G" + "\r\n#T52.15 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"SPEC " + box.Spec + "\"#G" + "\r\n#T67.39 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"CTY./NO. " + box.Net_Weight + "\"#G" + "\r\n#T81.19 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"LENGTH " + box.Length + "\"#G" + "\r\n#T98.21 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"EXP. " + box.Exp_Time.ToString() + "\"#G" + "\r\n#T41.06 #J6.68 #FD/1/L #SB13/ONKP2.0/20.82/5 #VW/L/\"" + box.Code + "\"#G" + "\r\n#Q1#G\r\n#!P1\r\n"; await printerService.PrintAsync(2, content); } /// /// 打印纸箱 /// /// /// [HttpPost] public async Task PrintBox(DelInput input) { var box = await boxRepository.FirstOrDefaultAsync(x=>x.Id==input.id); string content = "#!A1" + "\r\n#N13" + "\r\n#PC1017/0" + "\r\n#IMR104/130" + //"\r\n#HV50" + "\r\n#PR6//" + "\r\n#PO0" + "\r\n#ERNC/1//0.00" + "\r\n#R0/0" + "\r\n#T7.28 #J11.17 #FD/1/L #SS100/BVUN/51X68/0 #VW/L/\"YuLinHengShenXinCaiLiaoYouXianGongSi\"#G" + "\r\n#T13.37 #J40.30 #FD/1/L #SS100/BVUN/46X62/0 #VW/L/\"Yulin Hengshen COLtd\"#G" + "\r\n#T52.15 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"TYPE " + box.Type + "\"#G" + "\r\n#T67.39 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"QTY/PCS " + box.Qty + "\"#G" + "\r\n#T82.63 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"LOT NO. " + box.Lot_No + "\"#G" + "\r\n#T98.97 #J9.14 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"DOM. " + box.Dom_Time.ToString() + "\"#G" + "\r\n#T52.15 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"SPEC " + box.Spec + "\"#G" + "\r\n#T67.39 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"CTY./NO. " + box.Net_Weight + "\"#G" + "\r\n#T81.19 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"LENGTH " + box.Length + "\"#G" + "\r\n#T98.21 #J69.25 #FD/1/L #SS100/BVUN/47X63/0 #VW/L/\"EXP. " + box.Exp_Time.ToString() + "\"#G" + "\r\n#T41.06 #J6.68 #FD/1/L #SB13/ONKP2.0/20.82/5 #VW/L/\"" + box.Code + "\"#G" + "\r\n#Q1#G\r\n#!P1\r\n"; await printerService.PrintAsync(2, content); } /// /// 修改纸箱 /// /// /// [HttpPost] public async Task UpdateBox(BoxDto input) { var box = await boxRepository.FirstOrDefaultAsync(x => x.Id == input.Id); box.Spec = input.Spec; box.Length = input.Length; box.Code = input.Code; box.Lot_No = input.Lot_No; box.Net_Weight = input.Net_Weight; box.Dom_Time = DateTime.Now; box.Qty = input.Qty; box.Exp_Time = string.IsNullOrWhiteSpace(input.Exp_Time) ? null : Convert.ToDateTime(input.Exp_Time); await boxRepository.UpdateAsync(box); } /// /// 删除纸箱 /// /// /// [HttpPost] public async Task DeleteBox(DelInput input) { var box = await boxRepository.FirstOrDefaultAsync(x => x.Id == input.id); if (box == null) throw Oops.Oh("删除失败,数据为空"); box.IsDelete = 1; await boxRepository.UpdateAsync(box); } /// /// 批量删除纸箱 /// /// /// [HttpPost] public async Task DeletesBoxs(DelInput input) { var boxs = await boxRepository.GetListAsync(x => input.ids.Contains(x.Id)); if (boxs.Count == 0) throw Oops.Oh("删除失败,数据为空"); for(var i = 0; i < boxs.Count; i++) { boxs[i].IsDelete = 1; } await boxRepository.UpdateManyAsync(boxs); } /// /// 设置热缩机温度 /// /// public async Task SetTemperature(ByIdInput input) { await plcService.SetTemperatureAsync(input.Id); } /// /// 设置热缩机温度 /// /// public async Task GetTemperature() { return await plcService.GetTemperatureAsync(); } } }