265 lines
11 KiB
C#
265 lines
11 KiB
C#
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<Box> boxRepository;
|
|
private readonly IRepository<Produce> produceRepository;
|
|
private readonly IRepository<Silk> silkRepository;
|
|
private readonly IPlcService plcService;
|
|
private readonly ILogger<BoxService> logger;
|
|
private readonly IPrinterService printerService;
|
|
|
|
public BoxService(IRepository<Box> boxRepository,IRepository<Produce> produceRepository,IRepository<Silk> silkRepository,IPlcService plcService, ILogger<BoxService> logger,IPrinterService printerService)
|
|
{
|
|
this.boxRepository = boxRepository;
|
|
this.produceRepository = produceRepository;
|
|
this.silkRepository = silkRepository;
|
|
this.plcService = plcService;
|
|
this.logger = logger;
|
|
this.printerService = printerService;
|
|
}
|
|
/// <summary>
|
|
/// 查询纸箱
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpPost]
|
|
public async Task<PageOutput<BoxDto>> 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<BoxDto> pageOutput = new PageOutput<BoxDto>();
|
|
pageOutput.Total = boxlist.Count();
|
|
pageOutput.Data = data.OrderByDescending(x=>x.Id);
|
|
pageOutput.PageIndex = input.Page;
|
|
pageOutput.PageSize=input.PageSize;
|
|
return pageOutput;
|
|
}
|
|
/// <summary>
|
|
/// 查询数量纸箱
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpGet]
|
|
public async Task<List<BoxDto>> 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();
|
|
}
|
|
/// <summary>
|
|
/// 添加纸箱
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[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);
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打印纸箱
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[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);
|
|
|
|
}
|
|
/// <summary>
|
|
/// 修改纸箱
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[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);
|
|
}
|
|
/// <summary>
|
|
/// 删除纸箱
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 批量删除纸箱
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置热缩机温度
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task SetTemperature(ByIdInput<short> input)
|
|
{
|
|
await plcService.SetTemperatureAsync(input.Id);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置热缩机温度
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task<int> GetTemperature()
|
|
{
|
|
return await plcService.GetTemperatureAsync();
|
|
}
|
|
}
|
|
}
|