Kaynağa Gözat

Merge branch 'master' of http://39.98.153.250:9080/bowintek/EmploymentSite

liao-sea 11 ay önce
ebeveyn
işleme
a58b39983f

+ 18 - 0
src/main/java/com/hz/employmentsite/controller/taskAndLog/DoWorkController.java

@@ -1,6 +1,7 @@
 package com.hz.employmentsite.controller.taskAndLog;
 
 import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseErrorEnum;
 import com.hz.employmentsite.filter.exception.BaseResponse;
 import com.hz.employmentsite.filter.exception.RespGenerstor;
 import com.hz.employmentsite.mapper.PcSiteUserMapper;
@@ -9,6 +10,7 @@ import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.taskAndLog.DoWorkService;
 import com.hz.employmentsite.util.ExcelHelper;
 import com.hz.employmentsite.vo.taskAndLog.DoWorkVo;
+import com.hz.employmentsite.vo.taskAndLog.RecordsCountVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
@@ -54,6 +56,7 @@ public class DoWorkController {
             var curSiteUserInfo = pcSiteUserMapper.selectByExample(siteUserExp).stream().findFirst().orElse(null);
             if(curSiteUserInfo != null){
                 data.siteUserID = curSiteUserInfo.getSiteUserID();
+                data.userId = curSiteUserInfo.getUserID();
             }
         }
         return RespGenerstor.success(data);
@@ -96,4 +99,19 @@ public class DoWorkController {
     public BaseResponse<Integer> delete(@RequestBody List<String> idList){
         return RespGenerstor.success(doWorkService.delete(idList));
     }
+
+    /**
+     * 获取驿站人员指定工作日期所记录的业务数据数量
+     * @param userId 用户ID
+     * @param workTime 工作日期时间
+     * @return 业务数据记录
+     */
+    @GetMapping("/getRecordsCount")
+    public BaseResponse<RecordsCountVo> getRecordsCount(
+            @RequestParam String userId,
+            @RequestParam String workTime
+    ) {
+        RecordsCountVo recordsCount = doWorkService.getRecordsCount(userId, workTime);
+        return RespGenerstor.success(recordsCount);
+    }
 }

+ 10 - 0
src/main/java/com/hz/employmentsite/mapper/PcDoworkMapper.java

@@ -3,6 +3,9 @@ package com.hz.employmentsite.mapper;
 import com.hz.employmentsite.model.PcDowork;
 import com.hz.employmentsite.model.PcDoworkExample;
 import java.util.List;
