소스 검색

电子巡更移动端

lilifeng 3 년 전
부모
커밋
16f1d178cc

+ 32 - 11
PMS.NetCore/PMS.NetCore.BusinessCore/BaseCore/fdc_pm_inspection_planManager.cs

@@ -180,11 +180,18 @@ namespace PMS.NetCore.BusinessCore.BaseCore
         /// <param name="model"></param>
         /// <returns></returns>
         public string UpdateDetailPlan(InspectionParamDTO model)
-        {
+        {            
+            var detailInfo = CurrentDb.GetById(model.autoid);
+            if (detailInfo == null ||  detailInfo.realtime==null)
+            {
+                return "NFC未扫描当前巡更点";
+            }
+          
+
             Db.BeginTran();
             try
             {
-                var sql = @$"update fdc_pm_inspection_plandetail set 
+               var sql = @$"update fdc_pm_inspection_plandetail set 
                         remark='{model.reamrk}' 
                         where autoid={model.autoid}";
 
@@ -221,17 +228,33 @@ namespace PMS.NetCore.BusinessCore.BaseCore
             }
         }
 
+
         /// <summary>
-        /// 更新实际巡检时间
+        /// NFC扫描巡
         /// </summary>
-        /// <param name="pkCode"></param>
+        /// <param name="model"></param>
         /// <returns></returns>
-        public string UpdateInspectionTime(int pkCode)
+        public string NfcScan(NfcScanDTO model)
         {
-            var sql = @$"update fdc_pm_inspection_plandetail set 
-                        realtime=getdate()
-                        where autoid={pkCode}";
+            var sql = @$"select b.autoid,a.plandate, a.plantime, b.pointcode
+                        from fdc_pm_inspection_employeeplan a 
+                        left join fdc_pm_inspection_plandetail b on a.plancode=b.plancode and a.plandate=b.plandate and a.plantime=b.plantime
+                        where userid={model.userId} and pointcode='{model.pointCode}'  and 
+                        getdate()  between  (CONVERT(varchar(100),'2022-05-16',23)+' '+ SUBSTRING(a.plantime,0,6))and (CONVERT(varchar(100),'2022-05-16',23)+' '+ SUBSTRING(a.plantime,7,5))";
+
+
+            var planDetailManager = new fdc_pm_inspection_plandetailManager();
+
+            var planDetailList = planDetailManager.Db.SqlQueryable<inspectionplandetail>(sql).ToList();
+            if (planDetailList.Count <= 0) 
+            {
+                return "此巡更点不在巡更计划中";
+            }
+
+            var currentPoint = planDetailList.Find(i => i.pointcode == model.pointCode);
 
+            sql = @$"update fdc_pm_inspection_plandetail set realtime=getdate()
+                     where autoid={currentPoint.autoid}";
 
             int rows = Db.Ado.ExecuteCommand(sql);
 
@@ -243,7 +266,6 @@ namespace PMS.NetCore.BusinessCore.BaseCore
             {
                 return "fail";
             }
-
         }
 
 
@@ -270,8 +292,7 @@ namespace PMS.NetCore.BusinessCore.BaseCore
             var planDetailList = planDetailManager.Db.SqlQueryable<inspectionplandetail>(sql).ToList();            
 
             if (planDetailList.Count > 0)
-            {
-                planDetailList.ForEach(i => i.planDateStr = i.planDate.ToString("yyyy-MM-dd"));
+            {               
                 planDetailList.ForEach(i => i.status = (i.realtime != null ? "已巡检" : "未巡检"));
                 return planDetailList.Find(i => i.autoid == pkCode);
             }

+ 17 - 0
PMS.NetCore/PMS.NetCore.Enties/DTO/InspectionDTO.cs

@@ -127,4 +127,21 @@ namespace Sugar.Enties.DTO
     }
 
 
+
+    /// <summary>
+    /// NFC巡更
+    /// </summary>
+    public class NfcScanDTO
+    { 
+        /// <summary>
+        /// 用户ID
+        /// </summary>
+         public string userId { get; set; }
+
+        /// <summary>
+        /// 巡更点编号
+        /// </summary>
+         public string pointCode { get; set; }
+      
+    }
 }

+ 1 - 2
PMS.NetCore/PMS.NetCore.Enties/DbModels/fdc_pm_inspection_plan.cs

@@ -130,7 +130,7 @@ namespace Sugar.Enties.DbModels
 
         public DateTime planDate { get; set; }
 
-        public string planDateStr { get; set; }
+        
 
         // <summary>
         /// Desc: 计划巡更时间
