22
schangxiang@126.com
2025-05-19 9a8168790e0d6b8601b0f7f5557976358677eeb1
22
已添加1个文件
已修改6个文件
299 ■■■■ 文件已修改
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryPick/Models/Service/PipeAccessoryPick.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryPick/Views/Pages/PipeAccessoryPick/PipeAccessoryPick.tsx 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/PickInput.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/PickOutput.cs 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryPick/Models/Service/PipeAccessoryPick.ts
@@ -62,6 +62,11 @@
  return request.post('/api/v1/PipeLineLems/WorkPlan/FindSingleByFilter', data)
}
export const getPickRet = (data: any) => {
  return request.post('/api/v1/PipeLineLems/WorkPlanPublic/getPickRet', data)
}
/**
 * æ ¹æ® ä»»åŠ¡ç¼–å·è¿›è¡Œå¼€å·¥
 * @returns
PipeLineLems/pipelinelems_web/src/widgets/PipeAccessoryPick/Views/Pages/PipeAccessoryPick/PipeAccessoryPick.tsx
@@ -17,9 +17,8 @@
  getPlaceNoForStockList,
  getMaterialModelList,
  instock,
  findSingleWorkPlanByFilter,
  pick,
  finishProduction
  getPickRet,
  pick
} from '@/widgets/PipeAccessoryPick/Models/Service/PipeAccessoryPick'
import { Message } from '@element-plus/icons-vue/dist/types'
@@ -30,6 +29,7 @@
const queryForm = ref({
  pipeSpecCode: '',
  continerNo:'',
  placeNo:'',
  processRouteNumber: '',
  taskCode: '',
  length: '',
@@ -104,12 +104,13 @@
        processName:'装配工序',
        processName_FilterMode:2,//精准查询
      }
      const workPlan = await findSingleWorkPlanByFilter(param);
      const workPlan = await getPickRet(param);
      console.log('返回:'+workPlan);
      if(workPlan==''){
      if(workPlan.code!="200"){
        ElMessage.error('没有找到数据'); 
        queryForm.value ={ pipeSpecCode: '',
          continerNo:'',
          placeNo:'',
          processRouteNumber: '',
          taskCode: '',
          length: '',
@@ -124,7 +125,10 @@
          processName: '',
          equipmentCode: ''}
      }else{
        queryForm.value=workPlan;
        queryForm.value=workPlan.data.workPlan;
        queryForm.value.placeNo=workPlan.data.placeNo;
        queryForm.value.continerNo=workPlan.data.continerNo;
      }
    };
@@ -146,40 +150,44 @@
                const param={
                  pipeSpecCode:queryForm.value.pipeSpecCode,
                  continerNo:queryForm.value.continerNo,
                  placeNo:queryForm.value.placeNo
                };
                const ret = await pick(param);
      console.log('返回:'+ret);
                if(ret.code="200"){
                if(ret.code=="200"){
                  ElMessage.success('分拣成功'); 
                }else{
                  ElMessage.error('分拣失败:'+ret.message); 
                }
              }) 
    } 
    // å®Œå·¥äº‹ä»¶å¤„理
    const finishWork = () => {
      console.log('执行开工操作');
      if(queryForm.value.pipeSpecCode==''){
        ElMessage.error('请输入管段编码');
        return
      }
      ConfirmBox(
                `确定要将管段编码${queryForm.value.pipeSpecCode}完工吗`
              ).then(async () => {
                //您的业务逻辑
                const param={
                  pipeSpecCode:queryForm.value.pipeSpecCode,
                  processName:queryForm.value.processName,
                };
                const ret = await finishProduction(param);
      console.log('返回:'+ret);
                if(ret.code="200"){
                  ElMessage.success('完工成功');
                }else{
                  ElMessage.error('完工失败:'+ret.message);
                }
              })
    }
    // // å®Œå·¥äº‹ä»¶å¤„理
    // const finishWork = () => {
    //   console.log('执行开工操作');
    //   if(queryForm.value.pipeSpecCode==''){
    //     ElMessage.error('请输入管段编码');
    //     return
    //   }
    //   ConfirmBox(
    //             `确定要将管段编码${queryForm.value.pipeSpecCode}完工吗`
    //           ).then(async () => {
    //             //您的业务逻辑
    //             const param={
    //               pipeSpecCode:queryForm.value.pipeSpecCode,
    //               processName:queryForm.value.processName,
    //             };
    //             const ret = await finishProduction(param);
    //   console.log('返回:'+ret);
    //             if(ret.code="200"){
    //               ElMessage.success('完工成功');
    //             }else{
    //               ElMessage.error('完工失败:'+ret.message);
    //             }
    //           })
    // }
    const tableData = ref([
      { sequence: 1, flangeA: 'RF-200-1.6MPa', flangeB: 'WN-200-1.6MPa' },
      { sequence: 2, flangeA: 'WN-250-2.5MPa', flangeB: 'SO-250-2.5MPa' },
@@ -215,6 +223,13 @@
                    class={styles.formInput}
                  />
                </ElFormItem>
                <ElFormItem label="库位号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;">
                  <ElInput
                    v-model={queryForm.value.placeNo}
                    clearable
                    class={styles.formInput}
                  />
                </ElFormItem>
          <div class={styles.actionButtons}>
            <ElButton type="warning" onClick={startWork}>分拣</ElButton>
            {/* <ElButton type="warning" onClick={finishWork}>完工</ElButton> */}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/PickInput.cs
