Browse Source

年前更新提交

leiy 1 year ago
parent
commit
474b4f0e04

+ 154 - 16
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -1027,7 +1027,7 @@ namespace OASystem.API.Controllers
                 if (_dto.Type == 0) whereSql = "";
                 else if (_dto.Type == 1) //1 由我指派
                 {
-                    whereSql = string.Format(@" And ta.CreateUserId = {0} And (Select COUNT(1) As PeopleNumber From Pm_TaskRelevanceUser Where IsDel = 0 And ta.Id = TAId And UserId = {0}) > 0", _dto.UserId); 
+                    whereSql = string.Format(@" And ta.CreateUserId = {0} Or (Select COUNT(1) As PeopleNumber From Pm_TaskRelevanceUser Where IsDel = 0 And ta.Id = TAId And UserId = {0}) > 0", _dto.UserId); 
                 }
                 else if (_dto.Type == 2)// 2 指派给我
                 {
@@ -1077,16 +1077,24 @@ namespace OASystem.API.Controllers
                 List<int> taskIds = new List<int>();
                 taskIds = _view.Select(it => it.Id).ToList();
 
-                string taskerSql = string.Format(@"Select tau.TAId,tau.Id,u.CnName As UserName,tau.BeginTime,tau.OverTime,tau.TaskStatus,
+                string taskerSql = string.Format(@"Select tau.TAId,tau.Id,tau.UserId,u.CnName As UserName,tau.BeginTime,tau.OverTime,tau.TaskStatus,
 												  tau.Cause,tau.Score,tau.Remark As ScoreRemark,tau.CreateUserId As TaskCreateUserId
 												  From Pm_TaskRelevanceUser tau 
 												  Left Join Sys_Users u On tau.UserId = u.Id
 												  Where tau.IsDel = 0");
 
-                var taskerData = await _taskAllocationRep._sqlSugar.SqlQueryable<TaskerDetailsView>(taskerSql).Where(it => taskIds.Contains(it.TAId)).ToListAsync();
+                var taskerData = _taskAllocationRep._sqlSugar.SqlQueryable<TaskerDetailsView>(taskerSql).Where(it => taskIds.Contains(it.TAId)).ToList();
                 foreach (var item in _view)
                 {
                     item.TaskerDetails = taskerData.Where(it => it.TAId == item.Id).ToList();
+
+                    //处理任务总状态 And 任务人状态
+
+                    var taskerStatusData = taskerData.Where(it => it.TAId == item.Id && it.TaskCreateUserId != _dto.UserId && it.UserId == _dto.UserId).FirstOrDefault();
+                    if (taskerStatusData != null)
+                    {
+                        item.Status = taskerStatusData.TaskStatus;
+                    }
                 }
 
 
@@ -1239,7 +1247,7 @@ namespace OASystem.API.Controllers
 
         /// <summary>
         /// 任务分配
-        /// 状态任务归属人设置完成状态
+        /// 状态 任务归属人 设置完成状态
         /// </summary>
         /// <returns></returns>
         [HttpPost]
@@ -1264,7 +1272,7 @@ namespace OASystem.API.Controllers
 
         /// <summary>
         /// 任务分配
-        /// 设置知晓状态
+        /// 状态 任务归属人 设置知晓状态
         /// </summary>
         /// <returns></returns>
         [HttpPost]
@@ -1288,15 +1296,146 @@ namespace OASystem.API.Controllers
             }
         }
 
+        /// <summary>
+        /// 任务分配
+        /// 任务发布者 单人设置审批状态
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostTaskAllocationSetAuditStatus(TaskAllocationStatusDto _dto)
+        {
+            try
+            {
+
+                var _view = await _taskAllocationRep._TaskSetAuditStatus(_dto.SubId);
+                if (_view.Code == 0)
+                {
+                    return Ok(JsonView(true, "操作成功!"));
+                }
+
+                return Ok(JsonView(false, _view.Msg));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+
+        /// <summary>
+        /// 任务分配
+        /// 任务发布者 单人设置未完成状态
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostTaskAllocationSetUnFinishedStatus(TaskAllocationSetUnFinishedStatusDto _dto)
+        {
+            try
+            {
+                var _view = await _taskAllocationRep._TaskSetUnFinishedStatus(_dto.SubId,_dto.Cause);
+                if (_view.Code == 0)
+                {
+                    return Ok(JsonView(true, "操作成功!"));
+                }
+
+                return Ok(JsonView(false, _view.Msg));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        ///// <summary>
+        ///// 任务分配
+        ///// 确认任务是否可操作完成
+        ///// </summary>
+        ///// <returns></returns>
+        //[HttpPost]
+        //[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        //public async Task<IActionResult> PostTaskAllocationIsConfirmCompletion(TaskAllocationScoreDto _dto)
+        //{
+        //    try
+        //    {
+        //        #region  参数验证
+        //        if (_dto.UserId < 1) return Ok(JsonView(false, "员工Id为空"));
+        //        if (_dto.PageId < 1) _dto.PageId = 172; //任务指派Id
+
+        //        PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
+
+        //        #region 页面操作权限验证
+        //        pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
+
+        //        if (pageFunAuthView.EditAuth == 0) return Ok(JsonView(false, "您没有编辑权限!"));
+
+        //        #endregion
+
+        //        #endregion
+
+        //        var _view = await _taskAllocationRep._TaskConfirmCompletion(_dto.PortType, _dto.Id);
+        //        if (_view.Code == 0)
+        //        {
+        //            return Ok(JsonView(true, "操作成功!"));
+        //        }
+
+        //        return Ok(JsonView(false, _view.Msg));
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        return Ok(JsonView(false, ex.Message));
+        //    }
+        //}
+
+        ///// <summary>
+        ///// 任务分配
+        ///// 任务确认完成
+        ///// </summary>
+        ///// <returns></returns>
+        //[HttpPost]
+        //[ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        //public async Task<IActionResult> PostTaskAllocationConfirmCompletion(TaskAllocationConfirmCompletionDto _dto)
+        //{
+        //    try
+        //    {
+        //        #region  参数验证
+        //        if (_dto.UserId < 1) return Ok(JsonView(false, "员工Id为空"));
+        //        if (_dto.PageId < 1) _dto.PageId = 172; //任务指派Id
+
+        //        PageFunAuthViewBase pageFunAuthView = new PageFunAuthViewBase();
+
+        //        #region 页面操作权限验证
+        //        pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
+
+        //        if (pageFunAuthView.EditAuth == 0) return Ok(JsonView(false, "您没有编辑权限!"));
+
+        //        #endregion
+
+        //        #endregion
+
+        //        var _view = await _taskAllocationRep._TaskConfirmCompletion(_dto.PortType,_dto.Id);
+        //        if (_view.Code == 0)
+        //        {
+        //            return Ok(JsonView(true, "操作成功!"));
+        //        }
+
+        //        return Ok(JsonView(false, _view.Msg));
+        //    }
+        //    catch (Exception ex)
+        //    {
+        //        return Ok(JsonView(false, ex.Message));
+        //    }
+        //}
 
         /// <summary>
         /// 任务分配
-        /// 确认任务是否可操作完成
+        /// 任务发布者 任务评分
         /// </summary>
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> PostTaskAllocationIsConfirmCompletion(TaskAllocationScoreDto _dto)
+        public async Task<IActionResult> PostTaskAllocationScore(TaskAllocationScoreDto _dto)
         {
             try
             {
@@ -1315,7 +1454,7 @@ namespace OASystem.API.Controllers
 
                 #endregion
 
-                var _view = await _taskAllocationRep._TaskConfirmCompletion(_dto.PortType, _dto.Id);
+                var _view = await _taskAllocationRep._TaskScore(_dto);
                 if (_view.Code == 0)
                 {
                     return Ok(JsonView(true, "操作成功!"));
@@ -1331,12 +1470,12 @@ namespace OASystem.API.Controllers
 
         /// <summary>
         /// 任务分配
-        /// 任务确认完成
+        ///  任务发布者 任务终止
         /// </summary>
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> PostTaskAllocationConfirmCompletion(TaskAllocationConfirmCompletionDto _dto)
+        public async Task<IActionResult> PostTaskAllocationTermination(TaskAllocationConfirmCompletionDto _dto)
         {
             try
             {
@@ -1355,7 +1494,7 @@ namespace OASystem.API.Controllers
 
                 #endregion
 
-                var _view = await _taskAllocationRep._TaskConfirmCompletion(_dto.PortType,_dto.Id);
+                var _view = await _taskAllocationRep._TaskTermination(_dto.Id);
                 if (_view.Code == 0)
                 {
                     return Ok(JsonView(true, "操作成功!"));
@@ -1371,12 +1510,12 @@ namespace OASystem.API.Controllers
 
         /// <summary>
         /// 任务分配
-        /// 任务评分
+        /// 任务发布者 任务删除
         /// </summary>
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> PostTaskAllocationScore(TaskAllocationScoreDto _dto)
+        public async Task<IActionResult> PostTaskAllocationDel(TaskAllocationConfirmCompletionDto _dto)
         {
             try
             {
@@ -1389,13 +1528,13 @@ namespace OASystem.API.Controllers
                 #region 页面操作权限验证
                 pageFunAuthView = await GeneralMethod.PostUserPageFuncDatas(_dto.UserId, _dto.PageId);
 
-                if (pageFunAuthView.EditAuth == 0) return Ok(JsonView(false, "您没有编辑权限!"));
+                if (pageFunAuthView.DeleteAuth == 0) return Ok(JsonView(false, "您没有删除权限!"));
 
                 #endregion
 
                 #endregion
 
-                var _view = await _taskAllocationRep._TaskScore(_dto);
+                var _view = await _taskAllocationRep._TaskDel(_dto.Id);
                 if (_view.Code == 0)
                 {
                     return Ok(JsonView(true, "操作成功!"));
@@ -1408,7 +1547,6 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, ex.Message));
             }
         }
-
         #endregion
     }
 }

+ 47 - 0
OASystem/OASystem.Api/Controllers/TencentOCRController.cs

@@ -30,6 +30,8 @@ namespace OASystem.API.Controllers
             this._visaDeleClientRepository = visaDeleClientRepository;
         }
 
+        #region web
+
         /// <summary>
         /// 通用印刷体
         /// </summary>
@@ -488,5 +490,50 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, ex.Message));
             }
         }
+
+        #endregion
+
+        #region android ios
+
+        /// <summary>
+        /// 名片识别
+        /// 获取名片 移动端 返回数据 
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostBusinessCardApp(BusinessCardOCRDto dto)
+        {
+            double strSize = 1024 * 1024 * 7;
+            if (dto.picBase64.Length > strSize)
+            {
+                return Ok(JsonView("图片不能大于7M!"));
+            }
+            Logs(dto.picBase64);
+            Logs("名片识别开始时间:" + DateTime.Now);
+            try
+            {
+                var mlidpData = TencentOCRTools.PostOCRApp((int)TencentOCREnum.BusinessCard, dto);
+                if (mlidpData.Code != 0)
+                {
+                    return Ok(JsonView(mlidpData.Msg));
+                }
+
+                if (mlidpData.Data == null)
+                {
+                    return Ok(JsonView(mlidpData.Msg));
+                }
+
+                Logs("名片识别结束时间:" + DateTime.Now);
+                return Ok(JsonView(mlidpData.Data));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        #endregion
     }
 }

+ 25 - 14
OASystem/OASystem.Api/OAMethodLib/PayrollComputation.cs

@@ -108,12 +108,13 @@ namespace OASystem.API.OAMethodLib
                 return _result;
             }
 
+            string name = "";
             try
             {
                 foreach (var pm_wsInfo in pm_WageSheetDattaSources)
                 {
                     string itemName = userNames.Where(it => it.Id == pm_wsInfo.UserId).FirstOrDefault().CnName;
-                    
+                    name = itemName;
 
                     //补贴 金额
                     decimal meal_subsidy = 0.00M;  // 午餐(午餐10元/天)  补贴 * 计算方式:单日上午请假时长(小时)大于或者等于三小时 没有餐补
@@ -291,7 +292,7 @@ namespace OASystem.API.OAMethodLib
                                     }
                                     else if (timelength > 60 && timelength <= 180)
                                     {
-                                        day_deduction = ConvertToDecimal(day_miner_unit * 6); //3小时
+                                        day_deduction = ConvertToDecimal(dailyWage / 2); //3小时 按半天计算
                                         meal_deduction += 10.00M;  //餐补扣款
                                         absenteeism_deduction += day_deduction; //矿工半日
                                         beLate_belate_ex.Reason = thisDtStr + " 上午(09:00)缺卡/未打卡视为上午旷工(3小时)";
@@ -342,7 +343,7 @@ namespace OASystem.API.OAMethodLib
                                     }
                                     else if (timelength > 60 && timelength <= 180)
                                     {
-                                        day_deduction = ConvertToDecimal(day_miner_unit * 6); //3小时
+                                        day_deduction = ConvertToDecimal(dailyWage / 2); //3小时 按半天计算
                                         meal_deduction += 10.00M;
                                         absenteeism_deduction += day_deduction; //矿工半日
                                     }
@@ -369,7 +370,7 @@ namespace OASystem.API.OAMethodLib
 
                                                 if (thisDt >= thisDt1)  //旷工 下午
                                                 {
-                                                    day_deduction = ConvertToDecimal(day_miner_unit * 9); //4.5小时
+                                                    day_deduction = ConvertToDecimal(dailyWage / 2); //4.5小时 按半天计算
                                                     meal_deduction += 10.00M;
 
                                                     beLate_belate_ex.Duration = 270;
@@ -381,7 +382,7 @@ namespace OASystem.API.OAMethodLib
                                                 }
                                                 else if (thisDt <= thisDt1) //旷工 上午
                                                 {
-                                                    day_deduction = ConvertToDecimal(day_miner_unit * 6); //3小时
+                                                    day_deduction = ConvertToDecimal(dailyWage / 2); //3小时 按半天计算
                                                     meal_deduction += 10.00M;
                                                     absenteeism_deduction += day_deduction; //矿工半日
                                                     beLate_belate_ex.Duration = 180;
@@ -414,9 +415,6 @@ namespace OASystem.API.OAMethodLib
                                             beLate_belate_ex.Deduction = day_deduction;
                                             ex_reissuecard_Items.Add(beLate_belate_ex);
                                         }
-
-                                        
-
                                     }
                                     else if (root.exception_infos.Count == 1)
                                     {
@@ -428,7 +426,7 @@ namespace OASystem.API.OAMethodLib
 
                                             if (thisDt <= thisDt1)  //旷工 下午
                                             {
-                                                day_deduction = ConvertToDecimal(day_miner_unit * 9); //4.5小时
+                                                day_deduction = ConvertToDecimal(dailyWage / 2); //4.5小时
                                                 meal_deduction += 10.00M;
 
                                                 beLate_belate_ex.Duration = 270;
@@ -440,7 +438,7 @@ namespace OASystem.API.OAMethodLib
                                             }
                                             else if (thisDt >= thisDt1) //旷工 上午
                                             {
-                                                day_deduction = ConvertToDecimal(day_miner_unit * 6); //3小时
+                                                day_deduction = ConvertToDecimal(dailyWage / 2); //3小时
                                                 meal_deduction += 10.00M;
                                                 absenteeism_deduction += day_deduction; //矿工半日
                                                 beLate_belate_ex.Duration = 180;
@@ -469,11 +467,17 @@ namespace OASystem.API.OAMethodLib
                                 {
                                     if (timelength > 60 && timelength <= 180)
                                     {
-                                        day_deduction = ConvertToDecimal(day_miner_unit * 6); //3小时
+                                        day_deduction = ConvertToDecimal(dailyWage / 2); //3小时
                                         beLate_belate_ex.Reason = thisDtStr + " 缺卡/未打视为旷工上午(3小时)";
                                         meal_deduction += 10.00M;
                                         absenteeism_deduction += day_deduction; //矿工半日
-
+                                    }
+                                    else if (timelength > 180 && timelength <= 270)
+                                    {
+                                        day_deduction = ConvertToDecimal(dailyWage / 2); //3小时
+                                        beLate_belate_ex.Reason = thisDtStr + " 缺卡/未打视为旷工下午午(4.5小时)";
+                                        meal_deduction += 10.00M;
+                                        absenteeism_deduction += day_deduction; //矿工半日
                                     }
                                     else
                                     {
@@ -1080,9 +1084,16 @@ namespace OASystem.API.OAMethodLib
                             if (cc_ex_ItemInfos.Count > 0)
                             {
                                 //ex_Items_cc.Ex_ItemInfo = cc_ex_ItemInfos.OrderBy(it => it.StartTimeDt).ThenBy(it => it.Apply_time_dt).ToList();
+                                //;
                                 //ex_Items.Add(ex_Items_cc);
                                 List<Ex_Item> ex_jq_Items = new List<Ex_Item>();
-                                ex_jq_Items = (List<Ex_Item>)ex_Items_jq.Ex_ItemInfo;
+                                List<Ex_Item> ex_Items1 = new List<Ex_Item>();
+                                ex_Items1 = (List<Ex_Item>)ex_Items_jq.Ex_ItemInfo;
+                                if (ex_Items1 != null && ex_Items1.Count > 0)
+                                {
+                                    ex_jq_Items = ex_Items1;
+                                }
+
                                 ex_jq_Items.AddRange(cc_ex_ItemInfos);
                                 ex_Items.Remove(ex_Items_jq);
                                 ex_Items.Add(
@@ -1171,7 +1182,7 @@ namespace OASystem.API.OAMethodLib
             catch (Exception ex)
             {
 
-                _result.Msg = ex.Message;
+                _result.Msg = "【" + name + "】【Msg:" + ex.Message + "】";
 
                 return _result;
             }

+ 97 - 1
OASystem/OASystem.Api/OAMethodLib/TencentCloudAPI/TencentOCRTools.cs

@@ -2,6 +2,7 @@
 using TencentCloud.Common;
 using TencentCloud.Ocr.V20181119.Models;
 using TencentCloud.Ocr.V20181119;
+using OASystem.Domain.ViewModels.OCR;
 
 namespace OASystem.API.OAMethodLib.TencentCloudAPI
 {
@@ -20,7 +21,7 @@ namespace OASystem.API.OAMethodLib.TencentCloudAPI
         };
 
         /// <summary>
-        /// ocr识别
+        /// ocr识别 Web
         /// </summary>
         /// <param name="ocrEnum">转换类型</param>
         /// <param name="data">请求数据源</param>
@@ -129,6 +130,101 @@ namespace OASystem.API.OAMethodLib.TencentCloudAPI
             }
         }
 
+        /// <summary>
+        /// ocr识别 android ios
+        /// </summary>
+        /// <param name="ocrEnum">转换类型</param>
+        /// <param name="data">请求数据源</param>
+        /// <returns></returns>
+        public static Result PostOCRApp(int ocrEnum, object data)
+        {
+            Result result = new Result { Code = -1, Msg = "未知错误", Data = null };
+            OcrClient client = new OcrClient(cred, "ap-guangzhou");
+
+            try
+            {
+                switch (ocrEnum)
+                {
+                    case 9: // 名片识别
+                        BusinessCardOCRDto bcOCR = (BusinessCardOCRDto)data;
+                        BusinessCardOCRRequest bcReq = new BusinessCardOCRRequest();
+                        bcReq.ImageBase64 = bcOCR.picBase64;
+
+                        BusinessCardOCRResponse bcRep = client.BusinessCardOCRSync(bcReq);
+
+                        BusinessCardInfoView businessCardInfo = new BusinessCardInfoView();
+                        if (bcRep.BusinessCardInfos.Length > 0)
+                        {
+
+                            List<BusinessCardInfo> BusinessCardInfos = new List<BusinessCardInfo>();
+                            BusinessCardInfos = bcRep.BusinessCardInfos.ToList();
+
+                            var nameData = BusinessCardInfos.Where(x => x.Name == "姓名").FirstOrDefault();
+                            if (nameData != null) businessCardInfo.Name = nameData.Value;
+
+
+                            var companyData = BusinessCardInfos.Where(x => x.Name.Equals("公司")).FirstOrDefault();
+                            if (companyData != null) businessCardInfo.Company = companyData.Value;
+
+
+                            var addressData = BusinessCardInfos.Where(x => x.Name == "地址").FirstOrDefault();
+                            if (addressData != null) businessCardInfo.Address = addressData.Value;
+
+                            var jobData = BusinessCardInfos.Where(x => x.Name == "职位").FirstOrDefault();
+                            if (jobData != null) businessCardInfo.Job = jobData.Value;
+
+
+                            var emailData = BusinessCardInfos.Where(x => x.Name == "邮箱").FirstOrDefault();
+                            if (emailData != null) businessCardInfo.Email = emailData.Value;
+
+
+                            var phoneData = BusinessCardInfos.Where(x => x.Name == "手机").ToList();
+                            if (phoneData.Count > 0)
+                            {
+                                string phone = "";
+                                foreach (var item in phoneData)
+                                {
+                                    phone += item.Value + ",";
+                                }
+
+                                if (phone.Length > 0 )
+                                {
+                                    phone = phone.Substring(0,phone.Length - 1);
+                                }
+                                businessCardInfo.Phone = phone;
+                            }
+
+                            var telData = BusinessCardInfos.Where(x => x.Name == "电话").ToList();
+                            if (telData.Count > 0)
+                            {
+                                string tel = "";
+                                foreach (var item in telData)
+                                {
+                                    tel += item.Value + ",";
+                                }
+
+                                if (tel.Length > 0)
+                                {
+                                    tel = tel.Substring(0,tel.Length - 1);
+                                }
+                                businessCardInfo.Tel = tel;
+                            }
+                        }
+                        
+                        result.Data = businessCardInfo;
+                        break;
+                }
+
+                result.Code = 0;
+                result.Msg = "成功";
+                return result;
+            }
+            catch (Exception ex)
+            {
+                result.Msg = "TencentOCRAPIError:" + ex.Message;
+                return result;
+            }
+        }
 
         /// <summary>
         /// 图片转Base64

+ 12 - 4
OASystem/OASystem.Domain/Dtos/PersonnelModule/TaskAllocationDto.cs

@@ -171,15 +171,23 @@ namespace OASystem.Domain.Dtos.PersonnelModule
 
     /// <summary>
     /// 任务分配 
-    /// 任务评分
+    /// 任务状态更改
     /// </summary>
-    public class TaskAllocationScoreDto : UserPageFuncDtoBase
+    public class TaskAllocationSetUnFinishedStatusDto: TaskAllocationStatusDto
     {
         /// <summary>
-        /// Id
+        /// 未完成原因
         /// </summary>
-        public int Id { get; set; }
+        public string Cause { get; set; }
+
+    }
 
+    /// <summary>
+    /// 任务分配 
+    /// 任务评分
+    /// </summary>
+    public class TaskAllocationScoreDto : UserPageFuncDtoBase
+    {
         public int SubId { get; set; }
 
         public int Score { get; set; }

+ 2 - 2
OASystem/OASystem.Domain/Entities/PersonnelModule/Pm_TaskAllocation.cs

@@ -59,10 +59,10 @@ namespace OASystem.Domain.Entities.PersonnelModule
 
         /// <summary>
         /// 任务状态
-        /// 0 未开始 1 进行中 2 待审核 3 未完成 4 已完成
+        /// 0 未开始 1 进行中 2 待审核 3 未完成 4 已完成 5 任务终止
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public TaskEnum Status { get; set; } = 0;
+        public TaskEnum Status { get; set; } = TaskEnum.NotStarted;
 
         /// <summary>
         ///  0 否 1 是  

+ 1 - 1
OASystem/OASystem.Domain/Entities/PersonnelModule/Pm_TaskRelevanceUser.cs

@@ -45,7 +45,7 @@ namespace OASystem.Domain.Entities.PersonnelModule
         /// -1 未开始 0 已知晓 1 进行中 2 待审核 3 未完成  4 已完成 5任务中止
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public TaskerEnum TaskStatus { get; set; } 
+        public TaskerEnum TaskStatus { get; set; } = TaskerEnum.NotStarted;
 
         /// <summary>
         /// 未完成原因

+ 7 - 1
OASystem/OASystem.Domain/Enums/TaskEnum.cs

@@ -35,7 +35,13 @@ namespace OASystem.Domain.Enums
         /// 任务指派状态
         /// 已完成
         /// </summary>
-        Finished = 4
+        Finished = 4,
+        /// <summary>
+        /// 任务指派状态
+        /// 任务终止
+        /// </summary>
+        TaskStop = 5
+
     }
 
     /// <summary>

+ 51 - 0
OASystem/OASystem.Domain/ViewModels/OCR/OCRAppView.cs

@@ -0,0 +1,51 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OASystem.Domain.ViewModels.OCR
+{
+    public class OCRAppView
+    {
+    }
+
+
+    public class BusinessCardInfoView
+    {
+        /// <summary>
+        /// 姓名
+        /// </summary>
+        public string? Name { get; set; }
+
+        /// <summary>
+        /// 公司
+        /// </summary>
+        public string? Company { get; set; }
+
+        public string Address { get; set; }
+
+        /// <summary>
+        /// 职位
+        /// </summary>
+        public string? Job { get; set; }
+
+        /// <summary>
+        /// 邮箱
+        /// </summary>
+        public string? Email { get; set; }
+
+        /// <summary>
+        /// 手机号码
+        /// </summary>
+        public string? Phone { get; set; }
+
+        /// <summary>
+        /// 座机电话
+        /// </summary>
+        public string? Tel { get; set; }
+
+    }
+
+}

+ 1 - 0
OASystem/OASystem.Domain/ViewModels/PersonnelModule/TaskAllocationView.cs

@@ -254,6 +254,7 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         public int TaskCreateUserId { get; set; }
         public int Id { get; set; }
 
+        public int UserId { get; set; }
         public string UserName { get; set; }
 
         /// <summary>

+ 2 - 2
OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs

@@ -27,7 +27,7 @@ namespace OASystem.Infrastructure.Repositories.Login
         public async Task<Result> Login(LoginDto loginDto)
         {
             Result result = new Result() { Code = -2 };
-            string SQLWhere = string.Format("Where Number='{0}' And Isdel = 0", loginDto.Number);
+            string SQLWhere = string.Format("Where Number='{0}' And Isdel = 0", loginDto.Number.Trim());
             string sql = string.Format("Select * From Sys_Users With(NoLock) {0}", SQLWhere);
             Sys_Users _entity = await GetSingleInfoBySqlWithNolockAsync(sql);
 
@@ -37,7 +37,7 @@ namespace OASystem.Infrastructure.Repositories.Login
                 return result;
             }
 
-            if (!_entity.Password.Equals(loginDto.Password))
+            if (!_entity.Password.Equals(loginDto.Password.Trim()))
             {
                 result.Msg = "账户或密码错误!";
                 return result;

+ 255 - 14
OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/TaskAllocationRepository.cs

@@ -1,5 +1,6 @@
 using AutoMapper;
 using EnumsNET;
+using Microsoft.VisualBasic;
 using NPOI.SS.Formula.Functions;
 using OASystem.Domain;
 using OASystem.Domain.Dtos.PersonnelModule;
@@ -237,11 +238,13 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 List<Pm_TaskRelevanceUser> _TaskRelevanceUsers = new List<Pm_TaskRelevanceUser>();
                 _TaskAllocation = _mapper.Map<Pm_TaskAllocation>(dto);
                 _TaskAllocation.CreateUserId = dto.UserId;
+                _TaskAllocation.Status = TaskEnum.NotStarted;
                 foreach (var item in dto.UserIds)
                 {
                     _TaskRelevanceUsers.Add(new Pm_TaskRelevanceUser() {
                         TAId = dto.Id,
                         UserId = item,
+                        TaskStatus = TaskerEnum.NotStarted,
                         CreateUserId = dto.UserId,
                     });
                 }
@@ -483,8 +486,19 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 _result.Msg = string.Format("请传入有效的Id参数!");
                 return _result;
             }
-            //时间限制
             //状态限制
+            var selectData = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>().Where(it => it.IsDel == 0 && it.UserId == userId && it.TAId == id).FirstAsync();
+            if (selectData == null)
+            {
+                _result.Msg = string.Format("该任务不在!");
+                return _result;
+            }
+            if (selectData.TaskStatus >= TaskerEnum.UnderWay)
+            {
+                _result.Msg = string.Format("该任务已知晓,不可重复设置!");
+                return _result;
+            }
+
             _sqlSugar.BeginTran();
             var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
                                          .SetColumns(it => it.TaskStatus == TaskerEnum.UnderWay)
@@ -531,9 +545,18 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 return _result;
             }
 
-            //时间限制
             //状态限制
-
+            var selectData = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>().Where(it => it.IsDel == 0 && it.UserId == userId && it.TAId == id).FirstAsync();
+            if (selectData == null)
+            {
+                _result.Msg = string.Format("该任务不在!");
+                return _result;
+            }
+            if (selectData.TaskStatus != TaskerEnum.UnderWay)
+            {
+                _result.Msg = string.Format("该任务已提交待审核状态,不可重复提交!");
+                return _result;
+            }
             _sqlSugar.BeginTran();
             var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
                                          .SetColumns(it => it.TaskStatus == TaskerEnum.WaitConfirm)
@@ -548,7 +571,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 return _result;
             }
             var update2 = await _sqlSugar.Updateable<Pm_TaskAllocation>()
-                                        .SetColumns(it => it.Status == TaskEnum.WaitConfirm)
+                                        .SetColumns(it => it.Status == TaskEnum.UnderWay)
                                         .Where(it => it.Id == id)
                                         .ExecuteCommandAsync();
             if (update2 < 1)
@@ -586,8 +609,6 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
             }
             var data2 = await _sqlSugar.Queryable<Pm_TaskAllocation>().Where(it => it.IsDel == 0 && it.Id == data1.TAId).FirstAsync();
 
-            _sqlSugar.BeginTran();
-
             var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
                                          .SetColumns(it => it.TaskStatus == TaskerEnum.HaveKnown)
                                          .ExecuteCommandAsync();
@@ -603,6 +624,129 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
 
             return _result;
         }
+        
+
+        /// <summary>
+        /// 设置任务审批状态
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public async Task<Result> _TaskSetAuditStatus(int id)
+        {
+            if (id < 1)
+            {
+                _result.Msg = string.Format("请传入有效的Id参数!");
+                return _result;
+            }
+
+            var data1 = _sqlSugar.Queryable<Pm_TaskRelevanceUser>().Where(it => it.IsDel == 0 && it.Id == id).First();
+            if (data1 == null)
+            {
+                _result.Msg = string.Format("该任务不存在或者该任务未分配给你!");
+                return _result;
+            }
+            int _taId = data1.TAId;
+
+            _sqlSugar.BeginTran();
+            var update1 = _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
+                                         .SetColumns(it => it.TaskStatus == TaskerEnum.Finished)
+                                         .Where(it => it.Id == id)
+                                         .ExecuteCommand();
+            if (update1 < 1)
+            {
+                _result.Msg = string.Format("操作失败!");
+                _sqlSugar.RollbackTran();
+                return _result;
+            }
+            //设置任务状态
+            TaskEnum taskStatus = TaskEnum.Finished;
+            var data2 = _sqlSugar.Queryable<Pm_TaskRelevanceUser>().Where(it => it.IsDel == 0 && it.TAId == _taId).ToList();
+            var data3 = data2.Where(it => it.TaskStatus == TaskerEnum.Finished && it.Id != id).ToList();
+            var data4 = data2.Where(it => it.TaskStatus == TaskerEnum.UnFinished && it.Id != id).ToList();
+
+            if (data4.Count > 0) taskStatus = TaskEnum.UnFinished;
+
+            if ((data2.Count - 1) == (data3.Count + data4.Count))
+            {
+                var update2 = _sqlSugar.Updateable<Pm_TaskAllocation>()
+                                         .SetColumns(it => it.Status == taskStatus)
+                                         .Where(it => it.Id == _taId)
+                                         .ExecuteCommand();
+                if (update2 < 1)
+                {
+                    _result.Msg = string.Format("操作失败!");
+                    _sqlSugar.RollbackTran();
+                    return _result;
+                }
+            }
+
+            _result.Msg = string.Format("操作成功!");
+            _result.Code = 0;
+            _sqlSugar.CommitTran();
+
+            return _result;
+        }
+
+        /// <summary>
+        /// 设置任务未完成状态
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public async Task<Result> _TaskSetUnFinishedStatus(int id, string cause)
+        {
+            if (id < 1)
+            {
+                _result.Msg = string.Format("请传入有效的Id参数!");
+                return _result;
+            }
+
+            var data1 = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>().Where(it => it.IsDel == 0 && it.Id == id).FirstAsync();
+            if (data1 == null)
+            {
+                _result.Msg = string.Format("该任务不存在或者该任务未分配给你!");
+                return _result;
+            }
+            int _taId = data1.TAId;
+
+            _sqlSugar.BeginTran();
+            var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
+                                         .SetColumns(it => it.TaskStatus == TaskerEnum.UnFinished)
+                                         .SetColumns(it => it.Cause == cause)
+                                         .Where(it => it.Id == id)
+                                         .ExecuteCommandAsync();
+            if (update1 < 1)
+            {
+                _result.Msg = string.Format("操作失败!");
+                _sqlSugar.RollbackTran();
+                return _result;
+            }
+
+            //设置任务状态
+            var data2 = _sqlSugar.Queryable<Pm_TaskRelevanceUser>().Where(it => it.IsDel == 0 && it.TAId == _taId).ToList();
+            var data3 = data2.Where(it => it.TaskStatus == TaskerEnum.Finished && it.Id != id).ToList();
+            var data4 = data2.Where(it => it.TaskStatus == TaskerEnum.UnFinished && it.Id != id).ToList();
+           
+            if ((data2.Count - 1) == (data3.Count + data4.Count))
+            {
+                var update2 = _sqlSugar.Updateable<Pm_TaskAllocation>()
+                                         .SetColumns(it => it.Status == TaskEnum.UnFinished)
+                                         .Where(it => it.Id == _taId)
+                                         .ExecuteCommand();
+                if (update2 < 1)
+                {
+                    _result.Msg = string.Format("操作失败!");
+                    _sqlSugar.RollbackTran();
+                    return _result;
+                }
+            }
+
+            _result.Msg = string.Format("操作成功!");
+            _result.Code = 0;
+            _sqlSugar.CommitTran();
+
+            return _result;
+        }
+
 
         /// <summary>
         /// 任务确认完成
@@ -658,29 +802,43 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
         public async Task<Result> _TaskScore(TaskAllocationScoreDto dto)
         {
             int portType = dto.PortType;
-            int id = dto.Id;
             if (portType == 1 || portType == 2 || portType == 3)
             {
-                if (id < 1)
+                if (dto.SubId < 1)
                 {
-                    _result.Msg = string.Format("请传入有效的Id参数!");
+                    _result.Msg = string.Format("请传入有效的SubId参数!");
                     return _result;
                 }
 
-                var data = await _sqlSugar.Queryable<Pm_TaskAllocation>()
-                                          .Where(it => it.IsDel == 0 && it.Id == id && it.IsComplete == 1)
-                                          .FirstAsync();
+                //var data = await _sqlSugar.Queryable<Pm_TaskAllocation>()
+                //                          .Where(it => it.IsDel == 0 )
+                //                          .FirstAsync();
+                //if (data == null)
+                //{
+                //    _result.Msg = string.Format("本任务尚未由发布人确认任务完成,不可评分!");
+                //    return _result;
+                //}
+
+                var data = _sqlSugar.Queryable<Pm_TaskRelevanceUser>()
+                                          .Where(it => it.IsDel == 0 && it.Id == dto.SubId)
+                                          .First();
                 if (data == null)
                 {
                     _result.Msg = string.Format("本任务尚未由发布人确认任务完成,不可评分!");
                     return _result;
                 }
 
+                if (data.TaskStatus != TaskerEnum.Finished)
+                {
+                    _result.Msg = string.Format("本任务尚未由发布人确认任务完成,不可评分!");
+                    return _result;
+                }
+
+
                 Pm_TaskRelevanceUser _TaskRelevanceUser = new Pm_TaskRelevanceUser() {
-                    Id = dto.Id,
+                    Id = dto.SubId,
                     Score = dto.Score,
                     Remark = dto.ScoreRemark
-
                 };
 
                 var update = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>(_TaskRelevanceUser)
@@ -701,5 +859,88 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
             }
             return _result;
         }
+
+        /// <summary>
+        /// 任务终止
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> _TaskTermination(int taskId)
+        {
+
+            if (taskId < 1)
+            {
+                _result.Msg = string.Format("请传入有效的taskId参数!");
+                return _result;
+            }
+            _sqlSugar.BeginTran();
+            var taskUpdate = _sqlSugar.Updateable<Pm_TaskAllocation>()
+                                      .SetColumns(it => it.Status == TaskEnum.TaskStop)
+                                      .Where(it => it.Id == taskId)
+                                      .ExecuteCommand();
+            if (taskUpdate < 1)
+            {
+                _result.Msg = "任务终止失败!";
+                _sqlSugar.RollbackTran();
+                return _result;
+            }
+            var subTaskUpdate = _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
+                
+                                      .SetColumns(it => it.TaskStatus == TaskerEnum.TaskStop)
+                                      .Where(it => it.TAId == taskId)
+                                      .ExecuteCommand();
+
+            if (taskUpdate < 1)
+            {
+                _result.Msg = "任务终止失败!";
+                _sqlSugar.RollbackTran();
+                return _result;
+            }
+            _result.Msg = "操作成功!";
+            _result.Code = 0;
+            _sqlSugar.CommitTran();
+            return _result;
+        }
+
+        /// <summary>
+        /// 任务删除
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public async Task<Result> _TaskDel(int taskId)
+        {
+
+            if (taskId < 1)
+            {
+                _result.Msg = string.Format("请传入有效的taskId参数!");
+                return _result;
+            }
+            _sqlSugar.BeginTran();
+            var taskUpdate = _sqlSugar.Updateable<Pm_TaskAllocation>()
+                                      .SetColumns(it => it.IsDel == 1)
+                                      .Where(it => it.Id == taskId)
+                                      .ExecuteCommand();
+            if (taskUpdate < 1)
+            {
+                _result.Msg = "任务删除失败!";
+                _sqlSugar.RollbackTran();
+                return _result;
+            }
+            var subTaskUpdate = _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
+                                      .SetColumns(it => it.IsDel == 1)
+                                      .Where(it => it.TAId == taskId)
+                                      .ExecuteCommand();
+
+            if (taskUpdate < 1)
+            {
+                _result.Msg = "任务删除失败!";
+                _sqlSugar.RollbackTran();
+                return _result;
+            }
+            _result.Msg = "操作成功!";
+            _result.Code = 0;
+            _sqlSugar.CommitTran();
+            return _result;
+        }
     }
 }