分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-05-14 25be6fbad7853391a52d3a56752cd1c308c2dfd0
添加AGV任务删除功能
已修改8个文件
188 ■■■■ 文件已修改
代码管理/WMS/WMS_Client/src/api/http.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Client/src/views/Task/widesea_wms/taskinfo/dt_agvtask.vue 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Client/src/views/dialog/addTask.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Client/src/views/extension/widesea_wms/taskinfo/dt_agvtask.js 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_Entity/DomainModels/Taskinfo/dt_agvtask.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WMS/IServices/Taskinfo/Partial/Idt_agvtaskService.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WMS/Services/Taskinfo/Partial/dt_agvtaskService.cs 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WMS/Partial/dt_agvtaskController.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
´úÂë¹ÜÀí/WMS/WMS_Client/src/api/http.js
@@ -12,7 +12,7 @@
let loadingInstance;
let loadingStatus = false;
if (process.env.NODE_ENV == 'development') {
    axios.defaults.baseURL = 'http://127.0.0.1:8098/';
    axios.defaults.baseURL = 'http://192.168.12.101:8098/';
}
else if (process.env.NODE_ENV == 'debug') {
    axios.defaults.baseURL = 'http://192.168.12.101:8098/';
´úÂë¹ÜÀí/WMS/WMS_Client/src/views/Task/widesea_wms/taskinfo/dt_agvtask.vue
@@ -22,7 +22,7 @@
    export default defineComponent({
        setup() {
            const table = ref({
                key: 'ID',
                key: 'agv_id',
                footer: "Foots",
                cnName: 'AGV任务',
                name: 'taskinfo/dt_agvtask',
@@ -30,23 +30,24 @@
                sortName: "ID"
            });
            const editFormFields = ref({"agv_fromaddress":"","agv_toaddress":"","agv_tasktype":"","agv_grades":"","agv_code":""});
            const editFormOptions = ref([[{
        title: "NG下料位",
        required: false,
        field: "agv_fromaddress",
        type: "select",
        data: [
          { key: "X01001003", value: "1单元NG下料位" },
          { key: "X02001003", value: "2单元NG下料位" },
          { key: "X03001002", value: "3单元NG下料位" }
        ]
      },
    //   {"title":"NG下料位","field":"agv_fromaddress","type":"text","required":true}
    ],
            const editFormOptions = ref([
    //             [{
    //     title: "NG下料位",
    //     required: false,
    //     field: "agv_fromaddress",
    //     type: "select",
    //     data: [
    //       { key: "X01001003", value: "1单元NG下料位" },
    //       { key: "X02001003", value: "2单元NG下料位" },
    //       { key: "X03001002", value: "3单元NG下料位" }
    //     ]
    //   },
    // //   {"title":"NG下料位","field":"agv_fromaddress","type":"text","required":true}
    // ],
            
                            //   [{"title":"终点地址","field":"agv_toaddress","type":"text","required":true}],
                            //   [{"dataKey":"task_grade","data":[],"title":"任务等级","required":true,"field":"agv_grade","type":"select"}],
                            //   [{"dataKey":"agv_tasktypes","data":[],"title":"任务类型","required":true,"field":"agv_tasktype","type":"select"}]
                              [{"dataKey":"task_grade","data":[],"title":"任务等级","required":true,"field":"agv_grade","type":"select"}],
                              [{"dataKey":"agv_tasktypes","data":[],"title":"任务类型","required":true,"field":"agv_tasktype","type":"select"}]
                            //   [{"dataKey":"agv_code","data":[],"title":"AGV编号","required":true,"field":"agv_code","type":"select"}]
                            ]);
            const searchFormFields = ref({"agv_tasknum":"","agv_fromaddress":"","agv_toaddress":"","agv_tasktype":[],"agv_taskstate":[],"agv_materielid":"","agv_createtime":"","agv_barcode":"","agv_materbarcode":""});
´úÂë¹ÜÀí/WMS/WMS_Client/src/views/dialog/addTask.vue
@@ -1,6 +1,6 @@
<template>
    <div>
        <vol-box :lazy="true" v-model="detialBox" title="手动移库" :height="350" :width="400" :padding="15">
        <vol-box :lazy="true" v-model="detialBox" title="NG任务" :height="350" :width="400" :padding="15">
            <div>
                <el-form :model="formdata" label-width="120px" :rules="rules" size="mini" ref="ruleFormRef">
                    <!-- <el-form-item label="类型">
@@ -10,18 +10,18 @@
                        </el-radio-group>
                    </el-form-item> -->
                    <el-form-item v-if="inType == 'handle'" label="起始地址" prop="from_address">
                        <el-select v-model="formdata.from_address" clearable filterable placeholder="请选择起始地址">
                            <el-option v-for="item in formAddressList" :label="item.key" :value="item.key" />
                    <el-form-item v-if="inType == 'handle'" label="NG下料位" prop="from_address">
                        <el-select v-model="formdata.from_address" clearable filterable placeholder="请选择NG下料位">
                            <el-option v-for="item in formAddressList" :label="item.value" :value="item.key" />
                        </el-select>
                    </el-form-item>
                    <el-form-item label="目的地址" prop="to_address">
                    <!-- <el-form-item label="目的地址" prop="to_address">
                        <el-select v-model="formdata.to_address" clearable filterable placeholder="请选择目的地址">
                            <el-option v-for="item in toAddressList" :label="item.key" :value="item.key" />
                        </el-select>
                    </el-form-item>
                    </el-form-item> -->
                    <el-form-item label="">
                        <el-button type="primary" @click="onSubmit()" size="mini"> ç¡®è®¤ç§»åº“</el-button>
                        <el-button type="primary" @click="onSubmit()" size="mini"> ç¡®è®¤æ·»åŠ NG任务</el-button>
                    </el-form-item>
                </el-form>
            </div>
@@ -35,17 +35,17 @@
export default {
    components: { "vol-box": VolBox1Vue },
    methods: {},
    created() {
        this.http.post("/api/Sys_Dictionary/GetVueDictionary", ["route_began", "route_end"]).then(x => {
            x.forEach(item => {
                if (item.dicNo == 'route_end') {
                    this.toAddressList = item.data;
                } else if (item.dicNo == 'route_began') {
                    this.formAddressList = item.data;
                }
            })
        })
    },
    // created() {
    //     this.http.post("/api/Sys_Dictionary/GetVueDictionary", ["route_began", "route_end"]).then(x => {
    //         x.forEach(item => {
    //             if (item.dicNo == 'route_end') {
    //                 this.toAddressList = item.data;
    //             } else if (item.dicNo == 'route_began') {
    //                 this.formAddressList = item.data;
    //             }
    //         })
    //     })
    // },
    data() {
        return {
            detialBox: false,
@@ -59,7 +59,11 @@
                from_address: "",
                to_address: ""
            },
            formAddressList: [],
            formAddressList: [
                { key: "X01001003", value: "1单元NG下料位" },
          { key: "X02001003", value: "2单元NG下料位" },
          { key: "X03001002", value: "3单元NG下料位" }
            ],
            toAddressList: []
        };
    },
@@ -68,10 +72,17 @@
            var _this = this;
            this.$refs.ruleFormRef.validate((valid) => {
                if (valid) {
                    _this.http.post("/api/ToMes/AddToFloat3", _this.formdata, "正在添加....").then(x => {
                        if (!x.status) return _this.$Message.error(x.message);
                        _this.$Message.success("添加成功!");
                        _this.refresh();
                    _this.http.post("/api/dt_agvtask/addNgTask", _this.formdata, "正在添加....").then(x => {
                        if (!x.status){
                            _this.detialBox=false;
                            _this.formdata.from_address="";
                             _this.$Message.error(x.message);
                        }else{
                            _this.detialBox=false;
                            _this.formdata.from_address="";
                            _this.$Message.success("添加成功!");
                            window.location.reload();
                        }
                    });
                }
            })
´úÂë¹ÜÀí/WMS/WMS_Client/src/views/extension/widesea_wms/taskinfo/dt_agvtask.js
@@ -6,11 +6,12 @@
**后台操作见:http://v2.volcore.xyz/document/netCoreDev
*****************************************************************************************/
//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
import addTask from "@/views/dialog/addTask"
let extension = {
  components: {
    //查询界面扩展组件
    gridHeader: '',
    gridHeader: addTask,
    gridBody: '',
    gridFooter: '',
    //新建、编辑弹出框扩展组件
@@ -21,6 +22,12 @@
  tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
  buttons: { view: [], box: [], detail: [] }, //扩展的按钮
  methods: {
  //   onClick: function () {
  //     this.add();
  // }
  add(){
    this.$refs.gridHeader.detialBox = true;
  },
     //下面这些方法可以保留也可以删除
    onInit() {  //框架初始化配置前,
        //示例:在按钮的最前面添加一个按钮
@@ -39,7 +46,7 @@
        this.buttons.forEach(x => {
          if(x.value == 'Add')
          {
            x.name = 'NG任务'
            x.name = 'NG任务';
          }
        });
        //示例:设置修改新建、编辑弹出框字段标签的长度
@@ -72,6 +79,9 @@
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    modelOpenAfter(row) {
      // if(this.currentAction=='Add'){
      //   this.editFormFields.agv_fromaddress='xxx';
      // }
      //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
      //(1)判断是编辑还是新建操作: this.currentAction=='Add';
      //(2)给弹出框设置默认值
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_Entity/DomainModels/Taskinfo/dt_agvtask.cs
@@ -33,7 +33,7 @@
        [MaxLength(50)]
        [Column(TypeName = "nvarchar(50)")]
        [Editable(true)]
        [Required(AllowEmptyStrings = false)]
        //[Required(AllowEmptyStrings = false)]
        public string agv_tasknum { get; set; }
        /// <summary>
@@ -81,7 +81,7 @@
        [MaxLength(20)]
        [Column(TypeName = "nvarchar(20)")]
        [Editable(true)]
        [Required(AllowEmptyStrings = false)]
        //[Required(AllowEmptyStrings = false)]
        public string agv_taskstate { get; set; }
        /// <summary>
@@ -134,7 +134,7 @@
        [Display(Name = "创建时间")]
        [Column(TypeName = "datetime")]
        [Editable(true)]
        [Required(AllowEmptyStrings = false)]
        //[Required(AllowEmptyStrings = false)]
        public DateTime agv_createtime { get; set; }
        /// <summary>
@@ -157,8 +157,8 @@
        ///任务类型
        /// </summary>
        [Display(Name = "任务类型")]
        [MaxLength(20)]
        [Column(TypeName = "nvarchar(20)")]
        [MaxLength(50)]
        [Column(TypeName = "nvarchar(50)")]
        [Editable(true)]
        //[Required(AllowEmptyStrings = false)]
        public string agv_tasktype { get; set; }
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/IServices/Taskinfo/Partial/Idt_agvtaskService.cs
@@ -5,9 +5,12 @@
using WIDESEA_Entity.DomainModels;
using WIDESEA_Core.Utilities;
using System.Linq.Expressions;
using WIDESEA_Entity.DomainModels.Mes;
using Microsoft.AspNetCore.Mvc;
namespace WIDESEA_WMS.IServices
{
    public partial interface Idt_agvtaskService
    {
        WebResponseContent addNgTask([FromBody] MesRequestTemp request);
    }
 }
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/Services/Taskinfo/Partial/dt_agvtaskService.cs
@@ -26,6 +26,7 @@
using WIDESEA_Comm.LogInfo;
using StackExchange.Redis;
using WIDESEA_Comm;
using WIDESEA_Entity.DomainModels.Mes;
namespace WIDESEA_WMS.Services
{
@@ -47,6 +48,62 @@
            //base.Init(dbRepository);
        }
        public WebResponseContent addNgTask(MesRequestTemp requestTemp)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                var fromaddress = requestTemp.from_address;
                VOLContext context = new VOLContext();
                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
                IVV_Mes_WorkinfoRepository workinfoRepository = new VV_Mes_WorkinfoRepository(context);
                var station = stationinfoRepository.Find(x => x.stationCode == fromaddress).FirstOrDefault();
                if (_repository.Find(x => x.agv_fromaddress == fromaddress || x.agv_toaddress == fromaddress).Any())
                    throw new Exception($"货位{fromaddress}已存在任务!");
                if (station == null) throw new Exception($"未找到货位{fromaddress}!");
                if (!station.enable) throw new Exception($"货位{fromaddress}未启用!");
                if (station.quantity < 1) throw new Exception($"货位{fromaddress}无车轮!");
                var Work = workinfoRepository.Find(x => x.workOrder == station.Number && x.processCode == "17").FirstOrDefault();
                if (Work == null) throw new Exception($"未找到货位{fromaddress}的机加工工单信息");
                dt_agvtask agvtask = new dt_agvtask()
                {
                    agv_fromaddress = station.stationCode,
                    agv_id = Guid.NewGuid(),
                    agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
                    agv_grade = 2,
                    agv_createtime = DateTime.Now,
                    agv_taskstate = "Queue",
                    agv_materielid = station.stationType,
                    agv_qty = station.quantity,
                    agv_tasktype = "TaskType_OutsourceInbound",
                    agv_toaddress = "",
                    agv_userid = UserContext.Current.UserName,
                    bindSN = station.bindSN,
                    agv_worktype = Convert.ToInt32(Work.processCode),
                    agv_materbarcode = Work.materialCode,
                    agv_Traytype = station.tray_type,
                    jobID = station.Number,
                    agv_TrayStatus = station.tray_status
                };
                _repository.Add(agvtask, true);
                station.location_state = LocationStateEnum.InBusy.ToString();
                stationinfoRepository.Update(station, true);
                content.OK();
            }
            catch (Exception ex)
            {
                content.Message = ex.Message;
            }
            return content;
        }
        public override WebResponseContent Update(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            var agv_id = saveModel.MainData["agv_id"].ToString();
            var task = _repository.Find(x => x.agv_id.ToString() == agv_id).FirstOrDefault();
            if (task.agv_taskstate != AGVTaskStateEnum.Queue.ToString()) return content.Error("当前任务不可更改!");
            return base.Update(saveModel);
        }
        #region æ·»åŠ NG任务
        public override WebResponseContent Add(SaveModel saveDataModel)
        {
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WMS/Partial/dt_agvtaskController.cs
@@ -11,6 +11,8 @@
using Microsoft.AspNetCore.Http;
using WIDESEA_Entity.DomainModels;
using WIDESEA_WMS.IServices;
using WIDESEA_Core.Utilities;
using WIDESEA_Entity.DomainModels.Mes;
namespace WIDESEA_WMS.Controllers
{
@@ -29,5 +31,15 @@
            _service = service;
            _httpContextAccessor = httpContextAccessor;
        }
        /// <summary>
        /// æ·»åŠ NG任务
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        [HttpPost, Route("addNgTask")]
        public WebResponseContent addNgTask([FromBody] MesRequestTemp request)
        {
            return _service.addNgTask(request);
        }
    }
}