@@ -184,7 +184,6 @@ namespace Sugar.Enties.DbModels
         /// Nullable:False
         /// </summary>  
         public DateTime createtime { get; set; }   
-
     }
 
 

+ 42 - 42
PMS.NetCore/PMS.NetCore/Controllers/ElectronicInspectionController.cs

@@ -699,8 +699,7 @@ namespace PMS.NetCore.Controllers
         /// <param name="model"></param>
         /// <returns></returns>
         [HttpPost]
-        [Route("PlandetailUpdate")]
-        [AllowAnonymous]
+        [Route("PlandetailUpdate")]       
         public JsonResult PlandetailUpdate([FromBody] InspectionParamDTO model)
         {
             var res = new ApiResponse();
@@ -732,46 +731,7 @@ namespace PMS.NetCore.Controllers
             }
         }
 
-        /// <summary>
-        /// 更新实际巡更时间
-        /// </summary>
-        /// <param name="pkCode"></param>
-        /// <returns></returns>
-        [HttpPost]
-        [Route("UpdateInspectionTime")]
-        [AllowAnonymous]
-        public JsonResult UpdateInspectionTime(int pkCode)
-        {
-            var res = new ApiResponse();
-            logger.Info($"UpdateInspectionTime 输入参数】res:{pkCode}");
-
-            try
-            {
-                var manger = new fdc_pm_inspection_plandetailManager();
-                var resstr = manger.UpdateInspectionTime(pkCode);
-
-                if (resstr != "success")
-                {
-                    res.IsSuccess = false;
-                    res.ErrMsg = resstr;
-                    logger.Info($"UpdateInspectionTime 输出参数】res:{JsonConvert.SerializeObject(res)}");
-                    return Json(res);
-                }
-                res.IsSuccess = true;
-                logger.Info($"UpdateInspectionTime 输出参数】res:{JsonConvert.SerializeObject(res)}");
-                return Json(res);
-
-            }
-            catch (Exception ex)
-            {
-                logger.Error(ex);
-                res.ErrMsg = ex.Message;
-                res.Code = 500;
-                return Json(res);
-            }
-        }
-
-
+      
         /// <summary>
         /// 获取员工巡更计划
         /// </summary>
@@ -875,6 +835,46 @@ namespace PMS.NetCore.Controllers
             }
         }
 
+
+
+        /// <summary>
+        /// NFC巡更
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("NfcScan")]       
+        public JsonResult NfcScan([FromBody] NfcScanDTO model)
+        {
+            var res = new ApiResponse();
+            logger.Info($"NfcScan 输入参数】res:{JsonConvert.SerializeObject(model)}");
+
+            try
+            {
+                var manger = new fdc_pm_inspection_plandetailManager();
+                var resstr = manger.NfcScan(model);
+
+                if (resstr != "success")
+                {
+                    res.IsSuccess = false;
+                    res.ErrMsg = resstr;
+                    logger.Info($"NfcScan 输出参数】res:{JsonConvert.SerializeObject(res)}");
+                    return Json(res);
+                }
+                res.IsSuccess = true;               
+                logger.Info($"NfcScan 输出参数】res:{JsonConvert.SerializeObject(res)}");
+                return Json(res);
+
+            }
+            catch (Exception ex)
+            {
+                logger.Error(ex);
+                res.ErrMsg = ex.Message;
+                res.Code = 500;
+                return Json(res);
+            }
+        }
+
         #endregion
     } 
 

+ 1 - 1
wyMobile/src/components/inspectionDetail.vue

@@ -127,7 +127,7 @@ export default {
                      this.$router.push({path: '/inspectionRoute',
                                     query:{ 
                                         plancode:this.listdata.plancode,
-                                        plandate:this.listdata.planDateStr,
+                                        plandate:this.listdata.planDate.slice(0,10),
                                         plantime:this.listdata.plantime}
                                     });
 

+ 130 - 0
wyMobile/src/components/inspectionRoute.vue

@@ -117,4 +117,134 @@ export default {
   }  
 }
 </script>