@@ -23,6 +23,11 @@
        /// </summary>
        public string ContinerNo { get; set; }
        /// <summary>
        /// åº“位号
        /// </summary>
        public string PlaceNo { get; set; }
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application.Contracts/Dtos/WorkPlan/PickOutput.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan
{
    /// <summary>
    /// åˆ†æ‹£è¾“出参数模型
    /// </summary>
    [Serializable]
    public class PickOutput
    {
        public WorkPlanDto WorkPlan { get; set; }
        /// <summary>
        /// åˆ†æ‹£æ‰˜ç›˜å·
        /// </summary>
        public string ContinerNo { get; set; }
        /// <summary>
        /// åº“位号
        /// </summary>
        public string PlaceNo { get; set; }
    }
}
PipeLineLems/server/src/CMS.Plugin.PipeLineLems.Application/Implements/SharedService.cs
@@ -31,6 +31,7 @@
using CMS.Plugin.HIAWms.Abstractions;
using Newtonsoft.Json;
using CmsQueryExtensions;
using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialStocks;
namespace CMS.Plugin.PipeLineLems.Application.Implements;
@@ -62,6 +63,7 @@
        //3、写入 åˆ†æ‹£å˜é‡
        //4、写入追溯报表
        //5、物料组盘
        VariableService _variableService = _serviceProvider.GetRequiredService<VariableService>();
        var _workSectionManager = _serviceProvider.GetRequiredService<IWorkSectionManager>();
