using System.Dynamic; using Masuit.Tools.Win32.AntiVirus; using Microsoft.AspNetCore.Mvc; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using NewPdaSqlServer.service.@base; using NewPdaSqlServer.service.Warehouse; using NewPdaSqlServer.util; namespace NewPdaSqlServer.Controllers.Warehouse; /// /// 生产补料相关接口 /// [Route("api/[controller]")] [ApiController] public class MesItemBlController : ControllerBase { private readonly MesItemBlManager _manager = new(); private readonly MesPrintMangeer _mCf = new(); /***进入模版管理可以修改模版***/ /// /// 获取所有 /// /// [HttpPost("GetList")] public ResponseResult GetList() { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.GetList(); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 根据主键获取 /// /// [HttpPost("GetById")] public ResponseResult GetById(int id) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.GetById(id); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 根据主键删除 /// /// [HttpPost("DeleteByIds")] public ResponseResult DeleteByIds([FromBody] object[] ids) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.DeleteByIds(ids); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 添加 /// /// [HttpPost("Insert")] public ResponseResult Add([FromBody] MesItemBl data) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.Insert(data); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 添加返回自增 /// /// [HttpPost("InsertReturnIdentity")] public ResponseResult InsertReturnIdentity([FromBody] MesItemBl data) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.InsertReturnIdentity(data); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 修改 /// /// [HttpPost("Update")] public ResponseResult Update([FromBody] MesItemBl data) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.Update(data); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 生产补料单条码拆分 /// /// 查询参数 /// 拆分结果和待处理列表 /// /// 请求示例: /// POST /api/MesItemBl/SplitBarcode /// { /// "billNo": "WO202401010001", // 工单号(必填) /// "barcode": "BC001", // 条码号(必填) /// "userName": "admin", // 用户名(必填) /// "blNo": "BL202401010001", // 补料单号(必填) /// "Num": 10 // 拆分数量(必填,必须大于0) /// } /// 业务处理: /// - 验证补料单状态 /// - 验证条码库存信息 /// - 验证拆分数量是否合理 /// - 执行条码拆分事务处理 /// - 更新工单和补料单相关数量 /// 返回数据包含: /// - success: 拆分是否成功 /// - pendingList: 待处理明细列表,包含: /// * Bld012: 物料ID /// * Bld002: 物料编号 /// * Bld003: 物料名称 /// * Bld004: 物料规格 /// * Bld007: 计划数量 /// * Bld008: 已补数量 /// /// 拆分成功 /// 拆分失败,返回具体错误信息 [HttpPost("SplitBarcode")] public ResponseResult SplitBarcode([FromBody] WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = new ExpandoObject(); resultInfos.tbBillList.printInfo = _mCf.getPrintInfo(query); var scanResult = _manager.SplitBarcode(query); resultInfos.tbBillList.cfBarInfo = _mCf.getCfInfo(scanResult); //resultInfos.success = success; //resultInfos.pendingList = pendingList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } #region 生产补料 /// /// 获取生产补料单号列表 /// /// 补料单号列表 /// 成功获取补料单号列表 /// 获取失败 [HttpPost("GetSCBLBillNo")] public ResponseResult GetSCBLBillNo(WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.GetSCBLBillNo(query); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 根据单号获取生产补料单明细 /// /// 查询参数,必须包含billNo /// 补料单明细列表 /// /// 请求示例: /// POST /api/MesItemBl/GetMesItemBlDetailByBillNo /// { /// "billNo": "BL202401010001" /// } /// /// 成功获取补料单明细 /// 获取失败,可能是单据号不存在或已完成 [HttpPost("GetMesItemBlDetailByBillNo")] public ResponseResult GetMesItemBlDetailByBillNo( [FromBody] WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.GetMesItemBlDetailByBillNo(query); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 扫描条码 /// /// 查询参数 /// 扫描结果和待处理列表 /// /// 请求示例: /// POST /api/MesItemBl/SctlScanBarcode /// { /// "billNo": "WO202401010001", /// "barcode": "1234567890", /// "userName": "admin", /// "blNo": "BL202401010001" /// } /// /// 扫描成功 /// 扫描失败,返回具体错误信息 [HttpPost("ScblScanBarcode")] public ResponseResult ScblScanBarcode([FromBody] WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); var (success, pendingList) = _manager.ScblScanBarcode(query); resultInfos.success = success; resultInfos.pendingList = pendingList; if(success.status == 2) { return new ResponseResult { status = Convert.ToInt32(success.status), message = success.message, data = resultInfos.success }; } return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } #endregion #region 生产超领 /// /// 获取生产超领单号列表 /// /// 超领单号列表 /// 成功获取超领单号列表 /// 获取失败 [HttpPost("GetSccList")] public ResponseResult GetSccList(WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.GetSccList(query); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 获取生产超领单明细 /// /// 查询参数,必须包含billNo /// 超领单明细列表 /// /// 请求示例: /// POST /api/MesItemBl/GetMesItemBlDetailBySccBillNo /// { /// "billNo": "SC202401010001" /// } /// /// 成功获取超领单明细 /// 获取失败,返回具体错误信息 [HttpPost("GetMesItemBlDetailBySccBillNo")] public ResponseResult GetMesItemBlDetailBySccBillNo( [FromBody] WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.GetMesItemBlDetailBySccBillNo(query); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 生产超领扫描条码1 /// /// 查询参数 /// 扫描结果和待处理列表 /// /// 请求示例: /// POST /api/MesItemBl/ScanBarcodeForOverPicking /// { /// "billNo": "WO202401010001", /// "barcode": "1234567890", /// "userName": "admin", /// "blNo": "SC202401010001" /// } /// /// 扫描成功 /// 扫描失败,返回具体错误信息 [HttpPost("ScanBarcodeForOverPicking")] public ResponseResult ScanBarcodeForOverPicking( [FromBody] WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); var (success, pendingList) = _manager.ScanBarcodeForOverPicking(query); resultInfos.success = success; resultInfos.pendingList = pendingList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } [HttpPost("PrintBarcodeForOverPicking")] public ResponseResult PrintForOverPicking(WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); var (success, pendingList) = _manager.PrintBarcodeForOverPicking(query); resultInfos.success = success; resultInfos.pendingList = pendingList; return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } /// /// 根据单号获取生产补料单明细 /// /// 查询参数,必须包含billNo /// 补料单明细列表 /// /// 请求示例: /// POST /api/MesItemBl/GetMesItemBlDetailByBillNo /// { /// "billNo": "BL202401010001" /// } /// /// 成功获取补料单明细 /// 获取失败,可能是单据号不存在或已完成 [HttpPost("GetMesItemWWBlDetailByBillNo")] public ResponseResult GetMesItemWWBlDetailByBillNo( [FromBody] WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); resultInfos.tbBillList = _manager.GetMesItemWWBlDetailByBillNo(query); return new ResponseResult { status = 0, message = "OK", data = resultInfos }; } catch (Exception ex) { return ResponseResult.ResponseError(ex); } } #endregion }