+<script>
+ document.addEventListener("plusready", function() { 
+                this.$dialog.alert({
+                          message: '111111'
+                        })
+                   // NFC监听
+                   monitorNFC() 
+
+                    this.$dialog.alert({
+                          message: '22222222222'
+                        })
+    		})
+
+            function monitorNFC(t){ 
+                let NfcAdapter;
+                let NdefRecord;
+                let NdefMessage;
+                function listenNFCStatus() {
+                    try {
+                        let main = plus.android.runtimeMainActivity();
+                        let Intent = plus.android.importClass('android.content.Intent');
+                        let Activity = plus.android.importClass('android.app.Activity');
+                        let PendingIntent = plus.android.importClass('android.app.PendingIntent');
+                        let IntentFilter = plus.android.importClass('android.content.IntentFilter');
+                        NfcAdapter = plus.android.importClass('android.nfc.NfcAdapter');
+                        let nfcAdapter = NfcAdapter.getDefaultAdapter(main);
+                        let intent = new Intent(main, main.getClass());
+                        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
+                        let pendingIntent = PendingIntent.getActivity(main, 0, intent, 0);
+                        let ndef = new IntentFilter("android.nfc.action.TECH_DISCOVERED");
+                        ndef.addDataType("*/*");
+                        let intentFiltersArray = [ndef];
+                        let techListsArray = [
+                            ["android.nfc.tech.IsoDep"],
+                            ["android.nfc.tech.NfcA"],
+                            ["android.nfc.tech.NfcB"],
+                            ["android.nfc.tech.NfcF"],
+                            ["android.nfc.tech.Nfcf"],
+                            ["android.nfc.tech.NfcV"],
+                            ["android.nfc.tech.NdefFormatable"],
+                            ["android.nfc.tech.MifareClassic"],
+                            ["android.nfc.tech.MifareUltralight"]
+                        ];
+                        document.addEventListener("newintent",
+                            function() {
+                                console.error('newintent');
+                                setTimeout(handle_nfc_data1, 1000);
+                            }, false);
+                        document.addEventListener("pause", function(e) {
+                            if (nfcAdapter) {
+                                nfcAdapter.disableForegroundDispatch(main);
+                                console.log('pause');
+                            }
+                        }, false);
+                        document.addEventListener("resume", function(e) {
+                            if (nfcAdapter) {
+                                console.log('resume');
+                                nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);
+                            }
+                        }, false);
+                        nfcAdapter.enableForegroundDispatch(main, pendingIntent, intentFiltersArray, techListsArray);
+                    } catch (e) {
+                        console.error(e);
+                    }
+                }
+    
+                function handle_nfc_data1() {
+                    NdefRecord = plus.android.importClass("android.nfc.NdefRecord");
+                    NdefMessage = plus.android.importClass("android.nfc.NdefMessage");
+                    let main = plus.android.runtimeMainActivity();
+                    let intent = main.getIntent();  
+                    if ("android.nfc.action.TECH_DISCOVERED" == intent.getAction()) {
+                        // if (readyWriteData) {
+                        //     __write(intent);
+                        //     readyWriteData = false;
+                        // } else if (readyRead) {
+                            console.log("进行读取NFC")
+                            __read(intent);
+                            readyRead = false;
+                        // }
+                    }
+                } 
+    
+                function __read(intent) {
+                    try {
+                        let content = ""; 
+                        waiting = plus.nativeUI.showWaiting("请勿移开标签\n正在读取数据...");
+                        let tag = plus.android.importClass("android.nfc.Tag"); 
+                        tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
+                        let bytesId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID); 
+                        let rawmsgs = intent.getParcelableArrayExtra("android.nfc.extra.NDEF_MESSAGES"); 
+                        let records = rawmsgs[0].getRecords(); 
+                        let result = records[0].getPayload(); 
+                        let s = plus.android.newObject("java.lang.String",result); 
+                        console.log( s) 
+                        if(s){ 
+                            s = s.slice(s.indexOf('en') + 2) 
+                        }
+                         this.$dialog.alert({
+                          message: '查询解过:'+s
+                        })
+                        console.log('查询解过:'+s)
+
+                        // console.log("bytesId:" + (bytesId));
+                        // console.log("十六进制ID:" + (bytesToHexString(tag.getId()))); 
+                    } catch (e) {
+                        alert(e);  
+                    }
+                    readyRead = false
+                    waiting.close();
+                }
+     
+                function bytesToHexString(inarray) {
+                    let i, j, x;
+                    let hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A",
+                        "B", "C", "D", "E", "F"
+                    ];
+                    let out = "";
+                    for (j = 0; j < inarray.length; ++j) {
+                        x = parseInt(inarray[j]) & 0xff;
+                        i = (x >> 4) & 0x0f;
+                        out += hex[i];
+                        i = x & 0x0f;
+                        out += hex[i];
+                    }
+                    return out;
+                } 
+            }
+
+</script>