+import java.util.Map;
+
+import com.hz.employmentsite.vo.taskAndLog.RecordsCountVo;
 import org.apache.ibatis.annotations.Param;
 
 public interface PcDoworkMapper {
@@ -27,4 +30,11 @@ public interface PcDoworkMapper {
     int updateByPrimaryKeySelective(PcDowork row);
 
     int updateByPrimaryKey(PcDowork row);
+
+    /**
+     * 查询工作日志当天记录的企业,求职人员等数据
+     * @param map
+     * @return
+     */
+    RecordsCountVo getRecordCounts(@Param("CreateUserId") String CreateUserId, @Param("WorkTime") String WorkTime);
 }

+ 1 - 1
src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteUserImpl.java

@@ -81,7 +81,7 @@ public class SiteUserImpl implements SiteUserService {
         for (var item: dataList) {
             SelectProps  itemResult = new SelectProps();
             itemResult.setText(item.siteUserName);
-            itemResult.setValue(item.siteUserID);
+            itemResult.setValue(item.userID);
             dataResult.add(itemResult);
         }
         return dataResult;

+ 15 - 3
src/main/java/com/hz/employmentsite/services/impl/taskAndLog/DoWorkImpl.java

@@ -9,12 +9,11 @@ import com.hz.employmentsite.model.PcDoworkExample;
 import com.hz.employmentsite.services.service.taskAndLog.DoWorkService;
 import com.hz.employmentsite.util.StringUtils;
 import com.hz.employmentsite.vo.taskAndLog.DoWorkVo;
+import com.hz.employmentsite.vo.taskAndLog.RecordsCountVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 @Service("DoWorkService")
 public class DoWorkImpl implements DoWorkService {
@@ -89,4 +88,17 @@ public class DoWorkImpl implements DoWorkService {
         pcDoworkMapper.deleteByExample(contactExample);
         return pcDoworkMapper.deleteByExample(contactExample);
     }
+
+    /**
+     * 查询指定用户的指定工作时间,录入了多少业务数据
+     *
+     * @param CreateUserId   用户ID
+     * @param WorkTime 工作日期
+     * @return 业务数据计数Vo
+     */
+    @Override
+    public RecordsCountVo getRecordsCount(String CreateUserId, String WorkTime) {
+        RecordsCountVo recordCounts = pcDoworkMapper.getRecordCounts(CreateUserId, WorkTime);
+        return recordCounts;
+    }
 }

+ 9 - 0
src/main/java/com/hz/employmentsite/services/service/taskAndLog/DoWorkService.java

@@ -2,6 +2,7 @@ package com.hz.employmentsite.services.service.taskAndLog;
 
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.vo.taskAndLog.DoWorkVo;
+import com.hz.employmentsite.vo.taskAndLog.RecordsCountVo;
 
 import java.util.List;
 
@@ -13,4 +14,12 @@ public interface DoWorkService {
     Integer save(DoWorkVo data, String userId);
 
     Integer delete(List<String> idList);
+
+    /**
+     * 查询指定用户的指定工作时间,录入了多少业务数据
+     * @param userId 用户ID
+     * @param workTime 工作日期
+     * @return 业务数据计数Vo
+     */
+    RecordsCountVo getRecordsCount(String userId, String workTime);
 }

+ 4 - 0
src/main/java/com/hz/employmentsite/vo/taskAndLog/DoWorkVo.java

@@ -13,6 +13,7 @@ public class DoWorkVo {
     public String siteUserID;
 
     public String userName;
+    public String userId;
 
     public Integer doTypeID;
     public String logTypeName;
@@ -30,4 +31,7 @@ public class DoWorkVo {
 
     public String streetCode;
     public String streetName;
+
+    public Integer RecordsCompanyNum;
+    public Integer RecordsJobuserNum;
 }

+ 69 - 0
src/main/java/com/hz/employmentsite/vo/taskAndLog/RecordsCountVo.java

@@ -0,0 +1,69 @@
+package com.hz.employmentsite.vo.taskAndLog;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+public class RecordsCountVo {
+    /**
+     * 走访企业数量
+     */
+    public Integer RecordsCompanyNum;
+
+    /**
+     * 登记就业人员数量
+     */
+    public Integer RecordsJobuserNum;
+
+    /**
+     * 收集岗位数量
+     */
+    public Integer RecordsPostNum;
+
+    /**
+     * 收集求职意向数量
+     */
+    public Integer RecordsJobhuntNum;
+
+    public RecordsCountVo() {
+    }
+
+    public RecordsCountVo(Integer recordsCompanyNum, Integer recordsJobuserNum, Integer recordsPostNum, Integer recordsJobhuntNum) {
+        RecordsCompanyNum = recordsCompanyNum;
+        RecordsJobuserNum = recordsJobuserNum;
+        RecordsPostNum = recordsPostNum;
+        RecordsJobhuntNum = recordsJobhuntNum;
+    }
+
+    public Integer getRecordsCompanyNum() {
+        return RecordsCompanyNum;
+    }
+
+    public void setRecordsCompanyNum(Integer recordsCompanyNum) {
+        RecordsCompanyNum = recordsCompanyNum;
+    }
+
+    public Integer getRecordsJobuserNum() {
+        return RecordsJobuserNum;
+    }
+
+    public void setRecordsJobuserNum(Integer recordsJobuserNum) {
+        RecordsJobuserNum = recordsJobuserNum;
+    }
+
+    public Integer getRecordsPostNum() {
+        return RecordsPostNum;
+    }
+
+    public void setRecordsPostNum(Integer recordsPostNum) {
+        RecordsPostNum = recordsPostNum;
+    }
+
+    public Integer getRecordsJobhuntNum() {
+        return RecordsJobhuntNum;
+    }
+
+    public void setRecordsJobhuntNum(Integer recordsJobhuntNum) {
+        RecordsJobhuntNum = recordsJobhuntNum;
+    }
+}

+ 14 - 0
src/main/resources/mapping/PcDoworkMapper.xml

@@ -14,6 +14,13 @@
     <result column="StreetCode" jdbcType="VARCHAR" property="streetCode" />
     <result column="WorkTime" jdbcType="TIMESTAMP" property="workTime" />
   </resultMap>
+
+  <resultMap id="RecordsCountMap" type="com.hz.employmentsite.vo.taskAndLog.RecordsCountVo">
+    <result column="RecordsCompanyNum" jdbcType="INTEGER" property="RecordsCompanyNum" />
+    <result column="RecordsJobuserNum" jdbcType="INTEGER" property="RecordsJobuserNum" />
+    <result column="RecordsPostNum" jdbcType="INTEGER" property="siteUserID" />
+    <result column="RecordsJobhuntNum" jdbcType="INTEGER" property="RecordsJobhuntNum" />
+  </resultMap>
   <sql id="Example_Where_Clause">
     <where>
       <foreach collection="oredCriteria" item="criteria" separator="or">
@@ -304,4 +311,11 @@
     where DoworkID = #{doworkID,jdbcType=VARCHAR}
   </update>
 
+  <select id="getRecordCounts" resultType="com.hz.employmentsite.vo.taskAndLog.RecordsCountVo">
+    SELECT
+      ( SELECT COUNT(*) FROM pc_company WHERE CreateUserID = #{CreateUserId} AND DATE(CreateTime) = #{WorkTime} ) AS RECORDSCOMPANYNUM,
+      ( SELECT COUNT(*) FROM pc_jobuser WHERE CreateUserID = #{CreateUserId} AND DATE(CreateTime) = #{WorkTime} ) AS RECORDSJOBUSERNUM,
+      ( SELECT COUNT(*) FROM pc_post WHERE CreateUserID = #{CreateUserId} AND DATE(CreateTime) = #{WorkTime} ) AS RECORDSPOSTNUM,
+      ( SELECT COUNT(*) FROM pc_jobhunt WHERE CreateUserID = #{CreateUserId} AND DATE(CreateTime) = #{WorkTime} ) AS RECORDSJOBHUNTNUM
+  </select>
 </mapper>

+ 10 - 2
src/main/resources/mapping/cquery/DoWorkCQuery.xml

@@ -2,8 +2,16 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.hz.employmentsite.mapper.cquery.DoWorkCQuery">
     <select id="getList" resultType="com.hz.employmentsite.vo.taskAndLog.DoWorkVo">
-        select workLog.*,siteUser.SiteUserName as UserName,region.name as RegionName,street.name as StreetName,dic_logType.name as LogTypeName from pc_dowork workLog
-        left join (select * from sys_dictionary_item where DictionaryCode ='LogType' ) dic_logType   on workLog.doTypeID = dic_logType.Value
+        select workLog.*,siteUser.SiteUserName as UserName,siteUser.UserId as UserId, region.name as RegionName,street.name as
+        StreetName,dic_logType.name as LogTypeName,
+        (
+        SELECT COUNT(company.CompanyID) FROM pc_company company WHERE company.CreateUserID = workLog.CreateUserID AND DATE(company.CreateTime) = DATE(workLog.WorkTime)
+        ) AS RecordsCompanyNum,
+        (
+        SELECT COUNT(jobuser.JobuserID) FROM pc_jobuser jobuser WHERE jobuser.CreateUserID = workLog.CreateUserID AND DATE(jobuser.CreateTime) = DATE(workLog.WorkTime)
+        ) AS RecordsJobuserNum
+        from pc_dowork workLog
+        left join (select * from sys_dictionary_item where DictionaryCode ='LogType' ) dic_logType on workLog.doTypeID = dic_logType.Value
         left join area_code region on workLog.RegionCode = region.code
         left join area_code street on workLog.StreetCode = street.code
         left join pc_site_user siteUser on workLog.SiteUserID = siteUser.SiteUserID

+ 21 - 0
vue/src/api/taskAndLog/dowork.ts

@@ -55,3 +55,24 @@ export function delWorkLog(data: any) {
     },
   );
 }
+
+/**
+ * 按登记用户ID和工作日期查询驿站人员当天工作所记录的业务数据数量
+ * @param userId 用户ID
+ * @param workTime 工作时间
+ */
+export function getRecordsCount(userId: string, workTime: string) {
+  return request<object>(
+    {
+      url: 'taskAndLog/doWork/getRecordsCount',
+      method: 'get',
+      params: {
+        userId,
+        workTime,
+      }
+    },
+    {
+      isNew: true,
+    }
+  )
+}

+ 54 - 4
vue/src/views/taskAndLog/dowork/edit.vue

@@ -7,8 +7,8 @@
           <a-form-item label="姓名" name="siteUserID" :label-col="{span:7}" :rules="[{ required: true, message: '请选择站点人员!' }]">
             <label v-if="opCategory==3">{{dataModel.userName}}</label>
             <a-select ref="select"   show-search optionFilterProp="label"
-                      v-model:value="dataModel.siteUserID"
-                      :allow-clear="true">
+                      v-model:value="dataModel.userId"
+                      :allow-clear="true" @change="siteUserChange">
               <a-select-option v-for="item in siteUserList" :label="item.text" :value="item.value" :key="item.value">
                 <span>{{ item.text }}</span>
               </a-select-option>
@@ -26,7 +26,7 @@
         <a-col :span="8">
           <a-form-item label="完成时间" name="workTime" :label-col="{span:7}" :rules="[{ required: true, message: '请选择完成时间!' }]">
             <label v-if="opCategory==3">{{dataModel.workTime}}</label>
-            <a-date-picker  v-model:value="dataModel.workTime" picker="date" value-format="YYYY-MM-DD" />
+            <a-date-picker  v-model:value="dataModel.workTime" picker="date" value-format="YYYY-MM-DD" @change="workTimeChange" />
           </a-form-item>
         </a-col>
       </a-row>
@@ -51,6 +51,13 @@
       <a-row>
         <a-textarea :auto-size="{ minRows: 4, maxRows: 10 }"  v-model:value="dataModel.workContent"  :disabled="opCategory==3" placeholder="工作内容" />
       </a-row>
+      <a-divider orientation="left">工作量完成情况</a-divider>
+      <a-descriptions bordered :column="2">
+        <a-descriptions-item label="走访企业数量">{{recordsCount.RecordsCompanyNum}}</a-descriptions-item>
+        <a-descriptions-item label="收集岗位">{{recordsCount.RecordsPostNum}}</a-descriptions-item>
+        <a-descriptions-item label="登记就业人数">{{recordsCount.RecordsJobuserNum}}</a-descriptions-item>
+        <a-descriptions-item label="求职意向">{{recordsCount.RecordsJobhuntNum}}</a-descriptions-item>
+      </a-descriptions>
       <a-divider orientation="left">其他</a-divider>
       <b-upload-file :fileRefId="dataModel.doWorkID" :readonly="false" :multiple="true"
                      :setFileList="setFileList" :accept="'.pdf,.png,.jpg'" :disabled="opCategory==3"></b-upload-file>
@@ -64,7 +71,7 @@
 <script lang="ts">
 import {defineComponent, reactive, ref, toRefs} from "vue";
 import {useTabsViewStore} from "@/store/modules/tabsView";
-import {get, save} from "@/api/taskAndLog/dowork";
+import {get, getRecordsCount, save} from "@/api/taskAndLog/dowork";
 import BUploadFile from "@/components/file/uploadFile.vue";
 import type {SelectProps} from "ant-design-vue";
 import {getSysDictionaryList} from "@/api/system/dictionary";
@@ -97,6 +104,12 @@ export default defineComponent({
     const streetList = ref<SelectProps['options']>();
     const logTypeList = ref<SelectProps["options"]>();
     const siteUserList = ref<SelectProps["options"]>();
+    const recordsCount = reactive({
+      RecordsCompanyNum:null,
+      RecordsJobuserNum:null,
+      RecordsPostNum:null,
+      RecordsJobhuntNum:null,
+    });
 
     const fileList = ref();
     const setFileList = (files) => {
@@ -130,6 +143,7 @@ export default defineComponent({
       getSiteUserList();
       get(doWorkID).then((result: any) => {
         formData.dataModel = result;
+        findRecordsCount();
         // console.log("dataModel",formData.dataModel);
         if (formData.dataModel.regionCode != null){
           getStreetList();
@@ -155,6 +169,39 @@ export default defineComponent({
       });
     };
 
+    /**
+     * 记录人员变更
+     * @param value 变更后的值
+     */
+    const siteUserChange = (value) => {
+      if (value) {
+        findRecordsCount();
+      }
+    }
+
+    /**
+     * 工作时间变更
+     * @param value 变更后的值
+     */
+    const workTimeChange = (value) => {
+      if (value) {
+        findRecordsCount()
+      }
+    }
+
+    /**
+     * 查询工作记录业务数量
+     */
+    const findRecordsCount = () => {
+      if (formData.dataModel.userId && formData.dataModel.workTime) {
+        getRecordsCount(formData.dataModel.userId, formData.dataModel.workTime).then((res) => {
+          // 赋值
+          Object.keys(recordsCount).forEach(key => {
+            recordsCount[key] = res[key];
+          })
+        });
+      }
+    }
 
 
     return {
@@ -174,6 +221,9 @@ export default defineComponent({
       regionChange,
       setFileList,
       onSelectChange,
+      recordsCount,
+      siteUserChange,
+      workTimeChange,
     };
   },
   created() {

+ 2 - 0
vue/src/views/taskAndLog/dowork/index.vue

@@ -144,6 +144,8 @@ export default defineComponent({
       {title: '工作情况', dataIndex: 'workContent', key: 'workContent', align: "center"},
       {title: '所属县区', dataIndex: 'regionName', key: 'regionName', align: "center"},
       {title: '所属街道', dataIndex: 'streetName', key: 'streetName', align: "center"},
+      {title: '走访企业数量', dataIndex: 'RecordsCompanyNum', key: 'RecordsCompanyNum', align: "center"},
+      {title: '登记就业人员人数', dataIndex: 'RecordsJobuserNum', key: 'RecordsJobuserNum', align: "center"},
       {title: '操作', key: 'operation', fixed: 'right', width: 100, align: "center"},
     ];
     const pagination = computed(() => ({