@@ -112,8 +114,47 @@
        var firstWorkPlans = await workPlanAppService.GetListByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode);
        var firstWorkPlan = await workPlanAppService.GetSingleByFilterAsync(x => x.PipeSpecCode == input.PipeSpecCode);
        var callMaterialOrder = await callMaterialOrderAppService.GetSingleByFilterAsync(x => x.DataIdentifier == firstWorkPlan.DataIdentifier);
        //TODO:这里调用wms的叫料接口
        try
        {
            WmsMaterialStockCreateDto param = new WmsMaterialStockCreateDto()
            {
                ContainerNo = input.ContinerNo,
                MaterialModel = firstWorkPlan.MaterialMode,
                PlaceNo = input.PlaceNo,
                StockNumber = 1,
                MaterialBatch = callMaterialOrder.MaterialBatch,
                RedundantField1 = firstWorkPlan.ProcessRouteNumber //扩展字段显示 å·¥è‰ºæµå‘编号
            };
            string baseUrl = @"http://127.0.0.1:18000/api/v1/HIAWms/";
            string url = baseUrl + "LMesOperate/LMesPick";
            string json = JsonConvert.SerializeObject(param);
            var result = HttpApiRequest.HttpPost(url, json);
            var res = JsonConvert.DeserializeObject<CmsApiResponse<WmsMaterialStockDto>>(result);
            if (res.Code == 200)
            {
                var retData = res.Data;
                //callMaterialOrder.MaterialBatch = retData[0].MaterialBatch;
                //callMaterialOrder.WmsTaskNo = retData[0].TaskNo;
                //callMaterialOrder.WmsRetResult = res.Message;
            }
            else
            {
                throw new UserFriendlyException(res.Message);
            }
        }
        catch (Exception)
        {
            throw;
        }
        var rawPipe_DataIdentifier = await materialProvider.FindByNameAsync("原料管标识");
        var rawPipe_MaterialMode = await materialProvider.FindByNameAsync("原料管型号");
@@ -1021,6 +1062,95 @@
    }
    /// <summary>
    /// åˆ†æ‹£æ—¶èŽ·å–ç”Ÿäº§è®¡åˆ’å’Œåˆ†é…åŒºåŸŸ
    /// </summary>
    /// <param name="input"></param>
    /// <param name="_serviceProvider"></param>
    /// <param name="myCurrentUser"></param>
    /// <returns></returns>
    /// <exception cref="UserFriendlyException"></exception>
    public async Task<CmsApiResponse<PickOutput>> GetPickRetAsync(GetWorkPlanInput input, IServiceProvider _serviceProvider, MyCurrentUser myCurrentUser)
    {
        var callMaterialOrderRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRepository>();
        var workPlanRepository = _serviceProvider.GetRequiredService<IWorkPlanRepository>();
        var _workPlanAppService = _serviceProvider.GetRequiredService<IWorkPlanAppService>();
        var callMaterialOrderRecordRepository = _serviceProvider.GetRequiredService<ICallMaterialOrderRecordRepository>();
        var orderManager = _serviceProvider.GetRequiredService<IOrderManager>();
        // æŸ¥æ‰¾æ•°æ®
        WorkPlanDto workPlanDto = await _workPlanAppService.FindSingleByFilterAsync(input);
        //TODO:这里调用wms的叫料接口
        try
        {
            List<LMesCallMaterialInput> param = new List<LMesCallMaterialInput>() {
             new LMesCallMaterialInput(){
             }
        };
            /*
            string baseUrl = @"http://127.0.0.1:18000/api/v1/HIAWms/";
            string url = baseUrl + "lMesOperate/LMesCallMaterial";
            string json = JsonConvert.SerializeObject(param);
            var result = HttpApiRequest.HttpPost(url, json);
            var res = JsonConvert.DeserializeObject<CmsApiResponse<List<MyCallMaterialOutput>>>(result);
            if (res.Code == 200)
            {
                var retData = res.Data;
                //callMaterialOrder.MaterialBatch = retData[0].MaterialBatch;
                //callMaterialOrder.WmsTaskNo = retData[0].TaskNo;
                //callMaterialOrder.WmsRetResult = res.Message;
                var data = new PickOutput()
                {
                    WorkPlan = workPlanDto,
                    PlaceNo = "",//待赋值
                    ContinerNo = ""//待赋值
                };
                var response = new CmsApiResponse<PickOutput>
                {
                    Code = 200,
                    Data = data,
                    Message = "处理成功",
                };
                return response;
            }
            else
            {
                throw new UserFriendlyException(res.Message);
            }
            //*/
            //模拟
            var data = new PickOutput()
            {
                WorkPlan = workPlanDto,
                PlaceNo = "",//待赋值
                ContinerNo = ""//待赋值
            };
            var response = new CmsApiResponse<PickOutput>
            {
                Code = 200,
                Data = data,
                Message = "处理成功",
            };
            return response;
        }
        catch (Exception)
        {
            throw;
        }
    }
    /// <summary>
    /// ç”Ÿæˆéšæœºçš„WmsTaskNo
    /// </summary>
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanController.cs
@@ -71,7 +71,7 @@
        /// <returns></returns> 
        [HttpPost]
        [Route("FindListByFilter")]
        public virtual async Task<List<WorkPlanDto>> FindListByFilterAsync(GetWorkPlanInput input)
        public virtual async Task<List<WorkPlanDto>> FindListByFilterAsync([FromBody]GetWorkPlanInput input)
        {
            return await _workPlanAppService.FindListByFilterAsync(input);
        }
