diff --git a/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs
index d64fbec0..1c2ed6e1 100644
--- a/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs
+++ b/BasicData/Tnb.BasicData.Entities/Consts/CodeTemplateConst.cs
@@ -94,6 +94,10 @@ namespace Tnb.BasicData
/// /模具保养
///
public const string MOLDMAINTENANCE_CODE = "MoldMaintenance";
+ ///
+ /// 质量暂控处理单
+ ///
+ public const string QCCONTROLTEMP_CODE = "QcControlTempH";
}
}
\ No newline at end of file
diff --git a/BasicData/Tnb.BasicData/BasLocationService.cs b/BasicData/Tnb.BasicData/BasLocationService.cs
index af13f6d3..e5115062 100644
--- a/BasicData/Tnb.BasicData/BasLocationService.cs
+++ b/BasicData/Tnb.BasicData/BasLocationService.cs
@@ -1,5 +1,6 @@
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
+using JNPF.FriendlyException;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using Tnb.BasicData.Entities;
@@ -48,5 +49,37 @@ namespace Tnb.BasicData
List items = await _db.Queryable().Where(it => locIds.Contains(it.id)).ToListAsync();
return items;
}
+
+
+
+ ///
+ /// 根据库位编码,清空库位
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task ModifyClearLocation(Dictionary dic)
+ {
+ try
+ {
+ var location_code = dic["code"].ToString();
+ if (string.IsNullOrEmpty(location_code))
+ throw Oops.Bah("库位编码不能为空");
+
+ var location = await _db.Queryable().Where(r => r.location_code == location_code).FirstAsync();
+ if (location == null)
+ throw Oops.Bah($"库位编号{location_code}不存在");
+ await _db.Ado.BeginTranAsync();
+ //把状态改为空闲
+ await _db.Updateable().SetColumns(r => r.is_use == "0").Where(r=>r.id==location.id).ExecuteCommandAsync();
+ await _db.Ado.CommitTranAsync();
+ }
+ catch(Exception e)
+ {
+ await _db.Ado.RollbackTranAsync();
+ throw Oops.Bah(e.Message);
+ }
+ return "成功";
+ }
}
}
diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTaskDefectRecordD.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTaskDefectRecordD.cs
new file mode 100644
index 00000000..26bca0db
--- /dev/null
+++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTaskDefectRecordD.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.ProductionMgr.Entities.Entity
+{
+ ///
+ /// 生产报废记录子表
+ ///
+ [SugarTable("prd_mo_task_defect_record_d")]
+ public partial class PrdMoTaskDefectRecordD:BaseEntity
+ {
+ public PrdMoTaskDefectRecordD()
+ {
+ id=SnowflakeIdHelper.NextId();
+ }
+ ///
+ /// 主表id
+ ///
+ public string bill_id { get; set; }
+
+ ///
+ /// 来源单据id
+ ///
+ public string source_id { get; set; }
+ ///
+ /// 料箱id
+ ///
+ public string carry_id { get; set; }
+ ///
+ /// 料箱code
+ ///
+ public string carry_code { get; set; }
+ ///
+ /// 报废数量
+ ///
+ public string scrap_qty { get; set; }
+ ///
+ /// 提报人
+ ///
+ public string submiter_id { get;set; }
+ ///
+ /// 处理人
+ ///
+ public string maker_id { get; set; }
+ ///
+ /// 处理时间
+ ///
+ public DateTime? make_time { get;set; }
+ }
+}
diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
index 89b1b690..a8b22004 100644
--- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
+++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
@@ -2758,6 +2758,7 @@ namespace Tnb.ProductionMgr
}
catch (Exception e)
{
+ await db.Ado.RollbackTranAsync();
Log.Error("提报入库任务下发失败:"+e.Message, e);
throw new Exception("提报入库任务下发失败:"+e.Message);
}
diff --git a/QcMgr/Tnb.QcMgr.Entities/Dto/CheckTask.cs b/QcMgr/Tnb.QcMgr.Entities/Dto/CheckTask.cs
index 899f8751..8e3dd535 100644
--- a/QcMgr/Tnb.QcMgr.Entities/Dto/CheckTask.cs
+++ b/QcMgr/Tnb.QcMgr.Entities/Dto/CheckTask.cs
@@ -220,7 +220,7 @@
public List>? checktypes { get; set; }
- public CheckCarry carryInfo { get; set; }
+ public List carryInfo { get; set; }
}
public class Checktype
{
diff --git a/QcMgr/Tnb.QcMgr.Entities/Dto/QcTempControlHOutput.cs b/QcMgr/Tnb.QcMgr.Entities/Dto/QcTempControlHOutput.cs
index 1e995ac5..f3d4fa4c 100644
--- a/QcMgr/Tnb.QcMgr.Entities/Dto/QcTempControlHOutput.cs
+++ b/QcMgr/Tnb.QcMgr.Entities/Dto/QcTempControlHOutput.cs
@@ -281,10 +281,23 @@ namespace Tnb.QcMgr.Entities.Dto
/// 单位
///
public string unit_code { get; set; }
+
+ }
+
+ public class QcTempControlPickQualifiedQtyOutput
+ {
///
/// 暂控数量
///
- public decimal? control_qty { get; set; }
+ public string temp_control_qty { get; set; }
+ ///
+ /// 合格数量
+ ///
+ public string qualified_qty { get; set; }
+ ///
+ /// 不合格数量
+ ///
+ public string unQualified_qty { get; set; }
}
}
diff --git a/QcMgr/Tnb.QcMgr.Entities/Entity/QcTempControlD.cs b/QcMgr/Tnb.QcMgr.Entities/Entity/QcTempControlD.cs
new file mode 100644
index 00000000..a0507bd0
--- /dev/null
+++ b/QcMgr/Tnb.QcMgr.Entities/Entity/QcTempControlD.cs
@@ -0,0 +1,103 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.QcMgr.Entities.Entity
+{
+ ///
+ /// 质量暂控处理子表
+ ///
+ [SugarTable("qc_temp_control_d")]
+ public partial class QcTempControlD:BaseEntity
+ {
+ public QcTempControlD() {
+ id=SnowflakeIdHelper.NextId();
+ }
+
+ ///
+ /// 暂控表单id
+ ///
+ public string bill_id { get;set; }
+ ///
+ /// 载具id
+ ///
+ public string carry_id { get; set; }
+ ///
+ /// 载具编号
+ ///
+ public string carry_code { get;set; }
+ ///
+ /// 仓库id
+ ///
+ public string warehouse_id { get; set; }
+ ///
+ /// 仓库编号
+ ///
+ public string warehouse_code { get; set; }
+ ///
+ /// 库位id
+ ///
+ public string location_id { get; set; }
+ ///
+ /// 库位编号
+ ///
+ public string location_code { get;set; }
+ ///
+ /// 数量
+ ///
+ public string qty { get; set; }
+ ///
+ /// 提报人
+ ///
+ public string submiter { get; set; }
+ ///
+ /// 处理人id
+ ///
+ public string maker_id { get; set; }
+ ///
+ /// 创建人id
+ ///
+ public string create_id { get; set; }
+ ///
+ /// 创建时间
+ ///
+ public DateTime? create_time { get; set;}
+ ///
+ /// 修改人id
+ ///
+ public string modify_id { get; set; }
+ ///
+ /// 修改时间
+ ///
+ public DateTime? modify_time { get; set; }
+ ///
+ /// 检验状态(暂控,让步接收)
+ ///
+ public string check_status { get;set; }
+ ///
+ /// 呼叫状态
+ ///
+ public string call_status { get; set; }
+ ///
+ /// 不合格数量
+ ///
+ public string unqualified_qty { get; set; }
+ ///
+ /// 合格数量
+ ///
+ public string qualified_qty { get; set; }
+ ///
+ /// 挑选状态(未挑选,已挑选)
+ ///
+ public string pick_status { get; set; }
+ ///
+ /// 暂控料入库预任务id
+ ///
+ public string pre_task_id { get;set; }
+ }
+}
diff --git a/QcMgr/Tnb.QcMgr.Entities/Entity/QcTempControlH.cs b/QcMgr/Tnb.QcMgr.Entities/Entity/QcTempControlH.cs
new file mode 100644
index 00000000..1502dd4d
--- /dev/null
+++ b/QcMgr/Tnb.QcMgr.Entities/Entity/QcTempControlH.cs
@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using JNPF.Common.Contracts;
+using JNPF.Common.Security;
+using SqlSugar;
+
+namespace Tnb.QcMgr.Entities.Entity
+{
+ ///
+ /// 质量暂控处理单主表
+ ///
+ [SugarTable("qc_temp_control_h")]
+ public partial class QcTempControlH:BaseEntity
+ {
+ public QcTempControlH() {
+ id = SnowflakeIdHelper.NextId();
+ }
+ ///
+ /// 单据编号
+ ///
+ public string bill_code { get; set; }
+ ///
+ /// 来源单据编号
+ ///
+ public string source_code { get; set; }
+ ///
+ /// 生产任务单号
+ ///
+ public string pro_task_code { get; set; }
+ ///
+ /// 出库仓库id
+ ///
+ public string out_warehouse_id { get; set;}
+ ///
+ /// 入库仓库id
+ ///
+ public string in_warehouse_id { get; set;}
+ ///
+ /// 物料id
+ ///
+ public string material_id { get; set; }
+ ///
+ /// 物料名称
+ ///
+ public string material_code { get; set; }
+ ///
+ /// 暂控料箱数
+ ///
+ public string control_lx_qty { get; set; }
+ ///
+ /// 暂控数量
+ ///
+ public string control_qty { get;set; }
+ ///
+ /// 结论(暂控,让步接收)
+ ///
+ public string result { get; set; }
+ ///
+ /// 记录人id
+ ///
+ public string loger_id { get; set; }
+ ///
+ /// 确认人id
+ ///
+ public string confirmer_id { get; set; }
+ ///
+ /// 状态
+ ///
+ public string status { get; set; }
+ ///
+ /// 已呼叫箱数
+ ///
+ public string called_box_qty { get;set; }
+ ///
+ /// 已呼叫数量
+ ///
+ public string called_qty { get; set; }
+ ///
+ /// 剩余呼叫箱数
+ ///
+ public string leave_call_box_qty { get; set; }
+ ///
+ /// 剩余呼叫数量
+ ///
+ public string leave_call_qty { get; set; }
+
+ public string create_id { get; set; }
+ public DateTime? create_time { get; set; }
+
+ public string modify_id { get; set; }
+
+ public DateTime? modify_time { get; set; }
+ }
+}
diff --git a/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTempControlStatus.cs b/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTempControlStatus.cs
new file mode 100644
index 00000000..81b10e0c
--- /dev/null
+++ b/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTempControlStatus.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tnb.QcMgr.Entities.Enums
+{
+ ///
+ /// 暂控处理单状态
+ ///
+ public enum EnumTempControlStatus
+ {
+ 待确认=1,
+ 待下发=2,
+ 已下发=3,
+ 执行中=4,
+ 已同步=5
+ }
+}
diff --git a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs
index f26f2e7a..52d0f5e5 100644
--- a/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs
+++ b/QcMgr/Tnb.QcMgr/QcCheckTaskService.cs
@@ -29,6 +29,11 @@ using Tnb.WarehouseMgr.Entities.Enums;
using Tnb.ProductionMgr.Entities.Dto.PrdManage;
using Tnb.WarehouseMgr.Entities;
using JNPF.Common.Extension;
+using Tnb.QcMgr.Entities.Entity;
+using Tnb.BasicData;
+using JNPF.Systems.Interfaces.System;
+using NPOI.SS.Formula.Functions;
+using Tnb.QcMgr.Entities.Enums;
namespace Tnb.QcMgr
{
@@ -46,13 +51,15 @@ namespace Tnb.QcMgr
private readonly IWmsSaleService _wmsSaleService;
private readonly IWmsPurchaseService _wmsPurchaseService;
private readonly IPrdMoTaskService _prdMoTaskService;
+ private readonly IBillRullService _billRullService;
private static SemaphoreSlim prdreportSemaphore = new(1);
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
public QcCheckTaskService(ISqlSugarRepository repository,
IUserManager userManager,
IWmsSaleService wmsSaleService,
IPrdMoTaskService prdMoTaskService,
- IWmsPurchaseService wmsPurchaseService)
+ IWmsPurchaseService wmsPurchaseService,
+ IBillRullService billRullService)
{
_repository = repository;
_userManager = userManager;
@@ -60,6 +67,7 @@ namespace Tnb.QcMgr
_wmsSaleService= wmsSaleService;
_prdMoTaskService = prdMoTaskService;
_wmsPurchaseService= wmsPurchaseService;
+ _billRullService = billRullService;
}
private async Task GetListAsync(VisualDevModelListQueryInput input)
@@ -259,6 +267,7 @@ namespace Tnb.QcMgr
[HttpPost]
public async Task SaveData(CheckTaskInput CheckTaskInput)
{
+ //CheckTaskInput.startEndTime = new long[] { 1730084456000, 1730170856000 };
await prdreportSemaphore.WaitAsync();
ISqlSugarClient db = _repository.AsSugarClient();
try
@@ -289,7 +298,7 @@ namespace Tnb.QcMgr
#region 质检结论不合格, 需要记录暂控时间区间,并且记录载具信息
if (CheckTaskInput.result == "no")//质检结论不合格,记录暂控时间
{
- if(CheckTaskInput.startEndTime==null || CheckTaskInput.startEndTime.Length <= 1)
+ if (CheckTaskInput.startEndTime == null || CheckTaskInput.startEndTime.Length <= 1)
{
throw Oops.Bah("不合格时,请选择时间区间");
}
@@ -315,10 +324,10 @@ namespace Tnb.QcMgr
{
foreach (ExecItemInput item in exextype.items)
{
- if (item.postItemForm == null)
- {
- throw Oops.Oh("执行失败");
- }
+ //if (item.postItemForm == null)
+ //{
+ // throw Oops.Oh("执行失败");
+ //}
QcCheckExecD? QcCheckExecD = QcCheckExecDs.Where(p => p.id == item.itemdid).FirstOrDefault();
if (QcCheckExecD == null)
@@ -376,6 +385,8 @@ namespace Tnb.QcMgr
.SetColumns(x => x.attachment == QcCheckExecH.attachment)
.SetColumns(x => x.qty == QcCheckExecH.qty)
.SetColumns(x => x.rqty == QcCheckExecH.rqty)
+ .SetColumns(x => x.control_start_time == QcCheckExecH.control_start_time)
+ .SetColumns(x => x.control_end_time == QcCheckExecH.control_end_time)
.Where(x => x.id == CheckTaskInput.mainid)
.ExecuteCommandAsync();
_ = await db.Deleteable(QcCheckExecDdel).ExecuteCommandAsync();
@@ -395,9 +406,10 @@ namespace Tnb.QcMgr
mesCheckdCallbackUpinput.maintableid = QcCheckExecH.extras;
mesCheckdCallbackUpinput.check_conclusion = dic.Where(p => p.Key == CheckTaskInput.result).Any() ? dic.Where(p => p.Key == CheckTaskInput.result).First().Value : 0;
await _wmsPurchaseService.MesCheckdPurchaseCallback(mesCheckdCallbackUpinput);
- }else if (QcCheckExecH.checktype == WmsWareHouseConst.LINGBUJIANZUIZHONGJIANYAN_ID)
+ }
+ else if (QcCheckExecH.checktype == WmsWareHouseConst.LINGBUJIANZUIZHONGJIANYAN_ID)
{
- PrdReport prdReport = await db.Queryable().SingleAsync(x=>x.id==QcCheckExecH.report_id);
+ PrdReport prdReport = await db.Queryable().SingleAsync(x => x.id == QcCheckExecH.report_id);
decimal pqty = prdReport.reported_qty.Value - rqty;
if (rqty > Decimal.Parse(QcCheckExecH.checknum))
{
@@ -411,18 +423,19 @@ namespace Tnb.QcMgr
.SetColumns(x => x.is_check == isCheck)
.Where(x => x.carry_code == prdReport.material_box_code)
.ExecuteCommandAsync();
-
+
await _prdMoTaskService.ReportInstock(new CheckCompleteInput()
{
report_id = QcCheckExecH.report_id,
pqty = pqty,
rqty = rqty,
check_result = ((EnumCheckConclusion)dic[CheckTaskInput.result]).ToString(),
- },prdReport,db);
+ }, prdReport, db);
}
- }else if (QcCheckExecH.checktype == WmsWareHouseConst.XUNJIAN_ID || QcCheckExecH.checktype == WmsWareHouseConst.SHOUJIAN_ID || QcCheckExecH.checktype == WmsWareHouseConst.MOJIAN_ID )
+ }
+ else if (QcCheckExecH.checktype == WmsWareHouseConst.XUNJIAN_ID || QcCheckExecH.checktype == WmsWareHouseConst.SHOUJIAN_ID || QcCheckExecH.checktype == WmsWareHouseConst.MOJIAN_ID)
{
- PrdMoTask prdMoTask = await db.Queryable().Where(x=>x.mo_task_code==QcCheckExecH.mo_task_code && x.id!=null).FirstAsync();
+ PrdMoTask prdMoTask = await db.Queryable().Where(x => x.mo_task_code == QcCheckExecH.mo_task_code && x.id != null).FirstAsync();
if (CheckTaskInput.result == "no")
{
string pauseReason = QcCheckExecH.checktype == WmsWareHouseConst.XUNJIAN_ID ? "巡检不合格" : QcCheckExecH.checktype == WmsWareHouseConst.SHOUJIAN_ID ? "首检不合格" : "末检不合格";
@@ -431,57 +444,186 @@ namespace Tnb.QcMgr
TaskIds = NPOI.Util.Arrays.AsList(prdMoTask.id),
Behavior = "Pause",
PauseReeson = pauseReason
- },db);
- await _prdMoTaskService.SelfTestScrapped2(new SelfTestScrappedInput()
+ }, db);
+
+ #region 没看懂逻辑,暂时注释
+ //await _prdMoTaskService.SelfTestScrapped2(new SelfTestScrappedInput()
+ //{
+ // mo_task_id = prdMoTask.id,
+ // scrap_qty = rqty,
+ // remark = "抽样不合格报废",
+ // categoryItems = new List()
+ // {
+ // new SelfTestScrappedInputItem()
+ // {
+ // category_id = "25574005966629",
+ // items = new List()
+ // {
+ // new defectItem()
+ // {
+ // defective_item = "抽样不合格报废",
+ // defective_item_qty = rqty
+ // }
+ // }
+ // }
+ // }
+ //}, db);
+ #endregion
+
+ //载具需要在中储仓和暂存仓才需要暂控
+ List prdReports = await db.Queryable().LeftJoin((a, b) => a.material_box_code == b.carry_code).LeftJoin((a, b, c) => b.location_id == c.id).LeftJoin((a, b, c, d) => c.wh_id == d.id).Where((a, b, c, d) => a.mo_task_id == prdMoTask.id && a.create_time >= CheckTaskInput.startEndTime[0].TimeStampToDateTime() && a.create_time <= CheckTaskInput.startEndTime[1].TimeStampToDateTime() && (c.wh_id == WmsWareHouseConst.WAREHOUSE_ZC_ID || c.wh_id == WmsWareHouseConst.WAREHOUSE_ZCC_ID)).ToListAsync();
+ if (prdReports != null)
{
- mo_task_id = prdMoTask.id,
- scrap_qty = rqty,
- remark = "抽样不合格报废",
- categoryItems = new List()
+ var carryCodes = prdReports.Select(r => r.material_box_code).Distinct().ToList();
+ if (carryCodes != null && carryCodes.Count > 0)
{
- new SelfTestScrappedInputItem()
+ await db.Updateable()
+ .SetColumns(x => x.is_check == ((int)EnumCheckConclusion.暂控).ToString())
+ .SetColumns(x => x.carry_status == "6")//把料架状态改为退料状态,会自动触发把料架上的子载具从二楼暂存仓退回一楼中储仓任务
+ .Where(x => carryCodes.Contains(x.carry_code))
+ .ExecuteCommandAsync();
+
+ #region 记录被暂控的载具信息
+ //var qcCheckExecCarrys = new List();
+ //foreach(var carryCode in carryCodes)
+ //{
+ // var wmsCarryH = await db.Queryable().Where(r => r.carry_code == carryCode).FirstAsync();
+ // if (wmsCarryH == null)
+ // continue;
+
+ // WmsCarryCode wmsCarryCode = await db.Queryable().FirstAsync(x => x.carry_id == wmsCarryH.id);
+ // BasLocation basLocation = await db.Queryable().Where(r => r.location_code == wmsCarryH.location_code).FirstAsync();
+ // WmsCarryMat wmsCarryMat = await db.Queryable().Where(r => r.carry_id == wmsCarryH.id).FirstAsync();
+
+ // var qcCheckExecCarry = new QcCheckExecCarry()
+ // {
+ // qc_check_exec_id = QcCheckExecH.id,
+ // carry_id = wmsCarryH.id,
+ // carry_code = wmsCarryH.carry_code,
+ // warehouse_id = basLocation != null ? basLocation.wh_id : "",
+ // qty = wmsCarryCode != null ? wmsCarryCode.codeqty.ToString() : "",
+ // status = wmsCarryH.is_check,
+ // location_id = basLocation != null ? basLocation.id : "",
+ // location_code = basLocation != null ? basLocation.location_code : "",
+ // material_id= wmsCarryMat?.material_id,
+ // create_id = _userManager.UserId,
+ // create_time = DateTime.Now
+ // };
+ // qcCheckExecCarrys.Add(qcCheckExecCarry);
+ //}
+ //_ = await db.Insertable(qcCheckExecCarrys).ExecuteCommandAsync();
+ #endregion
+
+ #region 记录暂控处理单主/子表信息
+
+ if (carryCodes != null && carryCodes.Count > 0)
{
- category_id = "25574005966629",
- items = new List()
+
+ var basMaterial = await db.Queryable().Where(r => r.id == prdMoTask.material_id).FirstAsync();
+ string outWHid = ""; string inWHid = "";
+ if (basMaterial.category_id.Contains("DGJCJ") || basMaterial.category_id.Contains("ZSJ"))
{
- new defectItem()
- {
- defective_item = "抽样不合格报废",
- defective_item_qty = rqty
- }
+ outWHid = WmsWareHouseConst.WAREHOUSE_ZC_ID;
+ inWHid = "中储不合格品仓id";
}
+ else if (basMaterial.category_id.Contains("CGJCJ"))
+ {
+ outWHid = WmsWareHouseConst.WAREHOUSE_HCC_ID;
+ inWHid = "长管不合格品仓id";
+ }
+
+ var carryIds = await db.Queryable().Where(r => carryCodes.Contains(r.carry_code)).Select(r => r.id).ToListAsync();
+ var wmsCarryCodes = await db.Queryable().Where(r => carryIds.Contains(r.carry_id) && r.material_id == QcCheckExecH.materialid).ToListAsync();
+ var codeQty = wmsCarryCodes == null ? 0 : wmsCarryCodes.Sum(r => r.codeqty);
+ var qcTempControlH = new QcTempControlH()
+ {
+ id = SnowflakeIdHelper.NextId(),
+ bill_code = await _billRullService.GetBillNumber(CodeTemplateConst.QCCONTROLTEMP_CODE),
+ source_code = QcCheckExecH.bill_code,
+ pro_task_code = QcCheckExecH.mo_task_code,
+ out_warehouse_id = outWHid,
+ in_warehouse_id = inWHid,
+ material_id = QcCheckExecH.materialid,
+ material_code = basMaterial.code,
+ control_lx_qty = carryCodes.Count.ToString(),
+ control_qty = codeQty.ToString(),
+ result = "暂控",
+ loger_id = _userManager.UserId,
+ confirmer_id = "",
+ status = ((int)EnumTempControlStatus.待确认).ToString(),
+ called_box_qty = "0",
+ called_qty = "0",
+ leave_call_box_qty = carryCodes.Count.ToString(),
+ leave_call_qty = codeQty.ToString(),
+ create_id = _userManager.UserId,
+ create_time = DateTime.Now,
+ };
+
+ await db.Insertable(qcTempControlH).ExecuteCommandAsync();
+
+ var qcTempControlDs = new List();
+ foreach (var carryCode in carryCodes)
+ {
+ var wmsCarryH = await db.Queryable().Where(r => r.carry_code == carryCode).FirstAsync();
+ if (wmsCarryH == null)
+ continue;
+
+ WmsCarryCode wmsCarryCode = await db.Queryable().FirstAsync(x => x.carry_id == wmsCarryH.id);
+ BasLocation basLocation = await db.Queryable().Where(r => r.location_code == wmsCarryH.location_code).FirstAsync();
+ if (basLocation == null)
+ throw Oops.Bah($"未找到编号为{wmsCarryH.location_code}的库位");
+ WmsCarryMat wmsCarryMat = await db.Queryable().Where(r => r.carry_id == wmsCarryH.id).FirstAsync();
+ BasWarehouse basWarehouse = await db.Queryable().Where(r => r.id == basLocation.wh_id).FirstAsync();
+ var _prdReports = prdReports.Where(r => r.material_box_code == carryCode).First();
+ var qcTempConD = new QcTempControlD()
+ {
+ bill_id = qcTempControlH.id,
+ carry_id = wmsCarryH.id,
+ carry_code = carryCode,
+ warehouse_id = basLocation?.wh_id,
+ warehouse_code = basWarehouse.whcode,
+ location_code = basLocation?.location_code,
+ location_id = basLocation?.id,
+ qty = wmsCarryCode?.codeqty.ToString(),
+ submiter = _prdReports == null ? null : _prdReports.create_id,
+ maker_id = "",
+ create_id = _userManager.UserId,
+ create_time = DateTime.Now,
+ check_status = "暂控",
+ call_status = "未呼叫"
+ };
+ qcTempControlDs.Add(qcTempConD);
+ }
+ await db.Insertable(qcTempControlDs).ExecuteCommandAsync();
}
+ #endregion
}
- },db);
- List carryCodes = await db.Queryable().Where(x=>x.mo_task_id==prdMoTask.id).Select(x=>x.material_box_code).Distinct().ToListAsync();
- await db.Updateable()
- .SetColumns(x => x.is_check == ((int)EnumCheckConclusion.暂控).ToString())
- .Where(x => carryCodes.Contains(x.carry_code))
- .ExecuteCommandAsync();
- }
- else
- {
- //末检自动完工
- if (QcCheckExecH.checktype == WmsWareHouseConst.MOJIAN_ID)
+ }
+ else
{
- await _prdMoTaskService.PrdTaskRelease2(new PrdTaskReleaseUpInput()
+ //末检自动完工
+ if (QcCheckExecH.checktype == WmsWareHouseConst.MOJIAN_ID)
{
- TaskIds = NPOI.Util.Arrays.AsList(prdMoTask.id),
- Behavior = "Compled",
- },db);
+ await _prdMoTaskService.PrdTaskRelease2(new PrdTaskReleaseUpInput()
+ {
+ TaskIds = NPOI.Util.Arrays.AsList(prdMoTask.id),
+ Behavior = "Compled",
+ }, db);
+ }
}
}
- }
- await db.Ado.CommitTranAsync();
+ await db.Ado.CommitTranAsync();
+ }
}
catch (Exception e)
{
await db.Ado.RollbackTranAsync();
- Log.Error(e.Message,e);
- throw Oops.Oh("执行失败:"+e.Message);
+ JNPF.Logging.Log.Error(e.Message, e);
+ throw Oops.Oh("执行失败:" + e.Message);
}
- finally{
+ finally
+ {
prdreportSemaphore.Release();
}
}
@@ -531,21 +673,43 @@ namespace Tnb.QcMgr
attachment = a.attachment,
}).FirstAsync();
Result.checktypes = new List>();
- if (!string.IsNullOrEmpty(QcCheckExecH.carry_code))
- {
- WmsCarryH carryH = await db.Queryable().FirstAsync(x => x.carry_code == QcCheckExecH.carry_code);
- WmsCarryCode carryCode = await db.Queryable().FirstAsync(x => x.carry_id == carryH.id);
- string materialId = carryCode?.id ?? "";
- BasMaterial basMaterial = await db.Queryable().SingleAsync(x=>x.id==materialId);
- Result.carryInfo = new CheckCarry()
- {
- carry_name = carryH.carry_name,
- location_id = carryH.location_id,
- location_code = carryH.location_code,
- material_name = basMaterial?.name,
- qty = carryCode?.codeqty ?? 0,
- };
- }
+
+ //var qcCheckExecCarrys = await db.Queryable().Where(r => r.qc_check_exec_id == QcCheckExecH.id).ToListAsync();
+ //if(qcCheckExecCarrys!=null && qcCheckExecCarrys.Count > 0)
+ //{
+ // var checkCarrys = new List();
+ // foreach(var acec in qcCheckExecCarrys)
+ // {
+ // WmsCarryH carryH = await db.Queryable().FirstAsync(x => x.id == acec.carry_id);
+ // BasMaterial basMaterial = await db.Queryable().SingleAsync(x => x.id == acec.material_id);
+ // var carry = new CheckCarry()
+ // {
+ // carry_name = carryH.carry_name,
+ // location_id = acec.location_id,
+ // location_code = acec.location_code,
+ // material_name = basMaterial?.name,
+ // qty = string.IsNullOrEmpty(acec.qty) ? 0 : Convert.ToDecimal(acec.qty),
+ // is_check=acec.status
+ // };
+ // checkCarrys.Add(carry);
+ // }
+ // Result.carryInfo= checkCarrys;
+ //}
+ //if (!string.IsNullOrEmpty(QcCheckExecH.carry_code))
+ //{
+ // WmsCarryH carryH = await db.Queryable().FirstAsync(x => x.carry_code == QcCheckExecH.carry_code);
+ // WmsCarryCode carryCode = await db.Queryable().FirstAsync(x => x.carry_id == carryH.id);
+ // string materialId = carryCode?.id ?? "";
+ // BasMaterial basMaterial = await db.Queryable().SingleAsync(x=>x.id==materialId);
+ // Result.carryInfo = new CheckCarry()
+ // {
+ // carry_name = carryH.carry_name,
+ // location_id = carryH.location_id,
+ // location_code = carryH.location_code,
+ // material_name = basMaterial?.name,
+ // qty = carryCode?.codeqty ?? 0,
+ // };
+ //}
List groupkeys = QcCheckExecDs.Select(p => p.checkindex).Distinct().ToList();
foreach (string? key in groupkeys)
{
diff --git a/QcMgr/Tnb.QcMgr/QcTempControlHService.cs b/QcMgr/Tnb.QcMgr/QcTempControlHService.cs
new file mode 100644
index 00000000..0825c587
--- /dev/null
+++ b/QcMgr/Tnb.QcMgr/QcTempControlHService.cs
@@ -0,0 +1,721 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using Aop.Api.Domain;
+using DingTalk.Api.Request;
+using JNPF.Common.Core.Manager;
+using JNPF.Common.Extension;
+using JNPF.Common.Filter;
+using JNPF.Common.Security;
+using JNPF.DependencyInjection;
+using JNPF.DynamicApiController;
+using JNPF.FriendlyException;
+using JNPF.Logging;
+using JNPF.Systems.Entitys.System;
+using JNPF.Systems.Interfaces.System;
+using JNPF.VisualDev;
+using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.ClearScript.JavaScript;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json.Linq;
+using SqlSugar;
+using Tnb.BasicData.Entities;
+using Tnb.EquipMgr.Entities;
+using Tnb.ProductionMgr.Entities;
+using Tnb.ProductionMgr.Entities.Entity;
+using Tnb.QcMgr.Entities;
+using Tnb.QcMgr.Entities.Dto;
+using Tnb.QcMgr.Entities.Entity;
+using Tnb.QcMgr.Entities.Enums;
+using Tnb.WarehouseMgr;
+using Tnb.WarehouseMgr.Entities;
+using Tnb.WarehouseMgr.Entities.Consts;
+using Tnb.WarehouseMgr.Entities.Dto;
+using Tnb.WarehouseMgr.Entities.Enums;
+using Tnb.WarehouseMgr.Interfaces;
+
+namespace Tnb.QcMgr
+{
+ [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 800)]
+ [Route("api/[area]/[controller]/[action]")]
+ public class QcTempControlHService : BaseWareHouseService, IDynamicApiController, ITransient
+ {
+ private readonly ISqlSugarRepository _repository;
+ private readonly IUserManager _userManager;
+ private readonly IWareHouseService _wareHouseService;
+ private readonly IBillRullService _billRullService;
+ private readonly ISqlSugarClient _db;
+ public QcTempControlHService(ISqlSugarRepository repository, IUserManager userManager, IWareHouseService wareHouseService,IBillRullService billRullService)
+ {
+ _db = repository.AsSugarClient();
+ _userManager = userManager;
+ _wareHouseService = wareHouseService;
+ _billRullService = billRullService;
+ }
+
+
+ ///
+ /// 获取质检暂控处理单
+ ///
+ ///
+
+ [HttpPost]
+ public async Task