123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- using AutoMapper;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using Newtonsoft.Json;
- using wms.dto;
- using wms.dto.request;
- using wms.dto.request.cp;
- using wms.dto.response;
- using wms.dto.response.cp;
- using wms.service.IService;
- using wms.sqlsugar.model.cp;
- using wms.util.Ext;
- namespace wms.api.Controllers
- {
- [Route("api/[controller]/[action]")]
- [ApiController]
- public class CpController : BaseController
- {
- private readonly ICPService _cpService;
- private readonly ILogger<CpController> _logger;
- private readonly IMapper _mapper;
- static object lockerSalesDocTrans = new object();
- static object lockerSalesBackDocTrans = new object();
- static object lockerComPushApiResInfo = new object();
- static object lockerStockChange = new object();
- static object lockerStockStateChange = new object();
-
- public CpController(ICPService cpService, ILogger<CpController> logger, IMapper mapper) : base(cpService)
- {
- _cpService = cpService;
- _logger = logger;
- _mapper = mapper;
- }
- /// <summary>
- /// 同步物料基础信息
- /// </summary>
- /// <param name="reqDto"></param>
- /// <returns></returns>
- [HttpPost]
- public string SyncMaterInfo(SyncMaterInfoRequest reqBody)
- {
- var result = new SRes();
- //_logger.LogInformation("请求参数:{@reqBody},{aa}", reqBody,1);
- CPSyncMaterInfoResponse resbody = JsonConvert.DeserializeObject<CPSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
- if (reqBody.SyncType == 1)
- {
- reqBody.PageIndex = 1;
- while (resbody.ResData.Any())
- {
- _cpService.SyncMaterInfo(resbody.ResData);
- reqBody.PageIndex++;
- resbody = JsonConvert.DeserializeObject<CPSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
- }
- }
- else if (reqBody.SyncType == 2)
- {
- //拿到增量
- var increconf = _cpService.GetSysConfigByCode(Const.MESMaterialInitIncrement);
- if (increconf != null)
- {
- reqBody.StartTime = DateTime.Parse(increconf.SContent);
- //reqBody.Count = int.Parse(increconf.Remark);
- resbody = JsonConvert.DeserializeObject<CPSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
- if (resbody.ResData.Any())
- {
- if (_cpService.SyncMaterInfo(resbody.ResData))
- {
- var lastdata = resbody.ResData.OrderBy(p => p.UpdatedTime).Last();
- _cpService.UpdateSysConfigModelColumns(new sqlsugar.model.UpdateModelColumns<cpSysConfig>()
- {
- Columns = it => new cpSysConfig { SContent = lastdata.UpdatedTime.ToString("yyyy-MM-dd HH:mm:ss.fff") },
- WhereExpression = it => it.Code == Const.MESMaterialInitIncrement
- });
- }
- }
- else
- {
- result.ResCode = ResponseStatusCodeEnum.NoResult.GetHashCode();
- result.ResMsg = ResponseStatusCodeEnum.NoResult.GetDescription();
- }
- }
- else
- {
- result.ResCode = ResponseStatusCodeEnum.AccountError.GetHashCode();
- result.ResMsg = "没有配置信息" + Const.MESMaterialInitIncrement;
- }
- }
- else
- {
- if (!string.IsNullOrEmpty(reqBody.MatCode))
- {
- resbody = JsonConvert.DeserializeObject<CPSyncMaterInfoResponse>(WmsServiceExportApi(reqBody));
- if (resbody.ResData.Any())
- {
- if (_cpService.SyncMaterInfo(resbody.ResData))
- {
- }
- }
- }
- }
- return result.ToCamelCaseString();
- }
- /// <summary>
- /// 销售单信息传输接口
- /// </summary>
- /// <param name="reqDto"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes SalesDocTrans(SalesDocTransRequest reqDto)
- {
- return ConcurrencyReqControl<SalesDocTransRequest, SRes>(lockerSalesDocTrans, "SalesDocTrans" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.SalesDocTrans);
- }
- /// <summary>
- /// 销售出库信息反馈接口
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes SalesDocTransFeedBack(string doccode)
- {
- var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
- var dtolist = _mapper.Map<List<SalesDocTransFeedBackRequest>>(list);
- //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist };
- SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
- return resbody;
- }
- /// <summary>
- /// 退售单信息传输接口
- /// </summary>
- /// <param name="reqDto"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes SalesBackDocTrans(SalesDocTransRequest reqDto)
- {
- return ConcurrencyReqControl<SalesDocTransRequest, SRes>(lockerSalesBackDocTrans, "SalesBackDocTrans" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.SalesBackDocTrans);
- }
- /// <summary>
- /// 销售退货入库信息反馈接口
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes SalesBackDocTransFeedBack(string doccode)
- {
- var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
- var dtolist = _mapper.Map<List<SalesDocTransFeedBackRequest>>(list);
- //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist };
- SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
- return resbody;
- }
- /// <summary>
- /// 销售余料回库入库信息反馈接口
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes SalesLeftDocTransFeedBack(string doccode)
- {
- var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
- var dtolist = _mapper.Map<List<SalesLeftDocTransFeedBackRequest>>(list);
- //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist };
- SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
- return resbody;
- }
- /// <summary>
- /// 接收回馈接口
- /// </summary>
- /// <param name="reqDto"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes ComPushApiResInfo(ComPushApiResInfoRequest reqDto)
- {
- return ConcurrencyReqControl<ComPushApiResInfoRequest, SRes>(lockerComPushApiResInfo, "ComPushApiResInfo" + reqDto.ApiId, reqDto.ApiId, reqDto, _cpService.ComPushApiResInfo);
- }
- /// <summary>
- /// 呆滞料/异常料出库接口
- /// </summary>
- /// <param name="reqDto"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes ErrorMaterialStockOut(ErrorMaterialStockOutRequest reqDto)
- {
- return ConcurrencyReqControl<ErrorMaterialStockOutRequest, SRes>(lockerComPushApiResInfo, "ErrorMaterialStockOut" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.ErrorMaterialStockOut);
- }
- /// <summary>
- /// 呆滞料_异常料出库反馈接口
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes ErrorMaterialStockOutFeedBack(string doccode)
- {
- var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
- var dtolist = _mapper.Map<List<ErrorMaterialStockOutFeedBackRequest>>(list);
- //var dto = new SalesDocTransFeedBackRequest() { ListInfo = dtolist };
- SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
- return resbody;
- }
- /// <summary>
- /// 库存改判
- /// </summary>
- /// <param name="reqDto"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes StockChange(CpStockChangeRequest reqDto)
- {
- return ConcurrencyReqControl<CpStockChangeRequest, SRes>(lockerStockChange, "StockChange" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.StockChange);
- }
- /// <summary>
- /// 改判反馈接口
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes StockChangeFeedBack(string doccode)
- {
- var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
- var dtolist = _mapper.Map<List<StockChangeFeedBackRequestItem>>(list);
- var dto = new StockChangeFeedBackRequest() { ListInfo = dtolist };
- SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dto));
- return resbody;
- }
- /// <summary>
- /// 实时库存查询接口
- /// </summary>
- /// <param name="reqDto"></param>
- /// <returns></returns>
- [HttpPost]
- public string GetCurStockList(string reqDto)
- {
- return null;
- }
- /// <summary>
- /// 移库货位上报MES接口
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpPost]
- public SRes MoveStockLocationFeedBack(string doccode)
- {
- var list = _cpService.GetBillFeedbackList(p => p.BillCode == doccode);
- var dtolist = _mapper.Map<MoveStockLocationFeedBackRequest>(list);
- //var dto = new MoveStockLocationFeedBackRequest() { ListInfo = dtolist };
- SRes resbody = JsonConvert.DeserializeObject<SRes>(WmsServiceExportApi(dtolist));
- return resbody;
- }
- /// <summary>
- /// 放行/冻结单传输接口
- /// </summary>
- /// <param name="reqDto"></param>
- /// <returns></returns>
- [HttpPost]
- public StockStateChangeResponse StockStateChange(StockStateChangeRequest reqDto)
- {
- return ConcurrencyReqControl<StockStateChangeRequest, StockStateChangeResponse>(lockerStockStateChange, "StockStateChange" + reqDto.BillCode, reqDto.BillCode, reqDto, _cpService.StockStateChange);
- }
- }
- }
|