@@ -82,7 +82,7 @@
        /// <returns></returns> 
        [HttpPost]
        [Route("FindSingleByFilter")]
        public virtual async Task<WorkPlanDto> FindSingleByFilterAsync(GetWorkPlanInput input)
        public virtual async Task<WorkPlanDto> FindSingleByFilterAsync([FromBody] GetWorkPlanInput input)
        {
            return await _workPlanAppService.FindSingleByFilterAsync(input);
PipeLineLems/server/src/CMS.Plugin.PipeLineLems/Controller/WorkPlanPublicController.cs
@@ -2,6 +2,7 @@
using CMS.Framework.AspNetCore.Users;
using CMS.Plugin.PipeLineLems.Application.Contracts.Dtos.WorkPlan;
using CMS.Plugin.PipeLineLems.Application.Contracts.Services;
using CMS.Plugin.PipeLineLems.Application.Implements;
using CmsQueryExtensions.Entitys;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
@@ -20,7 +21,7 @@
    [Route("api/v{version:apiVersion}/PipeLineLems/[controller]")]
    public class WorkPlanPublicController : ControllerBase
    {
        private readonly IWorkPlanAppService _workPlanAppService;
        private readonly IMesAppService _mesAppService;
        private readonly ICurrentUser _currentUser;
        private readonly Application.Implements.SharedService sharedService;
@@ -31,12 +32,13 @@
        /// </summary>
        /// <param name="testentitynameAppService">The testentityname application service.</param>
        public WorkPlanPublicController(IMesAppService mesAppService, ICurrentUser currentUser, Application.Implements.SharedService _sharedService,
            IServiceProvider serviceProvider)
            IServiceProvider serviceProvider, IWorkPlanAppService workPlanAppService)
        {
            _mesAppService = mesAppService;
            _currentUser = currentUser;
            sharedService = _sharedService;
            _serviceProvider = serviceProvider;
            _workPlanAppService = workPlanAppService;
        }
        /// <summary>
@@ -166,5 +168,44 @@
                };
            }
        }
        /// <summary>
        /// åˆ†æ‹£æ—¶èŽ·å–ç”Ÿäº§è®¡åˆ’å’Œåˆ†é…åŒºåŸŸ
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("GetPickRet")]
        public virtual async Task<CmsApiResponse<PickOutput>> GetPickRetAsync([FromBody] GetWorkPlanInput input)
        {
            //WorkPlanDto workPlanDto = await _workPlanAppService.FindSingleByFilterAsync(input);
            ////这里要获取wms的库存,来分析 è¦æ”¾åˆ°å“ªä¸ªæ‰˜ç›˜é‡Œ
            //return new PickOutput()
            //{
            //    WorkPlan = workPlanDto,
            //    PlaceNo = "",
            //    ContinerNo = ""
            //};
            try
            {
                MyCurrentUser myCurrentUser = new MyCurrentUser()
                {
                    UserAccount = _currentUser.UserAccount,
                    UserId = _currentUser.UserId
                };
                return await sharedService.GetPickRetAsync(input, _serviceProvider, myCurrentUser);
            }
            catch (Exception ex)
            {
                return new CmsApiResponse<PickOutput>()
                {
                    Code = 400,
                    Message = ex.Message
                };
            }
        }
    }
}