liao-sea 1 год назад
Родитель
Сommit
f223635e1a
52 измененных файлов с 847 добавлено и 428 удалено
  1. 0 10
      h5app/src/api/workTask/index.ts
  2. 3 3
      h5app/src/views/pages/jobhunt/edit.vue
  3. 1 1
      h5app/src/views/pages/jobhunt/educationEdit.vue
  4. 21 1
      h5app/src/views/pages/jobhunt/jobHuntEdit.vue
  5. 0 2
      h5app/src/views/pages/work/log/edit.vue
  6. 26 16
      h5app/src/views/pages/work/task/edit.vue
  7. 6 6
      h5app/src/views/pages/work/task/list.vue
  8. 14 6
      h5app/src/views/pages/work/task/myTask.vue
  9. 24 3
      src/main/java/com/hz/employmentsite/controller/UserController.java
  10. 3 4
      src/main/java/com/hz/employmentsite/controller/jobUserManager/JobHuntController.java
  11. 3 2
      src/main/java/com/hz/employmentsite/controller/taskAndLog/DoTaskController.java
  12. 12 0
      src/main/java/com/hz/employmentsite/controller/taskAndLog/DoWorkController.java
  13. 2 0
      src/main/java/com/hz/employmentsite/mapper/cquery/DoTaskCQuery.java
  14. 10 0
      src/main/java/com/hz/employmentsite/model/PcJobhunt.java
  15. 70 0
      src/main/java/com/hz/employmentsite/model/PcJobhuntExample.java
  16. 10 0
      src/main/java/com/hz/employmentsite/model/PcSite.java
  17. 70 0
      src/main/java/com/hz/employmentsite/model/PcSiteExample.java
  18. 52 10
      src/main/java/com/hz/employmentsite/services/impl/UserServiceImpl.java
  19. 16 4
      src/main/java/com/hz/employmentsite/services/impl/baseSettings/InstitutionImpl.java
  20. 18 4
      src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteInfoImpl.java
  21. 12 11
      src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteUserImpl.java
  22. 51 27
      src/main/java/com/hz/employmentsite/services/impl/companyService/CompanyServiceImpl.java
  23. 17 12
      src/main/java/com/hz/employmentsite/services/impl/companyService/PostServiceImpl.java
  24. 30 7
      src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobHuntServiceImpl.java
  25. 13 4
      src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobUserServiceImpl.java
  26. 21 22
      src/main/java/com/hz/employmentsite/services/impl/taskAndLog/DoTaskImpl.java
  27. 3 1
      src/main/java/com/hz/employmentsite/services/service/UserService.java
  28. 1 1
      src/main/java/com/hz/employmentsite/services/service/taskAndLog/DoTaskService.java
  29. 1 0
      src/main/java/com/hz/employmentsite/vo/baseSettings/SiteInfoVo.java
  30. 2 1
      src/main/java/com/hz/employmentsite/vo/companyService/CompanyVo.java
  31. 1 0
      src/main/java/com/hz/employmentsite/vo/jobUserManager/JobHuntVo.java
  32. 21 5
      src/main/resources/mapping/PcJobhuntMapper.xml
  33. 22 5
      src/main/resources/mapping/PcSiteMapper.xml
  34. 25 6
      src/main/resources/mapping/cquery/DoTaskCQuery.xml
  35. 3 2
      src/main/resources/mapping/cquery/JobHuntCQuery.xml
  36. 1 0
      src/main/resources/mapping/cquery/SiteInfoCQuery.xml
  37. BIN
      src/main/resources/static/doc/template/企业信息导入模板.xlsx
  38. BIN
      src/main/resources/static/doc/template/岗位信息导入模板.xlsx
  39. BIN
      src/main/resources/static/doc/template/求职意向导入模板.xlsx
  40. 30 2
      vue/src/api/system/user/index.ts
  41. 1 1
      vue/src/views/baseSettings/siteInfo/edit.vue
  42. 8 7
      vue/src/views/companyService/company/index.vue
  43. 18 18
      vue/src/views/companyService/post/index.vue
  44. 11 7
      vue/src/views/jobUserManager/jobhunt/edit.vue
  45. 10 3
      vue/src/views/jobUserManager/jobhunt/index.vue
  46. 2 0
      vue/src/views/system/role/roleUser.vue
  47. 127 0
      vue/src/views/system/users/addUser.vue
  48. 21 174
      vue/src/views/system/users/index.vue
  49. 5 14
      vue/src/views/taskAndLog/dotask/edit.vue
  50. 9 3
      vue/src/views/taskAndLog/dotask/index.vue
  51. 13 18
      vue/src/views/taskAndLog/dowork/edit.vue
  52. 7 5
      vue/src/views/taskAndLog/dowork/index.vue

+ 0 - 10
h5app/src/api/workTask/index.ts

@@ -11,16 +11,6 @@ export function getWorkTaskList(params: any) {
     );
 }
 
-export function getWorkTaskByID(id: any) {
-    return request(
-        {
-            url: 'taskAndLog/doTask/getDataById',
-            method: 'get',
-            params: {id:id},
-        },
-        { isNew: true },
-    );
-}
 
 export function saveWorkTask(data: any) {
     return request(

+ 3 - 3
h5app/src/views/pages/jobhunt/edit.vue

@@ -167,7 +167,7 @@
               </ion-select-option>
             </ion-select>
           </ion-item>
-          <ion-label class="title-item">身高</ion-label>
+          <ion-label class="title-item">身高(cm)</ion-label>
           <ion-item>
             <ion-input name="height" id="height"  style="text-align: left;"  class="custom"
                        placeholder="请输入身高" v-model="baseData.height" ></ion-input>
@@ -175,9 +175,9 @@
           <ion-label class="title-item">视力</ion-label>
           <ion-item>
             <ion-input name="vision" id="vision"  style="text-align: left;" class="custom"
-                       placeholder="请输入视力" v-model="baseData.vision" ></ion-input>
+                       placeholder="如1.0" v-model="baseData.vision" ></ion-input>
           </ion-item>
-          <ion-label class="title-item">体重</ion-label>
+          <ion-label class="title-item">体重(kg)</ion-label>
           <ion-item>
             <ion-input name="weight" id="weight"  style="text-align: left;" class="custom"
                        placeholder="请输入体重" v-model="baseData.weight" ></ion-input>

+ 1 - 1
h5app/src/views/pages/jobhunt/educationEdit.vue

@@ -188,10 +188,10 @@ export default defineComponent({
       loading.value = true;
       await getCultureRankList();
       const reqData = await getEducationByID(educationID);
-      curStepData.value.statusVal = status;
       educationData.dataModel = reqData;
       educationData.dataModel.jobuserID = jobUserID;
       console.log("初始化教育经历",educationData.dataModel);
+      curStepData.value.statusVal = status;
       loading.value = false;
     };
 

+ 21 - 1
h5app/src/views/pages/jobhunt/jobHuntEdit.vue

@@ -90,6 +90,22 @@
                          placeholder="请输入期望工作地区" v-model="dataModel.areaWork" ></ion-input>
               <ion-note slot="error">期望工作地区不能为空</ion-note>
             </ion-item>
+            <ion-label class="title-item">可到职日期<span class="danger">*</span></ion-label>
+            <ion-item  :class="[huntDataValid.dataModel.inDate.$error?'ion-invalid':'ion-valid']">
+              <ion-datetime-button datetime="inDate" style="background-color: white;"></ion-datetime-button>
+              <ion-modal :keep-contents-mounted="true">
+                <ion-datetime name="inDate" id="inDate" placeholder="可到职日期"
+                              v-model="dataModel.inDate"  :prefer-wheel="true"
+                              dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
+                              :show-default-buttons="true">
+                </ion-datetime>
+              </ion-modal>
+            </ion-item>
+            <ion-label class="title-item">其他要求</ion-label>
+            <ion-item>
+              <ion-textarea name="areaWork" id="otherDemand" style="text-align: left;" class="custom"  rows="4"
+                         placeholder="请输入其他要求" v-model="dataModel.otherDemand" ></ion-textarea>
+            </ion-item>
           </ion-item-group>
         </ion-list>
     </ion-content>
@@ -117,6 +133,7 @@ import {getJobHuntByID,saveJobHunt} from "@/api/jobHuntInfo";
 import {getSysDictionaryList} from '@/api/system/dictionary';
 import {getPostList} from '@/api/post'
 import {alertController, onIonViewDidEnter} from "@ionic/vue";
+import dayjs from "dayjs";
 
 interface huntModel {
   dataModel: any;
@@ -164,6 +181,8 @@ export default defineComponent({
         maxSalary:null,
         workYear:null,
         areaWork:null,
+        inDate:dayjs().format("YYYY-MM-DD"),
+        otherDemand:null
       }});
     const huntDataRule = computed(()=>{
       return {dataModel:{
@@ -175,6 +194,7 @@ export default defineComponent({
           maxSalary:{required},
           workYear:{required},
           areaWork:{required},
+          inDate:{required}
         }}});
     const huntDataValid = useVuelidate(huntDataRule,jobHuntData);
 
@@ -232,6 +252,7 @@ export default defineComponent({
 
 
     const loadData = async (jobHuntID: any,jobUserID:any,status:any) => {
+      loading.value = true;
       await getAllPostList();
       await getJobHuntTypeList();
       await getJobUserTypeList();
@@ -250,7 +271,6 @@ export default defineComponent({
 
     onIonViewDidEnter(() => {
       if (route.query.reload){
-        loading.value = true;
         reload(route.query.jobHuntID,route.query.jobUserID,route.query.status);
       }
     });

+ 0 - 2
h5app/src/views/pages/work/log/edit.vue

@@ -125,7 +125,6 @@ export default defineComponent({
     const onSave = async function (){
       const isFormCorrect = await workLogValid.value.$validate();
       if(!isFormCorrect){
-        console.log("当前数据",workLogData.dataModel);
         await presentAlert("请填写完整的信息!");
         return null;
       }
@@ -157,7 +156,6 @@ export default defineComponent({
       workLogData.dataModel = reqData;
       if(workLogData.dataModel.workTime==null){
          workLogData.dataModel.workTime = dayjs(new Date().toLocaleDateString()).format("YYYY-MM-DD")+"T00:00:00.000+08:00";
-         /*workLogData.dataModel.workTime = "2021-09-01T00:00:00.000+08:00";*/
       }
       console.log("初始化dataModel",workLogData.dataModel);
       loading.value = false;

+ 26 - 16
h5app/src/views/pages/work/task/edit.vue

@@ -17,20 +17,21 @@
           </div>
         </ion-item>
         <ion-list>
-          <ion-label class="title-item">任务名称<span class="danger">*</span></ion-label>
+          <ion-label class="title-item">任务名称</ion-label>
           <ion-item> <!--:class="[workTaskValid.dataModel.doTaskName.$error?'ion-invalid':'ion-valid']"-->
 <!--            <ion-input name="doTaskName" id="doTaskName" style="text-align: left;" class="custom"
                        placeholder="请输入任务名称" v-model="dataModel.doTaskName" ></ion-input>-->
 <!--            <ion-note slot="error">任务名称不能为空</ion-note>-->
               {{dataModel.doTaskName}}
           </ion-item>
-          <ion-label class="title-item">指派人<span class="danger">*</span></ion-label>
+          <ion-label class="title-item">任务执行人员</ion-label>
           <ion-item>
             {{curTaskUserStr}}
           </ion-item>
-          <ion-label class="title-item">完成时间<span class="danger">*</span></ion-label>
-          <ion-item><!--:class="[workTaskValid.dataModel.finishTime.$error?'ion-invalid':'ion-valid']"-->
-<!--            <ion-datetime-button datetime="finishTime"></ion-datetime-button>
+          <ion-label class="title-item">完成时间</ion-label>
+          <ion-item>
+            <!--:class="[workTaskValid.dataModel.finishTime.$error?'ion-invalid':'ion-valid']"-->
+            <!--<ion-datetime-button datetime="finishTime"></ion-datetime-button>
             <ion-modal :keep-contents-mounted="true">
               <ion-datetime id="finishTime" placeholder="完成时间"
                             v-model="dataModel.finishTime" :prefer-wheel="true"
@@ -38,32 +39,33 @@
                             :show-default-buttons="true">
               </ion-datetime>
             </ion-modal>-->
-<!--            <ion-note slot="error">完成时间不能为空</ion-note>-->
+            <!--<ion-note slot="error">完成时间不能为空</ion-note>-->
               {{ dayjs(dataModel.finishTime).format("YYYY-MM-DD")}}
           </ion-item>
-          <ion-label class="title-item">任务类型<span class="danger">*</span></ion-label>
+          <ion-label class="title-item">任务类型</ion-label>
           <ion-item>
             <!--:class="[workTaskValid.dataModel.workTypeID.$error?'ion-invalid':'ion-valid']"  style="margin-bottom: 10px;">-->
-<!--            <ion-select name="workTypeID"  id="workTypeID" okText="确定" cancelText="取消"  v-model="dataModel.workTypeID"
+            <!--<ion-select name="workTypeID"  id="workTypeID" okText="确定" cancelText="取消"  v-model="dataModel.workTypeID"
                         interface="action-sheet" placeholder="请选择任务类型" style="width:100%;text-align: left;"  >
               <ion-select-option v-for="(it,key) in taskTypeList" :key="key" :value="it.value" >
                 {{ it.name }}
               </ion-select-option>
             </ion-select>-->
-<!--            <ion-note slot="error">任务类型不能为空</ion-note>-->
+            <!--<ion-note slot="error">任务类型不能为空</ion-note>-->
               {{dataModel.workTypeName}}
           </ion-item>
-          <ion-label class="title-item">任务内容<span class="danger">*</span></ion-label>
-          <ion-item>  <!--:class="[workTaskValid.dataModel.content.$error?'ion-invalid':'ion-valid']">-->
+          <ion-label class="title-item">任务内容</ion-label>
+          <ion-item>
+            <!--:class="[workTaskValid.dataModel.content.$error?'ion-invalid':'ion-valid']">-->
             <ion-textarea name="content" id="content" v-model="dataModel.content"  label-placement="stacked"
                           placeholder="请输入工作内容" rows="8"  class="custom"></ion-textarea>
-<!--            <ion-note slot="error">任务内容不能为空</ion-note>-->
+            <!--<ion-note slot="error">任务内容不能为空</ion-note>-->
           </ion-item>
         </ion-list>
       </form>
 
     </ion-content>
-<!--    <ion-footer>
+    <!--<ion-footer>
       <ion-button shape="round" expand="block" @click="onSave">提交</ion-button>
     </ion-footer>-->
   </ion-page>
@@ -71,7 +73,7 @@
 <script lang="ts">
 import {defineComponent, reactive, ref, toRefs} from "vue";
 import {getSysDictionaryList} from '@/api/system/dictionary';
-import {getWorkTaskByID,getWorkUserList} from '@/api/workTask';
+import {getMyWorkTasks,getWorkUserList} from '@/api/workTask';
 import {useRoute, useRouter} from "vue-router";
 import {onIonViewDidEnter} from "@ionic/vue";
 import {arrowBackOutline} from 'ionicons/icons';
@@ -112,6 +114,13 @@ export default defineComponent({
     const taskTypeList=ref<SelectProps[]>([]);
     const curTaskUserList = ref<SiteUserModel[]>([]);
     const curTaskUserStr = ref("");
+    const searchParamsState = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      total:0,
+      doTaskID:'',
+      taskName: ''
+    });
     const workTaskData = reactive<workTaskModel>({
       dataModel:{
         doTaskID:null,
@@ -188,8 +197,9 @@ export default defineComponent({
       curTaskUserStr.value ="";
       await getWorkTypeList();
       await loadCurTaskUserList(doTaskID);
-      const reqData = await getWorkTaskByID(doTaskID);
-      workTaskData.dataModel = reqData;
+      searchParamsState.doTaskID = doTaskID;
+      const reqData = await getMyWorkTasks(searchParamsState);
+      workTaskData.dataModel = reqData.list[0];
       console.log("初始化dataModel",workTaskData.dataModel);
     };
 

+ 6 - 6
h5app/src/views/pages/work/task/list.vue

@@ -13,7 +13,7 @@
     </ion-header>
     <ion-content>
       <ion-item style="margin: 10px 0;">
-        <ion-input placeholder="请输入任务名称"  class="custom" v-model="searchParamsState.name"
+        <ion-input placeholder="请输入任务名称"  class="custom" v-model="searchParamsState.taskName"
                    style="border: 1px solid #f2f2f5;height: 33px;width: 70px;margin-left: 10px;border-radius: 14px;--padding-start: 10px;" ></ion-input>
         <ion-button slot="end" style="height: 33px;width: 70px;margin-left: 10px;--box-shadow: none;--border-radius: 14px;" @click="onSearch">搜索</ion-button>
       </ion-item>
@@ -50,7 +50,7 @@ import {useRouter} from "vue-router";
 import {arrowBackOutline, ellipse, addCircleOutline} from 'ionicons/icons';
 import {IonIcon, onIonViewDidEnter} from '@ionic/vue';
 import BEmpty from "@/components/empty.vue";
-import {getWorkTaskList} from '@/api/workTask';
+import {getMyWorkTasks} from '@/api/workTask';
 
 export default defineComponent({
   name: 'WorkLogList',
@@ -60,16 +60,16 @@ export default defineComponent({
       pageIndex: 1,
       pageSize: 10,
       total:0,
-      name: ''
-    })
-    const loading =ref(true);
+      taskName: ''
+    });
+    const loading = ref(true);
     const dataList = ref<any>([]);
     const router = useRouter();
     const colors = ref(["secondary", "tertiary", "success", "warning"]);
 
     const loadData = async function () {
       loading.value = true;
-      const result: any = await getWorkTaskList(searchParamsState);
+      const result: any = await getMyWorkTasks(searchParamsState);
       dataList.value = [];
       dataList.value = dataList.value.concat(result.list);
       console.log("dataList",dataList.value);

+ 14 - 6
h5app/src/views/pages/work/task/myTask.vue

@@ -25,7 +25,7 @@
       </form>
     </ion-content>
     <ion-footer>
-      <ion-button shape="round" expand="block"  @click="onSave" :disabled="dataModel.taskStatus==1" >完成</ion-button>
+      <ion-button shape="round" expand="block"  @click="onSave" :disabled="dataModel.userTaskStatus==1" >完成</ion-button>
     </ion-footer>
     <ion-loading
         :is-open="loading"
@@ -36,11 +36,12 @@
 </template>
 <script lang="ts">
 import {defineComponent, reactive, ref, toRefs} from "vue";
-import {getWorkTaskByID,taskFinish} from '@/api/workTask';
+import {getMyWorkTasks,taskFinish} from '@/api/workTask';
 import {useRoute, useRouter} from "vue-router";
 import {alertController, onIonViewDidEnter} from "@ionic/vue";
 import {arrowBackOutline} from 'ionicons/icons';
 import dayjs from "dayjs";
+import {get} from "@/api/common";
 
 interface CurDataProps{
   siteUserID:string,
@@ -77,7 +78,13 @@ export default defineComponent({
         taskStatus:0,
         taskStatusName:'',
       }});
-
+    const searchParamsState = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      total:0,
+      doTaskID:'',
+      taskName: ''
+    });
     const presentAlert = async (message: string) => {
       const alert = await alertController.create({
         header: '错误!',
@@ -107,10 +114,11 @@ export default defineComponent({
 
     const loadData = async (doTaskID: any) => {
       loading.value = true;
-      const reqData = await getWorkTaskByID(doTaskID);
-      myTaskData.dataModel = reqData;
+      searchParamsState.doTaskID = doTaskID;
+      const reqData = await getMyWorkTasks(searchParamsState);
+      myTaskData.dataModel = reqData.list[0];
       loading.value = false;
-      console.log("myTaskData",myTaskData.dataModel);
+      console.log("当前dataModel",myTaskData.dataModel);
     };
 
     const reload = (doTaskID: any) => {

+ 24 - 3
src/main/java/com/hz/employmentsite/controller/UserController.java

@@ -4,6 +4,7 @@ import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.filter.exception.BaseResponse;
 import com.hz.employmentsite.filter.exception.RespGenerstor;
 import com.hz.employmentsite.model.SysMenu;
+import com.hz.employmentsite.model.SysUser;
 import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.UserService;
 import com.hz.employmentsite.util.DateUtils;
@@ -11,12 +12,16 @@ import com.hz.employmentsite.util.DesUtils;
 import com.hz.employmentsite.util.JsonMapper;
 import com.hz.employmentsite.vo.DesModel;
 import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.vo.baseSettings.InstitutionVo;
+import com.hz.employmentsite.vo.user.UserInfoModel;
 import lombok.Data;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.print.DocFlavor;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.UUID;
 
 @RestController
 @RequestMapping(value = "/api/user")
@@ -47,10 +52,26 @@ public class UserController {
     }
 
     @ResponseBody
-    @GetMapping("/updateUserStatu")
-    public BaseResponse<Map<String, Object>> updateUserStatu(String userId, Integer statu) {
+    @GetMapping("/getUserInfo")
+    public BaseResponse getUserInfo(@RequestParam("userId") String userId) {
+        var data = userService.getUserInfo(userId);
+        if (data == null) {
+            data = new UserInfoModel();
+            data.userID = UUID.randomUUID().toString();
+        }
+        return RespGenerstor.success(data);
+    }
+
+    @PostMapping("save")
+    public BaseResponse<Integer> save(@RequestBody SysUser data) {
+        return RespGenerstor.success(userService.save(data,accountService.getLoginUserID()));
+    }
+
+    @ResponseBody
+    @GetMapping("/updateUserStatus")
+    public BaseResponse<Map<String, Object>> updateUserStatus(String userId, Integer status) {
 
-        return RespGenerstor.success(userService.updateUserStatu(userId, statu));
+        return RespGenerstor.success(userService.updateUserStatus(userId, status));
 
     }
 

+ 3 - 4
src/main/java/com/hz/employmentsite/controller/jobUserManager/JobHuntController.java

@@ -9,14 +9,12 @@ import com.hz.employmentsite.services.service.jobUserManager.JobHuntService;
 import com.hz.employmentsite.util.ExcelHelper;
 import com.hz.employmentsite.vo.baseSettings.SiteInfoVo;
 import com.hz.employmentsite.vo.jobUserManager.JobHuntVo;
+import lombok.Data;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 @RestController
 @RequestMapping(value = "/api/jobUserService/jobHunt")
@@ -56,6 +54,7 @@ public class JobHuntController {
         if (data == null) {
             data = new JobHuntVo();
             data.jobHuntID = UUID.randomUUID().toString();
+            data.setInDate(new Date());
         }
         return RespGenerstor.success(data);
     }

+ 3 - 2
src/main/java/com/hz/employmentsite/controller/taskAndLog/DoTaskController.java

@@ -45,8 +45,9 @@ public class DoTaskController {
 
     @ResponseBody
     @GetMapping("/getMyWorkTasks")
-    public BaseResponse getMyTasks(@RequestParam("pageIndex") int pageIndex, @RequestParam("pageSize") int pageSize) {
-        PageInfo<DoTaskVo> result = doTaskService.getMyTasks(pageIndex,pageSize,accountService.getLoginUserID());
+    public BaseResponse getMyTasks(@RequestParam("pageIndex") int pageIndex, @RequestParam("pageSize") int pageSize,
+                                   @RequestParam(required = false) String doTaskID,@RequestParam(required = false) String taskName) {
+        PageInfo<DoTaskVo> result = doTaskService.getMyTasks(pageIndex,pageSize,doTaskID,taskName,accountService.getLoginUserID());
         return RespGenerstor.success(result);
     }
 

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

@@ -3,6 +3,8 @@ package com.hz.employmentsite.controller.taskAndLog;
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.filter.exception.BaseResponse;
 import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.mapper.PcSiteUserMapper;
+import com.hz.employmentsite.model.PcSiteUserExample;
 import com.hz.employmentsite.services.service.AccountService;
 import com.hz.employmentsite.services.service.taskAndLog.DoWorkService;
 import com.hz.employmentsite.util.ExcelHelper;
@@ -25,6 +27,9 @@ public class DoWorkController {
     @Autowired
     private DoWorkService doWorkService;
 
+    @Autowired
+    private PcSiteUserMapper pcSiteUserMapper;
+
     @Autowired
     private ExcelHelper excelHelper;
 
@@ -44,6 +49,13 @@ public class DoWorkController {
         if (data == null) {
             data = new DoWorkVo();
             data.doWorkID = UUID.randomUUID().toString();
+            PcSiteUserExample siteUserExp = new PcSiteUserExample();
+            PcSiteUserExample.Criteria siteUserCro = siteUserExp.createCriteria();
+            siteUserCro.andUserIDEqualTo(accountService.getLoginUserID());
+            var curSiteUserInfo = pcSiteUserMapper.selectByExample(siteUserExp).stream().findFirst().orElse(null);
+            if(curSiteUserInfo != null){
+                data.siteUserID = curSiteUserInfo.getSiteUserID();
+            }
         }
         return RespGenerstor.success(data);
     }

+ 2 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/DoTaskCQuery.java

@@ -13,6 +13,8 @@ public interface DoTaskCQuery {
                            @Param("regionCode") String regionCode, @Param("streetCode") String streetCode,
                            @Param("workTypeId") String workTypeId, @Param("taskStatus") Integer taskStatus);
 
+    List<DoTaskVo> getListByUserID(@Param("siteUserID") String siteUserID,@Param("doTaskID") String doTaskID,@Param("taskName")String taskName);
+
     List<DoTaskUserVo> getWorkUserList(String doTaskID);
 
     List<SiteUserVo> getUserList();

+ 10 - 0
src/main/java/com/hz/employmentsite/model/PcJobhunt.java

@@ -36,6 +36,8 @@ public class PcJobhunt {
 
     private Date modifyTime;
 
+    private String otherDemand;
+
     public String getJobHuntID() {
         return jobHuntID;
     }
@@ -163,4 +165,12 @@ public class PcJobhunt {
     public void setModifyTime(Date modifyTime) {
         this.modifyTime = modifyTime;
     }
+
+    public String getOtherDemand() {
+        return otherDemand;
+    }
+
+    public void setOtherDemand(String otherDemand) {
+        this.otherDemand = otherDemand == null ? null : otherDemand.trim();
+    }
 }

+ 70 - 0
src/main/java/com/hz/employmentsite/model/PcJobhuntExample.java

@@ -1145,6 +1145,76 @@ public class PcJobhuntExample {
             addCriterion("ModifyTime not between", value1, value2, "modifyTime");
             return (Criteria) this;
         }
+
+        public Criteria andOtherDemandIsNull() {
+            addCriterion("OtherDemand is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandIsNotNull() {
+            addCriterion("OtherDemand is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandEqualTo(String value) {
+            addCriterion("OtherDemand =", value, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandNotEqualTo(String value) {
+            addCriterion("OtherDemand <>", value, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandGreaterThan(String value) {
+            addCriterion("OtherDemand >", value, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandGreaterThanOrEqualTo(String value) {
+            addCriterion("OtherDemand >=", value, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandLessThan(String value) {
+            addCriterion("OtherDemand <", value, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandLessThanOrEqualTo(String value) {
+            addCriterion("OtherDemand <=", value, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandLike(String value) {
+            addCriterion("OtherDemand like", value, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandNotLike(String value) {
+            addCriterion("OtherDemand not like", value, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandIn(List<String> values) {
+            addCriterion("OtherDemand in", values, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandNotIn(List<String> values) {
+            addCriterion("OtherDemand not in", values, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandBetween(String value1, String value2) {
+            addCriterion("OtherDemand between", value1, value2, "otherDemand");
+            return (Criteria) this;
+        }
+
+        public Criteria andOtherDemandNotBetween(String value1, String value2) {
+            addCriterion("OtherDemand not between", value1, value2, "otherDemand");
+            return (Criteria) this;
+        }
     }
 
     public static class Criteria extends GeneratedCriteria {

+ 10 - 0
src/main/java/com/hz/employmentsite/model/PcSite.java

@@ -31,6 +31,8 @@ public class PcSite {
 
     private Date modifyTime;
 
+    private String remark;
+
     public String getSiteID() {
         return siteID;
     }
@@ -142,4 +144,12 @@ public class PcSite {
     public void setModifyTime(Date modifyTime) {
         this.modifyTime = modifyTime;
     }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark == null ? null : remark.trim();
+    }
 }

+ 70 - 0
src/main/java/com/hz/employmentsite/model/PcSiteExample.java

@@ -1064,6 +1064,76 @@ public class PcSiteExample {
             addCriterion("ModifyTime not between", value1, value2, "modifyTime");
             return (Criteria) this;
         }
+
+        public Criteria andRemarkIsNull() {
+            addCriterion("Remark is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIsNotNull() {
+            addCriterion("Remark is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkEqualTo(String value) {
+            addCriterion("Remark =", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotEqualTo(String value) {
+            addCriterion("Remark <>", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThan(String value) {
+            addCriterion("Remark >", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+            addCriterion("Remark >=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThan(String value) {
+            addCriterion("Remark <", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLessThanOrEqualTo(String value) {
+            addCriterion("Remark <=", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkLike(String value) {
+            addCriterion("Remark like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotLike(String value) {
+            addCriterion("Remark not like", value, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkIn(List<String> values) {
+            addCriterion("Remark in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotIn(List<String> values) {
+            addCriterion("Remark not in", values, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkBetween(String value1, String value2) {
+            addCriterion("Remark between", value1, value2, "remark");
+            return (Criteria) this;
+        }
+
+        public Criteria andRemarkNotBetween(String value1, String value2) {
+            addCriterion("Remark not between", value1, value2, "remark");
+            return (Criteria) this;
+        }
     }
 
     public static class Criteria extends GeneratedCriteria {

+ 52 - 10
src/main/java/com/hz/employmentsite/services/impl/UserServiceImpl.java

@@ -1,19 +1,19 @@
 package com.hz.employmentsite.services.impl;
 
 import com.hz.employmentsite.enums.DataRangeEnum;
-import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.mapper.*;
 import com.hz.employmentsite.mapper.cquery.SysUserCQuery;
 import com.hz.employmentsite.model.*;
 import com.hz.employmentsite.services.service.UserService;
 import com.hz.employmentsite.util.DateUtils;
+import com.hz.employmentsite.util.StringUtils;
 import com.hz.employmentsite.vo.user.DataRange;
-/*import io.github.ms100.cacheasmulti.cache.annotation.CacheAsMulti;*/
 import com.hz.employmentsite.vo.user.UserInfoModel;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.util.DigestUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -26,12 +26,11 @@ public class UserServiceImpl implements UserService {
     SysUserMapper sysUserMapper;
     @Autowired
     private DateUtils dateUtils;
+    @Autowired
+    private StringUtils stringUtils;
 
-    private String defaultPassword = "02C84926724BAC57A43249F0B49471D0";//zyy@1234
-
-    private String studentRoleID = "8e814c6d-b40b-11ed-be3c-7085c2a9999e";//普通学生
+    private String defaultPassword = "52653B706ADC444F6660FAB66D6DC210";//Hjy@2024
 
-    private Integer studentUserTypeID = 2;
 
 
     @Override
@@ -103,20 +102,63 @@ public class UserServiceImpl implements UserService {
     }
 
     @Override
-    public int updateUserStatu(String userId, Integer statu) {
+    public int updateUserStatus(String userId, Integer status) {
 
         SysUser user = sysUserMapper.selectByPrimaryKey(userId);
-        user.setRecordStatus(statu);
+        user.setRecordStatus(status);
         return sysUserMapper.updateByPrimaryKey(user);
     }
 
     @Override
     public UserInfoModel getUserInfo(String userId) {
-        return sysUserCQuery.selectUserInfo(userId);
+        if (stringUtils.IsNullOrEmpty(userId)) {
+            return null;
+        }else{
+            return sysUserCQuery.selectUserInfo(userId);
+        }
+    }
+
+    @Override
+    public Integer save(SysUser data, String userId) {
+        int result = 0;
+        UserInfoModel record = getUserInfo(data.getUserID());
+        SysUser dbData = record == null ? null : sysUserMapper.selectByPrimaryKey(record.userID);
+        Boolean isExist = dbData != null;
+        if (!isExist) {
+            //添加
+            dbData = new SysUser();
+            dbData.setUserID(data.getUserID());
+            dbData.setName(data.getName());
+            dbData.setLoginID(data.getLoginID());
+            if(data.getPassword()==null){
+                dbData.setPassword(defaultPassword);
+            }else{
+                dbData.setPassword(DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase());
+            }
+            dbData.setUserTypeID(data.getUserTypeID());
+            dbData.setRecordStatus(data.getRecordStatus());
+            dbData.setCreateBy(userId);
+            dbData.setCreateTime(new Date());
+            result = sysUserMapper.insert(dbData);
+        } else {
+            //修改
+            dbData.setName(data.getName());
+            dbData.setLoginID(data.getLoginID());
+            if(data.getPassword()==null){
+                dbData.setPassword(defaultPassword);
+            }else{
+                dbData.setPassword(DigestUtils.md5DigestAsHex(data.getPassword().getBytes()).toUpperCase());
+            }
+            dbData.setUserTypeID(data.getUserTypeID());
+            dbData.setRecordStatus(data.getRecordStatus());
+            dbData.setUpdateBy(userId);
+            dbData.setUpdateTime(new Date());
+            result = sysUserMapper.updateByPrimaryKey(dbData);
+        }
+        return result;
     }
 
     @Override
-//    @Cacheable(value = "getUserInfobyId", key = "#p0")
     public SysUser getIsCacheUserInfobyId(String userId) {
 
         SysUser userInfoVo = sysUserMapper.selectByPrimaryKey(userId);

+ 16 - 4
src/main/java/com/hz/employmentsite/services/impl/baseSettings/InstitutionImpl.java

@@ -2,6 +2,7 @@ package com.hz.employmentsite.services.impl.baseSettings;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.mapper.PcInstitutionMapper;
 import com.hz.employmentsite.mapper.PcSiteInstitutionMapper;
 import com.hz.employmentsite.mapper.cquery.InstitutionCQuery;
@@ -137,9 +138,20 @@ public class InstitutionImpl implements InstitutionService {
 
     @Override
     public Integer delete(List<String> idList){
-        PcInstitutionExample contactExample = new PcInstitutionExample();
-        contactExample.or().andInstitutionIDIn(idList);
-        pcInstitutionMapper.deleteByExample(contactExample);
-        return pcInstitutionMapper.deleteByExample(contactExample);
+        int result = 0;
+        for (String curInstitutionID: idList) {
+            PcSiteInstitutionExample siteInstitutionExp = new PcSiteInstitutionExample();
+            siteInstitutionExp.or().andInstitutionIDEqualTo(curInstitutionID);
+            var curInstitutionSiteList = pcSiteInstitutionMapper.selectByExample(siteInstitutionExp).stream().toList();
+            if( curInstitutionSiteList != null && curInstitutionSiteList.size()>0){
+                throw new BaseException("10004","所选机构已有关联站点信息,不允许删除!");
+            }else{
+                PcInstitutionExample contactExample = new PcInstitutionExample();
+                contactExample.or().andInstitutionIDEqualTo(curInstitutionID);
+                pcInstitutionMapper.deleteByExample(contactExample);
+                result += pcInstitutionMapper.deleteByExample(contactExample);
+            }
+        }
+        return result;
     }
 }

+ 18 - 4
src/main/java/com/hz/employmentsite/services/impl/baseSettings/SiteInfoImpl.java

@@ -2,6 +2,7 @@ package com.hz.employmentsite.services.impl.baseSettings;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.mapper.PcSiteMapper;
 import com.hz.employmentsite.mapper.PcSiteInstitutionMapper;
 import com.hz.employmentsite.mapper.PcSiteUserMapper;
@@ -102,6 +103,7 @@ public class SiteInfoImpl implements SiteInfoService {
             dbData.setDetailAddress(data.getDetailAddress());
             dbData.setRegionCode(data.getRegionCode());
             dbData.setStreetCode(data.getStreetCode());
+            dbData.setRemark(data.getRemark());
             dbData.setCreateUserID(userId);
             dbData.setCreateTime(new Date());
             result = pcSiteMapper.insert(dbData);
@@ -117,6 +119,7 @@ public class SiteInfoImpl implements SiteInfoService {
             dbData.setDetailAddress(data.detailAddress);
             dbData.setRegionCode(data.regionCode);
             dbData.setStreetCode(data.streetCode);
+            dbData.setRemark(data.remark);
             dbData.setModifyUserID(userId);
             dbData.setModifyTime(new Date());
             result = pcSiteMapper.updateByPrimaryKey(dbData);
@@ -155,9 +158,20 @@ public class SiteInfoImpl implements SiteInfoService {
 
     @Override
     public Integer delete(List<String> idList){
-        PcSiteExample contactExample = new PcSiteExample();
-        contactExample.or().andSiteIDIn(idList);
-        pcSiteMapper.deleteByExample(contactExample);
-        return pcSiteMapper.deleteByExample(contactExample);
+        var result = 0;
+        for (String curSiteID: idList) {
+            PcSiteUserExample siteUserExp = new PcSiteUserExample();
+            siteUserExp.or().andSiteIDEqualTo(curSiteID);
+            var curSiteUserList = pcSiteUserMapper.selectByExample(siteUserExp).stream().toList();
+            if( curSiteUserList != null && curSiteUserList.size()>0){
+                throw new BaseException("10004","所选驿站站点已有关联站点人员信息,不允许删除!");
+            }else{
+                PcSiteExample contactExample = new PcSiteExample();
+                contactExample.or().andSiteIDEqualTo(curSiteID);
+                pcSiteMapper.deleteByExample(contactExample);
+                result += pcSiteMapper.deleteByExample(contactExample);
+            }
+        }
+        return result;
     }
 }

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

@@ -158,21 +158,22 @@ public class SiteUserImpl implements SiteUserService {
 
     @Override
     public Integer delete(List<String> idList){
-        PcSiteUserExample contactExample = new PcSiteUserExample();
-        contactExample.or().andSiteUserIDIn(idList);
-        var delSiteUserData = pcSiteUserMapper.selectByExample(contactExample).stream().toList();
-        pcSiteUserMapper.deleteByExample(contactExample);
-        if (delSiteUserData != null && delSiteUserData.size() > 0){
-            for(PcSiteUser curDelData : delSiteUserData) {
+        int result = 0;
+        PcSiteUserExample siteUserExp = new PcSiteUserExample();
+        siteUserExp.or().andSiteUserIDIn(idList);
+        var curSiteUserList = pcSiteUserMapper.selectByExample(siteUserExp).stream().toList();
+        result += pcSiteUserMapper.deleteByExample(siteUserExp);
+        if (curSiteUserList != null && curSiteUserList.size() > 0){
+            for(PcSiteUser curSiteUser : curSiteUserList) {
                 SysUserSysRoleExample userRoleExp = new SysUserSysRoleExample();
-                userRoleExp.or().andUserIDEqualTo(curDelData.getUserID());
-                sysUserSysRoleMapper.deleteByExample(userRoleExp);
+                userRoleExp.or().andUserIDEqualTo(curSiteUser.getUserID());
+                result += sysUserSysRoleMapper.deleteByExample(userRoleExp);
                 SysUserExample userExp = new SysUserExample();
-                userExp.or().andUserIDEqualTo(curDelData.getUserID());
-                sysUserMapper.deleteByExample(userExp);
+                userExp.or().andUserIDEqualTo(curSiteUser.getUserID());
+                result += sysUserMapper.deleteByExample(userExp);
             }
         }
-        return pcSiteUserMapper.deleteByExample(contactExample);
+        return result;
     }
 
     public String StrToPinYin(String chinese){

+ 51 - 27
src/main/java/com/hz/employmentsite/services/impl/companyService/CompanyServiceImpl.java

@@ -2,6 +2,7 @@ package com.hz.employmentsite.services.impl.companyService;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseErrorEnum;
 import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.mapper.AreaCodeMapper;
 import com.hz.employmentsite.mapper.PcCompanyMapper;
@@ -14,6 +15,7 @@ import com.hz.employmentsite.services.service.system.DictionaryService;
 import com.hz.employmentsite.util.StringUtils;
 import com.hz.employmentsite.vo.companyService.AppCompanyPostVo;
 import com.hz.employmentsite.vo.companyService.CompanyVo;
+import org.apache.commons.codec.EncoderException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -127,10 +129,18 @@ public class CompanyServiceImpl implements CompanyService {
 
     @Override
     public Integer delete(String id) {
-        PcCompanyExample contactExample = new PcCompanyExample();
-        contactExample.or().andCompanyIDEqualTo(id);
-        pcCompanyMapper.deleteByExample(contactExample);
-        return pcCompanyMapper.deleteByExample(contactExample);
+        int result = 0;
+        PcPostExample pcPostExp = new PcPostExample();
+        pcPostExp.or().andCompanyIDEqualTo(id);
+        var curCompanyPostList = pcPostMapper.selectByExample(pcPostExp).stream().toList();
+        if( curCompanyPostList != null && curCompanyPostList.size() > 0){
+            throw new BaseException("10004","所选企业已有关联岗位信息,不允许删除!");
+        }else{
+            PcCompanyExample contactExample = new PcCompanyExample();
+            contactExample.or().andCompanyIDEqualTo(id);
+            result += pcCompanyMapper.deleteByExample(contactExample);
+        }
+        return result;
     }
 
     @Override
@@ -164,20 +174,51 @@ public class CompanyServiceImpl implements CompanyService {
 
         dataList.forEach(item -> {
             String errorInfo = "";
-            if (stringUtils.IsNullOrEmpty(item.companyName))
-                errorInfo += "请填写企业名称!";
             if (stringUtils.IsNullOrEmpty(item.companyCode))
                 errorInfo += "请填写统一信用代码!";
+            if (stringUtils.IsNullOrEmpty(item.companyName))
+                errorInfo += "请填写企业名称!";
             if (stringUtils.IsNullOrEmpty(item.SiteName))
                 errorInfo += "请填写所属驿站!";
             else {
                 item.siteID = siteList.stream().filter(it -> it.getSiteName().equals(item.getSiteName().trim()))
                         .findFirst().orElse(new PcSite()).getSiteID();
                 if (stringUtils.IsNullOrEmpty(item.siteID)) {
-                    errorInfo += "驿站名称不存在!";
+                    errorInfo += "驿站不存在!";
                 }
             }
-            if (stringUtils.IsNullOrEmpty(item.regionName))
+            if (stringUtils.IsNullOrEmpty(item.companyAddress))
+                errorInfo += "请填写企业办公地址!";
+
+            if (stringUtils.IsNullOrEmpty(item.userName))
+                errorInfo += "请填写企业联系人!";
+
+            if (stringUtils.IsNullOrEmpty(item.userMobile))
+                errorInfo += "请填写企业联系电话!";
+
+            if (stringUtils.IsNullOrEmpty(item.recordStatusName))
+                errorInfo += "请填写企业状态!";
+            else {
+                if (item.recordStatusName.equals("在营"))
+                    item.recordStatus = 1;
+                else
+                    item.recordStatus = 0;
+            }
+
+            if (stringUtils.IsNullOrEmpty(item.isShortageName))
+                errorInfo += "请填写是否缺工!";
+            else {
+                if (item.isShortageName.equals("是")) item.isShortage = 1;
+                else item.isShortage = 0;
+            }
+
+            if (stringUtils.IsNullOrEmpty(errorInfo)) {
+                resultList.add(item);
+            } else {
+                item.setErrorMessage(errorInfo);
+            }
+
+            /*if (stringUtils.IsNullOrEmpty(item.regionName))
                 errorInfo += "请填写所属县区!";
             else {
                 item.regionCode = regionList.stream().filter(it -> it.getName().equals(item.regionName.trim()))
@@ -193,8 +234,6 @@ public class CompanyServiceImpl implements CompanyService {
                 if (stringUtils.IsNullOrEmpty(item.streetCode))
                     errorInfo += "县区名称不存在!";
             }
-            if (stringUtils.IsNullOrEmpty(item.companyAddress))
-                errorInfo += "请填写企业办公地址!";
             if (stringUtils.IsNullOrEmpty(item.workSituation))
                 errorInfo += "请填写用工情况!";
             if (stringUtils.IsNullOrEmpty(item.companyModelStr))
@@ -205,10 +244,7 @@ public class CompanyServiceImpl implements CompanyService {
                 if (item.companyModel == null || item.companyModel == 0)
                     errorInfo += "企业规模不存在!";
             }
-            if (stringUtils.IsNullOrEmpty(item.userName))
-                errorInfo += "请填写企业联系人!";
-            if (stringUtils.IsNullOrEmpty(item.userMobile))
-                errorInfo += "请填写联系电话!";
+
             if (stringUtils.IsNullOrEmpty(item.companyEmail))
                 errorInfo += "请填写企业邮箱!";
             if (stringUtils.IsNullOrEmpty(item.frName))
@@ -221,19 +257,7 @@ public class CompanyServiceImpl implements CompanyService {
                 errorInfo += "请填写经营范围!";
             if (stringUtils.IsNullOrEmpty(String.valueOf(item.companyDesc)))
                 errorInfo += "请填写企业简介!";
-            if (stringUtils.IsNullOrEmpty(item.recordStatusName))
-                errorInfo += "请填写企业状态!";
-            else {
-                if (item.recordStatusName.equals("在营"))
-                    item.recordStatus = 1;
-                else
-                    item.recordStatus = 0;
-            }
-            if (stringUtils.IsNullOrEmpty(errorInfo)) {
-                resultList.add(item);
-            } else {
-                item.setErrorMessage(errorInfo);
-            }
+            */
         });
 
         if (dataList.stream().filter(it -> !stringUtils.IsNullOrEmpty(it.errorMessage)).collect(Collectors.toList()).size() > 0)

+ 17 - 12
src/main/java/com/hz/employmentsite/services/impl/companyService/PostServiceImpl.java

@@ -219,32 +219,37 @@ public class PostServiceImpl implements PostService {
 
         dataList.forEach(item -> {
             String errorInfo = "";
+            if (stringUtils.IsNullOrEmpty(item.companyName))
+                errorInfo += "请填写企业企业!";
+            else {
+                item.companyID = companyList.stream().filter(it -> it.getCompanyName().equals(item.getCompanyName().trim()))
+                        .findFirst().orElse(new PcCompany()).getCompanyID();
+                if (item.companyID == null)
+                    errorInfo += "企业不存在!";
+            }
             if (stringUtils.IsNullOrEmpty(item.postName))
                 errorInfo += "请填写岗位名称!";
+            if (stringUtils.IsNullOrEmpty(String.valueOf(item.recruitCount)) || item.recruitCount == null)
+                errorInfo += "请填写招聘人数!";
             if (stringUtils.IsNullOrEmpty(String.valueOf(item.startTime)) || item.startTime == null)
                 errorInfo += "请填写开始日期!";
             if (stringUtils.IsNullOrEmpty(String.valueOf(item.startTime)) || item.startTime == null)
                 errorInfo += "请填写结束日期!";
-            if (stringUtils.IsNullOrEmpty(item.recordStatusName))
+            if (stringUtils.IsNullOrEmpty(item.jobPlace))
+                errorInfo += "请填写工作地址!";
+
+
+            /*if (stringUtils.IsNullOrEmpty(item.recordStatusName))
                 errorInfo += "请填写岗位状态!";
             else {
                 if (item.recordStatusName.equals("启用")) item.recordStatus = 1;
                 else item.recordStatus = 0;
             }
-            if (stringUtils.IsNullOrEmpty(item.companyName))
-                errorInfo += "请填写所属企业!";
-            else {
-                item.companyID = companyList.stream().filter(it -> it.getCompanyName().equals(item.getCompanyName().trim()))
-                        .findFirst().orElse(new PcCompany()).getCompanyID();
-                if (item.companyID == null)
-                    errorInfo += "企业不存在!";
-            }
+
             if (stringUtils.IsNullOrEmpty(item.workNature))
                 errorInfo += "请填写工作性质!";
             if (item.workYear == null)
                 errorInfo += "请填写工作年限!";
-            if (stringUtils.IsNullOrEmpty(String.valueOf(item.recruitCount)) || item.recruitCount == null)
-                errorInfo += "请填写招聘人数!";
             if (stringUtils.IsNullOrEmpty(item.cultureLevelName))
                 errorInfo += "请填写文化程度!";
             else {
@@ -280,7 +285,7 @@ public class PostServiceImpl implements PostService {
             if (stringUtils.IsNullOrEmpty(String.valueOf(item.trailMinSalary)) || item.trailMinSalary == null)
                 errorInfo += "请填写试用期最低薪酬!";
             if (stringUtils.IsNullOrEmpty(item.postDesc))
-                errorInfo += "请填写岗位描述!";
+                errorInfo += "请填写岗位描述!";*/
 
             if (stringUtils.IsNullOrEmpty(errorInfo)) {
                 resultList.add(item);

+ 30 - 7
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobHuntServiceImpl.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.mapper.PcJobhuntMapper;
 import com.hz.employmentsite.mapper.PcJobuserMapper;
+import com.hz.employmentsite.mapper.PcPostMapper;
 import com.hz.employmentsite.mapper.cquery.JobHuntCQuery;
 import com.hz.employmentsite.model.*;
 import com.hz.employmentsite.services.service.jobUserManager.JobHuntService;
@@ -32,6 +33,9 @@ public class JobHuntServiceImpl implements JobHuntService {
     @Autowired
     private PcJobuserMapper pcJobuserMapper;
 
+    @Autowired
+    private PcPostMapper pcPostMapper;
+
     @Autowired
     private DictionaryService dictionaryService;
 
@@ -92,6 +96,7 @@ public class JobHuntServiceImpl implements JobHuntService {
             dbData.setJobUserType(data.getJobUserType());
             dbData.setMinSalary(data.getMinSalary());
             dbData.setMaxSalary(data.getMaxSalary());
+            dbData.setOtherDemand(data.getOtherDemand());
             dbData.setCreateUserID(userId);
             dbData.setCreateTime(new Date());
             result = pcJobhuntMapper.insert(dbData);
@@ -109,6 +114,7 @@ public class JobHuntServiceImpl implements JobHuntService {
             dbData.setJobUserType(data.jobUserType);
             dbData.setMinSalary(data.minSalary);
             dbData.setMaxSalary(data.maxSalary);
+            dbData.setOtherDemand(data.otherDemand);
             dbData.setModifyUserID(userId);
             dbData.setModifyTime(new Date());
             result = pcJobhuntMapper.updateByPrimaryKey(dbData);
@@ -125,6 +131,10 @@ public class JobHuntServiceImpl implements JobHuntService {
         PcJobuserExample jobuserExample = new PcJobuserExample();
         jobuserExample.or().andNameIsNotNull();
         List<PcJobuser> jobUserList = pcJobuserMapper.selectByExample(jobuserExample);
+        //求职岗位
+        PcPostExample postExample = new PcPostExample();
+        postExample.or().andPostNameIsNotNull();
+        List<PcPost> postList = pcPostMapper.selectByExample(postExample);
         //求职类型
         List<SysDictionaryItem> dicHuntTypeList = dictionaryService.getDictionaryItemList("JobHuntType");
         //人才类型
@@ -139,16 +149,11 @@ public class JobHuntServiceImpl implements JobHuntService {
                 item.jobUserID = jobUserList.stream().filter(it -> it.getName().equals(item.getJobUserName().trim()))
                         .findFirst().orElse(new PcJobuser()).getJobuserID();
                 if (item.jobUserID == null)
-                    errorInfo += "人员不存在!";
+                    errorInfo += "求职人员不存在!";
             }
             if (stringUtils.IsNullOrEmpty(item.workName))
                 errorInfo += "请填写工种名称!";
-            if (stringUtils.IsNullOrEmpty(item.areaWork))
-                errorInfo += "请填写希望工作地区!";
-            if (stringUtils.IsNullOrEmpty(String.valueOf(item.inDate)) || item.inDate == null)
-                errorInfo += "请填写可到职日期!";
-            if (stringUtils.IsNullOrEmpty(String.valueOf(item.workYear)) || item.workYear==0)
-                errorInfo += "请填写工作年限!";
+
             if (stringUtils.IsNullOrEmpty(item.jobHuntTypeStr))
                 errorInfo += "请填写求职类型!";
             else {
@@ -171,6 +176,24 @@ public class JobHuntServiceImpl implements JobHuntService {
             if (stringUtils.IsNullOrEmpty(String.valueOf(item.maxSalary)) || item.maxSalary == null)
                 errorInfo += "请填写最高薪酬!";
 
+            if (stringUtils.IsNullOrEmpty(item.postName))
+                errorInfo += "请填写岗位名称!";
+            else {
+                item.postID = postList.stream().filter(it -> it.getPostName().equals(item.getPostName().trim()))
+                        .findFirst().orElse(new PcPost()).getPostID();
+                if (item.postID == null)
+                    errorInfo += "岗位不存在!";
+            }
+            if (stringUtils.IsNullOrEmpty(item.areaWork))
+                errorInfo += "请填写希望工作地区!";
+            if (stringUtils.IsNullOrEmpty(String.valueOf(item.inDate)) || item.inDate == null)
+                errorInfo += "请填写可到职日期!";
+            if (stringUtils.IsNullOrEmpty(String.valueOf(item.workYear)) || item.workYear==0)
+                errorInfo += "请填写工作年限!";
+
+            /*if (stringUtils.IsNullOrEmpty(item.otherDemand))
+                errorInfo += "请填写其他要求!";*/
+
             if (stringUtils.IsNullOrEmpty(errorInfo)) {
                 resultList.add(item);
             } else {

+ 13 - 4
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobUserServiceImpl.java

@@ -2,6 +2,7 @@ package com.hz.employmentsite.services.impl.jobUserManager;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.mapper.PcEducationMapper;
 import com.hz.employmentsite.mapper.PcExperienceMapper;
 import com.hz.employmentsite.mapper.PcJobuserMapper;
@@ -140,10 +141,18 @@ public class JobUserServiceImpl implements JobUserService {
         deleteEducation(ids);
         deleteExperience(ids);
         int result = 0;
-        PcJobuserExample exp = new PcJobuserExample();
-        PcJobuserExample.Criteria cro = exp.or();
-        cro.andJobuserIDIn(ids);
-        result = pcJobuserMapper.deleteByExample(exp);
+        for(String curJobUserID: ids){
+            PcJobhuntExample jobHuntExample = new PcJobhuntExample();
+            jobHuntExample.or().andJobUserIDEqualTo(curJobUserID);
+            var curJobUserHuntList = pcJobhuntMapper.selectByExample(jobHuntExample).stream().toList();
+            if( curJobUserHuntList != null && curJobUserHuntList.size()>0){
+                throw new BaseException("10004","所选求职人员已有关联求职意向信息,不允许删除!");
+            }else{
+                PcJobuserExample jobuserExp = new PcJobuserExample();
+                jobuserExp.or().andJobuserIDIn(ids);
+                result += pcJobuserMapper.deleteByExample(jobuserExp);
+            }
+        }
         return result;
     }
 

+ 21 - 22
src/main/java/com/hz/employmentsite/services/impl/taskAndLog/DoTaskImpl.java

@@ -51,7 +51,7 @@ public class DoTaskImpl implements DoTaskService {
     }
 
     @Override
-    public PageInfo<DoTaskVo> getMyTasks(Integer page, Integer rows, String curUserID) {
+    public PageInfo<DoTaskVo> getMyTasks(Integer page, Integer rows,String doTaskID,String taskName, String curUserID) {
         PcSiteUserExample siteUserExp = new PcSiteUserExample();
         PcSiteUserExample.Criteria siteUserCro = siteUserExp.createCriteria();
         siteUserCro.andUserIDEqualTo(curUserID);
@@ -59,22 +59,12 @@ public class DoTaskImpl implements DoTaskService {
         if(curSiteUserInfo==null){
             throw new RuntimeException("当前用户未绑定站点人员,未能查询到相关工作任务!");
         }else{
-            PcDotaskUserExample exp = new PcDotaskUserExample();
-            PcDotaskUserExample.Criteria cro = exp.createCriteria();
-            cro.andSiteUserIDEqualTo(curSiteUserInfo.getSiteUserID());
-            var curDoTaskUserInfo = doTaskUserMapper.selectByExample(exp).stream().toList();
-            List<String> curDoTaskIDs = new ArrayList<String>();
-            if (curDoTaskUserInfo.size()>0){
-                curDoTaskUserInfo.forEach(item -> {
-                    curDoTaskIDs.add(item.getDotaskID());
-                });
-            };
             try {
-                if(curDoTaskIDs.size()>0){
-                    var result = getList(page,rows,curDoTaskIDs,null,null,null,null,null,null,null,null,null);
-                    return result;
-                }
-                return null;
+                PageHelper.startPage(page, rows);
+                String siteUserID = curSiteUserInfo.getSiteUserID();
+                var list = doTaskCQuery.getListByUserID(siteUserID,doTaskID,taskName);
+                PageInfo<DoTaskVo> result = new PageInfo(list);
+                return result;
             } catch (Exception e) {
                 throw new RuntimeException("Database query exception: " + e.getMessage(), e);
             }
@@ -106,12 +96,21 @@ public class DoTaskImpl implements DoTaskService {
     @Override
     public int taskFinish(String doTaskID,String finishUserID){
         int result = 0;
-        PcDotask dbData = doTaskMapper.selectByPrimaryKey(doTaskID);
-        if (dbData != null) {
-            dbData.setModifyUserID(finishUserID);
-            dbData.setModifyTime(new Date());
-            dbData.setTaskStatus(1);
-            result = doTaskMapper.updateByPrimaryKeySelective(dbData);
+        PcSiteUserExample siteUserExp = new PcSiteUserExample();
+        PcSiteUserExample.Criteria siteUserCro = siteUserExp.createCriteria();
+        siteUserCro.andUserIDEqualTo(finishUserID);
+        var curSiteUserInfo = pcSiteUserMapper.selectByExample(siteUserExp).stream().findFirst().orElse(null);
+        if(curSiteUserInfo==null){
+            throw new RuntimeException("当前用户未绑定站点人员,未能查询到相关工作任务!");
+        }
+        PcDotaskUserExample taskUserExp = new PcDotaskUserExample();
+        PcDotaskUserExample.Criteria taskUserCro = taskUserExp.createCriteria();
+        taskUserCro.andSiteUserIDEqualTo(curSiteUserInfo.getSiteUserID());
+        taskUserCro.andDotaskIDEqualTo(doTaskID);
+        var curUserTaskInfo = doTaskUserMapper.selectByExample(taskUserExp).stream().findFirst().orElse(null);
+        if (curUserTaskInfo != null) {
+            curUserTaskInfo.setUserTaskStatus(1);
+            result = doTaskUserMapper.updateByExample(curUserTaskInfo,taskUserExp);
         }
         return result;
     }

+ 3 - 1
src/main/java/com/hz/employmentsite/services/service/UserService.java

@@ -3,6 +3,7 @@ package com.hz.employmentsite.services.service;
 import com.hz.employmentsite.model.SysMenu;
 import com.hz.employmentsite.model.SysRole;
 import com.hz.employmentsite.model.SysUser;
+import com.hz.employmentsite.vo.baseSettings.InstitutionVo;
 import com.hz.employmentsite.vo.user.DataRange;
 import com.hz.employmentsite.vo.user.UserInfoModel;
 import com.github.pagehelper.PageInfo;
@@ -13,8 +14,9 @@ import java.util.List;
 public interface UserService {
     List<SysRole> getUserRole(String userID);
     List<DataRange> getUserDataRange(String userID);
-    int updateUserStatu(String userId, Integer statu);
+    int updateUserStatus(String userId, Integer status);
     UserInfoModel getUserInfo(String userId);
+    Integer save(SysUser data, String userId);
     PageInfo<HashMap<String, Object>> getUserList(int page, int rows, String username,String loginid, Integer sex, Integer recordStatu, Integer userType);
     SysUser getIsCacheUserInfobyId(String userId);
 

+ 1 - 1
src/main/java/com/hz/employmentsite/services/service/taskAndLog/DoTaskService.java

@@ -10,7 +10,7 @@ public interface DoTaskService {
     PageInfo<DoTaskVo> getList(Integer page, Integer rows, List<String> doTaskIDList, String name, String startTime, String endTime, String finishStartTime, String finishEndTime,
                                String regionCode, String streetCode, String workTypeId,Integer taskStatus);
 
-    PageInfo<DoTaskVo> getMyTasks(Integer page, Integer rows, String userID);
+    PageInfo<DoTaskVo> getMyTasks(Integer page, Integer rows,String doTaskID,String taskName, String userID);
 
     List<DoTaskUserVo> getWorkUserList(String doTaskID);
 

+ 1 - 0
src/main/java/com/hz/employmentsite/vo/baseSettings/SiteInfoVo.java

@@ -27,6 +27,7 @@ public class SiteInfoVo {
     public String institutionName;
     public List<SiteUserVo> manageUsers;
     public String siteUsers;
+    public String remark;
 
     public String createUserID;
     public Date createTime;

+ 2 - 1
src/main/java/com/hz/employmentsite/vo/companyService/CompanyVo.java

@@ -40,6 +40,7 @@ public class CompanyVo {
     public Date validDate;
 
     public Integer recordStatus;
+    public String  recordStatusName;
 
     public String createUserID;
 
@@ -63,12 +64,12 @@ public class CompanyVo {
 
     public int postCount;
 
-    public String recordStatusName;
 
     public String errorMessage;
 
     public Integer insuredCount;
 
     public Integer isShortage;
+    public String  isShortageName;
 
 }

+ 1 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/JobHuntVo.java

@@ -24,6 +24,7 @@ public class JobHuntVo {
     public String postName;
     public BigDecimal minSalary;
     public BigDecimal maxSalary;
+    public String otherDemand;
     public Boolean isAccomplish;
     public String errorMessage;
 }

+ 21 - 5
src/main/resources/mapping/PcJobhuntMapper.xml

@@ -18,6 +18,7 @@
     <result column="CreateTime" jdbcType="TIMESTAMP" property="createTime" />
     <result column="ModifyUserID" jdbcType="VARCHAR" property="modifyUserID" />
     <result column="ModifyTime" jdbcType="TIMESTAMP" property="modifyTime" />
+    <result column="OtherDemand" jdbcType="VARCHAR" property="otherDemand" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -79,7 +80,8 @@
   </sql>
   <sql id="Base_Column_List">
     JobHuntID, JobUserID, PostID, WorkCode, WorkName, AreaWork, InDate, WorkYear, JobHuntType, 
-    JobUserType, MinSalary, MaxSalary, CreateUserID, CreateTime, ModifyUserID, ModifyTime
+    JobUserType, MinSalary, MaxSalary, CreateUserID, CreateTime, ModifyUserID, ModifyTime, 
+    OtherDemand
   </sql>
   <select id="selectByExample" parameterType="com.hz.employmentsite.model.PcJobhuntExample" resultMap="BaseResultMap">
     select
@@ -117,13 +119,13 @@
       InDate, WorkYear, JobHuntType, 
       JobUserType, MinSalary, MaxSalary, 
       CreateUserID, CreateTime, ModifyUserID, 
-      ModifyTime)
+      ModifyTime, OtherDemand)
     values (#{jobHuntID,jdbcType=VARCHAR}, #{jobUserID,jdbcType=VARCHAR}, #{postID,jdbcType=VARCHAR}, 
       #{workCode,jdbcType=VARCHAR}, #{workName,jdbcType=VARCHAR}, #{areaWork,jdbcType=VARCHAR}, 
       #{inDate,jdbcType=TIMESTAMP}, #{workYear,jdbcType=INTEGER}, #{jobHuntType,jdbcType=INTEGER}, 
       #{jobUserType,jdbcType=INTEGER}, #{minSalary,jdbcType=DECIMAL}, #{maxSalary,jdbcType=DECIMAL}, 
       #{createUserID,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{modifyUserID,jdbcType=VARCHAR}, 
-      #{modifyTime,jdbcType=TIMESTAMP})
+      #{modifyTime,jdbcType=TIMESTAMP}, #{otherDemand,jdbcType=VARCHAR})
   </insert>
   <insert id="insertSelective" parameterType="com.hz.employmentsite.model.PcJobhunt">
     insert into pc_jobhunt
@@ -176,6 +178,9 @@
       <if test="modifyTime != null">
         ModifyTime,
       </if>
+      <if test="otherDemand != null">
+        OtherDemand,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="jobHuntID != null">
@@ -226,6 +231,9 @@
       <if test="modifyTime != null">
         #{modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="otherDemand != null">
+        #{otherDemand,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.hz.employmentsite.model.PcJobhuntExample" resultType="java.lang.Long">
@@ -285,6 +293,9 @@
       <if test="row.modifyTime != null">
         ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="row.otherDemand != null">
+        OtherDemand = #{row.otherDemand,jdbcType=VARCHAR},
+      </if>
     </set>
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -307,7 +318,8 @@
       CreateUserID = #{row.createUserID,jdbcType=VARCHAR},
       CreateTime = #{row.createTime,jdbcType=TIMESTAMP},
       ModifyUserID = #{row.modifyUserID,jdbcType=VARCHAR},
-      ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP}
+      ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
+      OtherDemand = #{row.otherDemand,jdbcType=VARCHAR}
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
@@ -360,6 +372,9 @@
       <if test="modifyTime != null">
         ModifyTime = #{modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="otherDemand != null">
+        OtherDemand = #{otherDemand,jdbcType=VARCHAR},
+      </if>
     </set>
     where JobHuntID = #{jobHuntID,jdbcType=VARCHAR}
   </update>
@@ -379,7 +394,8 @@
       CreateUserID = #{createUserID,jdbcType=VARCHAR},
       CreateTime = #{createTime,jdbcType=TIMESTAMP},
       ModifyUserID = #{modifyUserID,jdbcType=VARCHAR},
-      ModifyTime = #{modifyTime,jdbcType=TIMESTAMP}
+      ModifyTime = #{modifyTime,jdbcType=TIMESTAMP},
+      OtherDemand = #{otherDemand,jdbcType=VARCHAR}
     where JobHuntID = #{jobHuntID,jdbcType=VARCHAR}
   </update>
 </mapper>

+ 22 - 5
src/main/resources/mapping/PcSiteMapper.xml

@@ -16,6 +16,7 @@
     <result column="CreateTime" jdbcType="TIMESTAMP" property="createTime" />
     <result column="ModifyUserID" jdbcType="VARCHAR" property="modifyUserID" />
     <result column="ModifyTime" jdbcType="TIMESTAMP" property="modifyTime" />
+    <result column="Remark" jdbcType="VARCHAR" property="remark" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -77,7 +78,7 @@
   </sql>
   <sql id="Base_Column_List">
     SiteID, SiteCode, RegionCode, StreetCode, DetailAddress, SiteX, SiteY, SiteName, 
-    FzrName, FzrMobile, CreateUserID, CreateTime, ModifyUserID, ModifyTime
+    FzrName, FzrMobile, CreateUserID, CreateTime, ModifyUserID, ModifyTime, Remark
   </sql>
   <select id="selectByExample" parameterType="com.hz.employmentsite.model.PcSiteExample" resultMap="BaseResultMap">
     select
@@ -114,12 +115,14 @@
       StreetCode, DetailAddress, SiteX, 
       SiteY, SiteName, FzrName, 
       FzrMobile, CreateUserID, CreateTime, 
-      ModifyUserID, ModifyTime)
+      ModifyUserID, ModifyTime, Remark
+      )
     values (#{siteID,jdbcType=VARCHAR}, #{siteCode,jdbcType=VARCHAR}, #{regionCode,jdbcType=VARCHAR}, 
       #{streetCode,jdbcType=VARCHAR}, #{detailAddress,jdbcType=VARCHAR}, #{siteX,jdbcType=VARCHAR}, 
       #{siteY,jdbcType=VARCHAR}, #{siteName,jdbcType=VARCHAR}, #{fzrName,jdbcType=VARCHAR}, 
       #{fzrMobile,jdbcType=VARCHAR}, #{createUserID,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, 
-      #{modifyUserID,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP})
+      #{modifyUserID,jdbcType=VARCHAR}, #{modifyTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}
+      )
   </insert>
   <insert id="insertSelective" parameterType="com.hz.employmentsite.model.PcSite">
     insert into pc_site
@@ -166,6 +169,9 @@
       <if test="modifyTime != null">
         ModifyTime,
       </if>
+      <if test="remark != null">
+        Remark,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="siteID != null">
@@ -210,6 +216,9 @@
       <if test="modifyTime != null">
         #{modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="remark != null">
+        #{remark,jdbcType=VARCHAR},
+      </if>
     </trim>
   </insert>
   <select id="countByExample" parameterType="com.hz.employmentsite.model.PcSiteExample" resultType="java.lang.Long">
@@ -263,6 +272,9 @@
       <if test="row.modifyTime != null">
         ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="row.remark != null">
+        Remark = #{row.remark,jdbcType=VARCHAR},
+      </if>
     </set>
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
@@ -283,7 +295,8 @@
       CreateUserID = #{row.createUserID,jdbcType=VARCHAR},
       CreateTime = #{row.createTime,jdbcType=TIMESTAMP},
       ModifyUserID = #{row.modifyUserID,jdbcType=VARCHAR},
-      ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP}
+      ModifyTime = #{row.modifyTime,jdbcType=TIMESTAMP},
+      Remark = #{row.remark,jdbcType=VARCHAR}
     <if test="example != null">
       <include refid="Update_By_Example_Where_Clause" />
     </if>
@@ -330,6 +343,9 @@
       <if test="modifyTime != null">
         ModifyTime = #{modifyTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="remark != null">
+        Remark = #{remark,jdbcType=VARCHAR},
+      </if>
     </set>
     where SiteID = #{siteID,jdbcType=VARCHAR}
   </update>
@@ -347,7 +363,8 @@
       CreateUserID = #{createUserID,jdbcType=VARCHAR},
       CreateTime = #{createTime,jdbcType=TIMESTAMP},
       ModifyUserID = #{modifyUserID,jdbcType=VARCHAR},
-      ModifyTime = #{modifyTime,jdbcType=TIMESTAMP}
+      ModifyTime = #{modifyTime,jdbcType=TIMESTAMP},
+      Remark = #{remark,jdbcType=VARCHAR}
     where SiteID = #{siteID,jdbcType=VARCHAR}
   </update>
 </mapper>

+ 25 - 6
src/main/resources/mapping/cquery/DoTaskCQuery.xml

@@ -4,12 +4,12 @@
     <select id="getList" resultType="com.hz.employmentsite.vo.taskAndLog.DoTaskVo">
         select task.dotaskID,task.workTypeID,task.content,task.dotaskName,u.`Name` as createName,task.finishTime,task.createTime,
         task.taskStatus,dic_taskStatus.Name as taskStatusName,
-        (select count(*) from pc_dotask_user du where du.DotaskID = task.DotaskID)as  userCount, city.`name` as regionName,
+        (select count(*) from pc_dotask_user du where du.DotaskID = task.DotaskID group by task.DotaskID)as  userCount, city.`name` as regionName,
         area.`name` as streetName,item.`Name` as workTypeName,task.regionCode,task.streetCode,doTaskUser.siteUserID from pc_dotask task
+        left join pc_dotask_user doTaskUser on task.dotaskID = doTaskUser.dotaskID and doTaskUser.doTaskUserID != null
         left join sys_dictionary_item item  on item.`Value` = task.WorkTypeID
         left join (select * from sys_dictionary_item where DictionaryCode ='TaskStatusType') dic_taskStatus  on dic_taskStatus.`Value` = task.taskStatus
         left join sys_user u on u.UserID = task.CreateUserID
-        left join pc_dotask_user doTaskUser on task.dotaskID = doTaskUser.dotaskID
         left join area_code city on city.`code` = task.RegionCode
         left join area_code area on area.`code` = task.StreetCode where item.DictionaryCode='TaskType'
         <if test="doTaskIDList != '' and doTaskIDList != null">
@@ -42,20 +42,39 @@
         <if test="taskStatus != null and taskStatus != ''">
             and task.taskStatus = #{taskStatus}
         </if>
-            group by task.dotaskID order by task.createTime
+            order by task.createTime desc
     </select>
 
+    <select id="getListByUserID" resultType="com.hz.employmentsite.vo.taskAndLog.DoTaskVo">
+        select task.dotaskID,task.workTypeID,task.content,task.dotaskName,u.`Name` as createName,task.finishTime,task.createTime,
+        (select UserTaskStatus from pc_dotask_user du where DotaskID = task.DotaskID and siteUserID = #{siteUserID}) AS taskStatus,
+        dic_taskStatus.Name as taskStatusName,  city.`name` as regionName,area.`name` as streetName,item.`Name` as workTypeName,task.regionCode,task.streetCode
+        from pc_dotask task
+        left join pc_dotask_user doTaskUser on task.dotaskID = doTaskUser.dotaskID
+        left join sys_dictionary_item item  on item.`Value` = task.WorkTypeID
+        left join (select * from sys_dictionary_item where DictionaryCode ='TaskStatusType') dic_taskStatus  on dic_taskStatus.`Value` =
+        (select UserTaskStatus from pc_dotask_user du where DotaskID = task.DotaskID and siteUserID = #{siteUserID})
+        left join sys_user u on u.UserID = task.CreateUserID
+        left join area_code city on city.`code` = task.RegionCode
+        left join area_code area on area.`code` = task.StreetCode where item.DictionaryCode='TaskType'
+        and doTaskUser.siteUserID  = #{siteUserID}
+        <if test="doTaskID != '' and doTaskID != null">
+            and task.dotaskID = #{doTaskID}
+        </if>
+        <if test="taskName != '' and taskName != null">
+            and task.dotaskName like Concat('%',#{taskName},'%')
+        </if>
+    </select>
     <select id="getWorkUserList" resultType="com.hz.employmentsite.vo.taskAndLog.DoTaskUserVo">
-        select task.*,dic_taskStatus.Name as TaskStatusName,siteUser.SiteUserID, siteUser.SiteUserName,dic_gender.Name as GenderName,siteUser.Mobile  from  pc_dotask_user taskUser
+        select task.*,taskUser.UserTaskStatus,dic_taskStatus.Name as TaskStatusName,siteUser.SiteUserID, siteUser.SiteUserName,dic_gender.Name as GenderName,siteUser.Mobile  from  pc_dotask_user taskUser
         left join pc_dotask task on taskUser.DotaskID = task.DotaskID
         left join pc_site_user siteUser on taskUser.SiteUserID = siteUser.SiteUserID
-        left join (select * from sys_dictionary_item where DictionaryCode ='TaskStatusType') dic_taskStatus on task.TaskStatus = dic_taskStatus.Value
+        left join (select * from sys_dictionary_item where DictionaryCode ='TaskStatusType') dic_taskStatus on taskUser.UserTaskStatus = dic_taskStatus.Value
         left join (select * from sys_dictionary_item where DictionaryCode ='Gender') dic_gender on siteUser.Gender = dic_gender.Value
         where 1 = 1
         <if test="doTaskID!='' and doTaskID!=null">
             and taskUser.DotaskID = #{doTaskID}
         </if>
-
     </select>
     <select id="getUserList" resultType="com.hz.employmentsite.vo.baseSettings.SiteUserVo">
         select SiteUserID, SiteUserName,Mobile,Gender,dic_gender.Name as GenderName from pc_site_user siteUser

+ 3 - 2
src/main/resources/mapping/cquery/JobHuntCQuery.xml

@@ -2,7 +2,8 @@
 <!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.JobHuntCQuery">
     <select id="getJobHuntList" resultType="com.hz.employmentsite.vo.jobUserManager.JobHuntVo">
-        select jobHunt.*,jobUser.name as JobUserName,dic_jobUserType.Name as jobUserTypeStr,dic_huntJobType.Name as jobHuntTypeStr,post.PostName from pc_jobhunt jobHunt
+        select jobHunt.*,jobUser.name as JobUserName,dic_jobUserType.Name as jobUserTypeStr,dic_huntJobType.Name as jobHuntTypeStr,
+               post.PostName from pc_jobhunt jobHunt
         left join pc_jobuser jobUser on jobHunt.JobUserID = jobUser.JobUserID
         left join pc_post post on jobHunt.postID = post.postID
         left join (select * from sys_dictionary_item where DictionaryCode ='JobUserType') dic_jobUserType on jobHunt.JobUserType = dic_jobUserType.value
@@ -33,7 +34,7 @@
             and jobUserType = #{jobUserTypeID}
         </if>
         <if test="minSalary != '' and minSalary != null and (maxSalary == '' or maxSalary == null)" >
-            and jobHunt.minSalary <![CDATA[ <= ]]> #{minSalary} and jobHunt.maxSalary <![CDATA[ >= ]]> #{minSalary}
+            and jobHunt.minSalary <![CDATA[ >= ]]> #{minSalary} and jobHunt.maxSalary <![CDATA[ >= ]]> #{minSalary}
         </if>
         <if test="maxSalary != '' and maxSalary != null and (minSalary == '' or minSalary == null)">
             and jobHunt.minSalary <![CDATA[ <= ]]> #{maxSalary} and jobHunt.maxSalary <![CDATA[ >= ]]> #{maxSalary}

+ 1 - 0
src/main/resources/mapping/cquery/SiteInfoCQuery.xml

@@ -28,6 +28,7 @@
         <if test="streetCode!='' and streetCode!=null">
             and streetCode like Concat('%',#{streetCode},'%')
         </if>
+            order by site.CreateTime desc
     </select>
 
     <select id="getListByInstitutionID" resultType="com.hz.employmentsite.vo.baseSettings.SiteInfoVo">

BIN
src/main/resources/static/doc/template/企业信息导入模板.xlsx


BIN
src/main/resources/static/doc/template/岗位信息导入模板.xlsx


BIN
src/main/resources/static/doc/template/求职意向导入模板.xlsx


+ 30 - 2
vue/src/api/system/user/index.ts

@@ -31,10 +31,38 @@ export function getUserInfo(query: { userId: number }) {
   });
 }
 
-export function updateUserStatu(query: { userId: String, statu: number }) {
+export function getUserByID(userId: string) {
   return request(
     {
-      url: 'user/updateUserStatu',
+    url: 'user/getUserInfo',
+    method: 'get',
+    params: {userId:userId},
+    },
+    {
+      isNew: true,
+    }
+  );
+}
+
+export function saveSysUser(data: any) {
+  return request<object>(
+    {
+      url: 'user/save',
+      method: 'post',
+      data: data,
+    },
+    {
+      isNew: true,
+      successMsg: '提交成功!',
+      errorMsg: '提交失败!'
+    },
+  );
+}
+
+export function updateUserStatus(query: { userId: String, status: number }) {
+  return request(
+    {
+      url: 'user/updateUserStatus',
       method: 'get',
       params: query,
     },

+ 1 - 1
vue/src/views/baseSettings/siteInfo/edit.vue

@@ -117,7 +117,7 @@
       <a-divider orientation="left">其他信息</a-divider>
       <a-row>
         <a-textarea :auto-size="{ minRows: 4, maxRows: 10 }"  v-model:value="dataModel.remark"  :disabled="opCategory==3"
-                    placeholder="备注" style="text-align: center;" />
+                    placeholder="备注" />
       </a-row>
       <a-form-item class="buttom-btns">
         <a-button @click="onClose">取消</a-button>

+ 8 - 7
vue/src/views/companyService/company/index.vue

@@ -149,19 +149,20 @@ export default defineComponent({
       title: '导入',
       url: 'companyService/company/importCompany',
       columns: [
-        {cnName: '企业名称', enName: 'companyName', width: 100},
         {cnName: '统一社会信用代码', enName: 'companyCode', width: 140},
-        {cnName: '法定代表人(负责人)', enName: 'frName', width: 140},
+        {cnName: '企业名称', enName: 'companyName', width: 100},
+        {cnName: '所属驿站', enName: 'SiteName', width: 100},
+        {cnName: '企业办公地址', enName: 'address', width: 100},
+        {cnName: '企业联系人', enName: 'userName', width: 100},
+        {cnName: '企业联系电话', enName: 'userMobile', width: 100},
         {cnName: '企业状态', enName: 'recordStatusName', width: 100},
+        {cnName: '是否缺工', enName: 'isShortage', width: 100},
+        {cnName: '法定代表人(负责人)', enName: 'frName', width: 140},
         {cnName: '营业执照有效期', enName: 'validTime', width: 100},
-        {cnName: '企业分类', enName: 'companyType', width: 100},
-        {cnName: '联系人姓名', enName: 'userName', width: 100},
-        {cnName: '联系电话', enName: 'userMobile', width: 100},
         {cnName: '联系邮箱', enName: 'companyEmail', width: 100},
-        {cnName: '所属驿站', enName: 'SiteName', width: 100},
+        {cnName: '企业分类', enName: 'companyType', width: 100},
         {cnName: '所属县区', enName: 'regionName', width: 100},
         {cnName: '所属街道', enName: 'streetName', width: 100},
-        {cnName: '企业办公地址', enName: 'address', width: 100},
         {cnName: '企业规模', enName: 'companyModel', width: 100},
         {cnName: '用工情况(人)', enName: 'workSituation', width: 100},
         {cnName: '参保人数(人)', enName: 'insuredCount', width: 100},

+ 18 - 18
vue/src/views/companyService/post/index.vue

@@ -8,7 +8,7 @@
           </a-form-item>
         </a-col>
         <a-col :span="6">
-          <a-form-item label="" :label-col="{span:3}" name="">
+          <a-form-item label="" :label-col="{span:6}" name="">
             <label style="margin-left:26px;">招聘人数:</label>
             <a-input type="number" v-model:value="searchParams.minCount" style="width: 30%;margin-right: 10px;"
                      placeholder=""/>
@@ -35,6 +35,8 @@
             style="margin: 0 8px"
             @click="
               () => {
+                searchParams.minCount = null;
+                searchParams.maxCount = null;
                 formRef.resetFields();
                 loadData();
               }
@@ -66,8 +68,8 @@
           </a-form-item>
         </a-col>
         <a-col :span="6">
-          <a-form-item label="工种名称" :label-col="{span:6}" name="WorkNmae">
-            <a-input v-model:value="searchParams.WorkNmae" placeholder=""/>
+          <a-form-item label="工种名称" :label-col="{span:6}" name="WorkName">
+            <a-input v-model:value="searchParams.WorkName" placeholder=""/>
           </a-form-item>
         </a-col>
       </a-row>
@@ -140,27 +142,25 @@ export default defineComponent({
       title: '导入',
       url: 'companyService/post/importPost',
       columns: [
+        {cnName: '企业名称', enName: 'companyName', width: 100},
         {cnName: '岗位名称', enName: 'postName', width: 100},
+        {cnName: '招聘人数', enName: 'recruitCount', width: 100},
         {cnName: '开始日期', enName: 'startTime', width: 100},
         {cnName: '结束日期', enName: 'endTime', width: 100},
-        {cnName: '岗位状态', enName: 'recordStatusName', width: 100},
-        {cnName: '所属企业', enName: 'companyName', width: 100},
-        {cnName: '工作性质', enName: 'workNature', width: 100},
+        {cnName: '招聘地点', enName: 'jobPlace', width: 100},
         {cnName: '工作年限', enName: 'workYear', width: 100},
-        {cnName: '招聘人数', enName: 'recruitCount', width: 100},
-        {cnName: '文化程度', enName: 'cultureLevelName', width: 100},
-        {cnName: '最高薪酬', enName: 'maxSalary', width: 100},
-        {cnName: '最低薪酬', enName: 'minSalary', width: 100},
-        {cnName: '福利待遇', enName: 'welfare', width: 100},
-        {cnName: '联系人', enName: 'userName', width: 100},
-        {cnName: '联系电话', enName: 'userMobile', width: 100},
-        {cnName: '邮箱', enName: 'postEmail', width: 100},
-        {cnName: '工作时长', enName: 'workTime', width: 100},
-        {cnName: '是否试用期', enName: 'isTrailName', width: 100},
+        {cnName: '学历要求', enName: 'cultureLevelName', width: 100},
+        {cnName: '岗位最高月薪', enName: 'maxSalary', width: 100},
+        {cnName: '岗位最低月薪', enName: 'minSalary', width: 100},
+        {cnName: '是否有试用期', enName: 'isTrailName', width: 100},
         {cnName: '试用期时长(月)', enName: 'trailtime', width: 100},
         {cnName: '试用期最高薪酬', enName: 'trailMaxSalary', width: 100},
         {cnName: '试用期最低薪酬', enName: 'trailMinSalary', width: 100},
-        {cnName: '岗位描述', enName: 'postDesc', width: 100},
+        {cnName: '福利待遇', enName: 'welfare', width: 100},
+        {cnName: '其它要求', enName: 'postDesc', width: 100},
+        {cnName: '联系人', enName: 'userName', width: 100},
+        {cnName: '联系电话', enName: 'userMobile', width: 100},
+        {cnName: '邮箱', enName: 'postEmail', width: 100}
       ],
       template: {
         tempFileName: '岗位信息导入模板.xlsx',
@@ -200,7 +200,7 @@ export default defineComponent({
       {title: '工种名称', dataIndex: 'workName', key: 'workName', align: "center"},
       {title: '文化程度', dataIndex: 'cultureLevelName', key: 'cultureLevelName', align: "center"},
       {
-        title: '薪酬', dataIndex: 'siteCount', key: 'siteCount', align: "center", customRender: (item) => {
+        title: '薪酬', dataIndex: 'postSalary', key: 'postSalary', align: "center", customRender: (item) => {
           const salary = showSalary(item.record.minSalary,item.record.maxSalary);/*`${item.record.minSalary ?? ""}-${item.record.maxSalary ?? ""}`*/
           return salary;
         }

+ 11 - 7
vue/src/views/jobUserManager/jobhunt/edit.vue

@@ -44,12 +44,16 @@
             </a-select>
           </a-form-item>
         </a-col>
-        <a-col :span="8">
-          <a-form-item label="月薪要求"  name="salary" :label-col="{span:7}">
-            <label v-if="opCategory==3">{{dataModel.salary}}</label>
-            <a-input type="number" v-model:value="dataModel.minSalary" style="width:110px;" placeholder=""/>
-            <label style="margin-right: 20px;margin-left: 20px;">-</label>
-            <a-input type="number" v-model:value="dataModel.maxSalary" style="width:110px;" placeholder=""/>
+        <a-col :span="8" >
+          <a-form-item label="月薪要求" name="salary" style="overflow: hidden;line-height: 35px;height: 35px;" :label-col="{span:7}">
+            <label style="color:red;float: left;position:relative;right:80px;line-height: 35px;" >*</label>
+            <a-form-item name="minSalary" :rules="[{ required: true, message: '请输入最低月薪!' }]"  style="float:left;">
+              <a-input type="number" name="minSalary" v-model:value="dataModel.minSalary" style="min-width: 100px;max-width: 115px;"  placeholder="" />
+            </a-form-item>
+            <label style="margin-right:10px;margin-left:10px;float: left;">-</label>
+            <a-form-item name="maxSalary"  :rules="[{ required: true, message: '请输入最高月薪!' }]" style="float: left;" >
+              <a-input type="number" name="maxSalary" v-model:value="dataModel.maxSalary" style="min-width: 100px;max-width: 115px;"   placeholder=""/>
+            </a-form-item>
           </a-form-item>
         </a-col>
         <a-col :span="9">
@@ -83,7 +87,7 @@
       </a-row>
       <a-divider orientation="left">其他信息</a-divider>
       <a-row>
-        <a-textarea name="otherMsg" :auto-size="{ minRows: 4, maxRows: 10 }"  v-model:value="dataModel.otherMsg" :disabled="opCategory==3"
+        <a-textarea name="otherDemand" :auto-size="{ minRows: 4, maxRows: 10 }"  v-model:value="dataModel.otherDemand" :disabled="opCategory==3"
                     placeholder="其他要求"  />
       </a-row>
       <a-form-item class="buttom-btns">

+ 10 - 3
vue/src/views/jobUserManager/jobhunt/index.vue

@@ -30,6 +30,10 @@
             style="margin: 0 8px"
             @click="
               () => {
+                searchParamsState.minWorkYear = null;
+                searchParamsState.maxWorkYear = null;
+                searchParamsState.minSalary = null;
+                searchParamsState.maxSalary = null;
                 formRef.resetFields();
                 loadData();
               }
@@ -201,12 +205,15 @@ import {useTabsViewStore} from "@/store/modules/tabsView";
         columns: [
           {cnName: '姓名', enName: 'jobUserName', width: 100},
           {cnName: '工种名称', enName: 'workName', width: 100},
+          {cnName: '求职类型', enName: 'jobHuntType', width: 100},
+          {cnName: '人才类型', enName: 'jobUserType', width: 100},
+          {cnName: '最低月薪(元)', enName: 'minSalary', width: 100},
+          {cnName: '最高月薪(元)', enName: 'maxSalary', width: 100},
+          {cnName: '求职岗位', enName: 'postName', width: 100},
           {cnName: '希望工作地区', enName: 'areaWork', width: 100},
           {cnName: '可到职日期', enName: 'inDate', width: 100},
           {cnName: '工作年限', enName: 'workYear', width: 100},
-          {cnName: '求职类型', enName: 'jobHuntType', width: 100},
-          {cnName: '人才类型', enName: 'jobUserType', width: 100},
-          {cnName: '月薪要求', enName: 'salary', width: 100},
+          {cnName: '其他要求', enName: 'otherDemand', width: 100},
         ],
         template: {
           tempFileName: '求职意向导入模板.xlsx',

+ 2 - 0
vue/src/views/system/role/roleUser.vue

@@ -222,6 +222,8 @@ export default defineComponent({
     const show = (roleID, userType) => {
       searchParamsState.roleID = roleID;
       userTypeID.value = userType;
+      searchParamsState.loginID ='';
+      searchParamsState.name ='';
       formState.selectedRowKeys = [];
       formState.total = 0;
       loadRoleUserList();

+ 127 - 0
vue/src/views/system/users/addUser.vue

@@ -0,0 +1,127 @@
+<template>
+  <!--
+      cancel-text="取消"
+      :ok-button-props="{ style: { display: 'none' } }"-->
+  <a-modal :width="1000" v-model:visible="visible"
+            title="新增用户" :closable="false" :keyboard="false"
+            :mask-closable="false" ok-text="提交" @ok="onCommit">
+    <div class="modal-search">
+      <a-form ref="formRef" name="advanced_search" class="ant-advanced-search-form" :model="dataModel" autocomplete="off">
+        <a-row type="flex" :gutter="24">
+          <a-col :span="8">
+            <a-form-item label="用户名" :label-col="{ span: 6 }" name="name" :rules="[{ required: true, message: '请输入用户名!' }]" >
+              <a-input v-model:value="dataModel.name" placeholder=""/>
+            </a-form-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-item label="账号" :label-col="{ span: 6 }" name="loginID" :rules="[{ required: true, message: '请输入用户账号!' }]" >
+              <a-input v-model:value="dataModel.loginID" placeholder="" ></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-item label="密码" :label-col="{span:6}" name="password" :rules="[{ required: true, message: '请输入密码!' }]">
+              <a-input v-model:value="dataModel.password" placeholder="" ></a-input>
+            </a-form-item>
+          </a-col>
+        </a-row>
+        <a-row :gutter="24">
+          <a-col :span="8">
+            <a-form-item label="用户类型" :label-col="{span:6}" name="userTypeID" :rules="[{ required: true, message: '请选择用户类型!' }]">
+              <a-select ref="select" v-model:value="dataModel.userTypeID"
+                        :options="userTypeList" :field-names="{ label: 'name', value: 'value' }"
+                        :allow-clear="true" ></a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :span="8">
+            <a-form-item label="状态" :label-col="{ span: 6 }" name="recordStatus"  :rules="[{ required: true, message: '请选择状态!' }]" >
+              <a-select ref="select" v-model:value="dataModel.recordStatus"
+                        :options="statusList" :field-names="{ label: 'name', value: 'value' }"
+                        :allow-clear="true" ></a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :span="8">
+
+          </a-col>
+        </a-row>
+      </a-form>
+    </div>
+  </a-modal>
+</template>
+<script lang="ts">
+import {defineComponent, reactive, ref, toRefs} from "vue";
+import type {FormInstance, SelectProps} from 'ant-design-vue';
+import {getUserByID,saveSysUser} from '@/api/system/user';
+import {getSysDictionaryList} from "@/api/system/dictionary"
+import {message} from "ant-design-vue";
+
+interface userModel {
+  dataModel: any;
+}
+export default defineComponent({
+  props: {
+    loadData: {
+      type: Function,
+      default: null
+    }
+  },
+  setup() {
+    const visible = ref<boolean>(false);
+    const isAllowCommit = ref<boolean>(true);
+    const modalFormRef = ref<FormInstance>();
+    const userTypeList = ref<SelectProps['options']>();
+    const statusList = ref([{name:"启用",value:1},{name:"禁用",value:0}]);
+    const formData = reactive<userModel>({dataModel: {}});
+    const formState = reactive({
+      total: 0,
+      selectedRowKeys: [],
+      loading: false
+    });
+
+    const getUserTypeList = async function (){
+      const userTypeResult = await getSysDictionaryList("UserType");
+      userTypeList.value = userTypeResult;
+    }
+
+    const show = async function () {
+      formState.loading = true;
+      await getUserTypeList();
+      const reqData = await getUserByID("");
+      formData.dataModel = reqData;
+      console.log("dataModel",formData.dataModel);
+      formState.loading = false;
+      visible.value = true;
+    };
+
+    const onCommit = async function (){
+      isAllowCommit.value = true;
+      if(formData.dataModel.name==null||formData.dataModel.loginID==null||formData.dataModel.password==null||
+         formData.dataModel.userTypeID==null||formData.dataModel.recordStatus==null){
+        message.error("请填写完整的用户信息!");
+        isAllowCommit.value = false;
+      }
+      if (isAllowCommit.value){
+        saveSysUser(formData.dataModel).then(result => {
+          if (result) {
+            visible.value = false;
+          }
+        });
+      }
+    };
+
+    return {
+      ...toRefs(formData),
+      visible,
+      modalFormRef,
+      show,
+      onCommit,
+      formState,
+      statusList,
+      userTypeList,
+    };
+  },
+  created() {
+
+  },
+})
+</script>
+

+ 21 - 174
vue/src/views/system/users/index.vue

@@ -1,167 +1,3 @@
-<!--
-<template>
-  <DynamicTable
-    ref="dynamicTableRef"
-    header-title="用户列表"
-    title-tooltip=""
-    :data-request="loadData"
-    :columns="columns"
-  />
-</template>
-
-<script lang="tsx" setup>
-import { Tag } from 'ant-design-vue';
-import type { TableColumn } from '@/components/core/dynamic-table';
-import { useTable } from '@/components/core/dynamic-table';
-import { useSocket } from '@/core/socket/useSocket';
-import { getUserListPage,updateUserStatu } from '@/api/system/user'
-
-defineOptions({
-  name: 'SystemDictionary',
-});
-
-const [DynamicTable, dynamicTableInstance] = useTable();
-
-const loadData = async (params) => {
-  const { list } = await getUserListPage(params);
-  return list;
-};
-
-const columns: TableColumn[] = [
-  {
-    title: '用户名',
-    dataIndex: 'LoginID',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '姓名',
-    dataIndex: 'Name',
-    width: 150,
-    align: 'center',
-  },
-  {
-    title: '性别',
-    dataIndex: 'Sex',
-    align: 'center',
-    customRender: ({ record }) => (
-      <div>
-        {record.Sex==1?"男":"女"}
-      </div>
-    ),
-    formItemProps: {
-      component: 'Select',
-      componentProps: () => ({
-        options: [
-          {
-            label: '男',
-            value: 1,
-          },
-          {
-            label: '女',
-            value: 0,
-          },
-        ],
-        onChange() {
-
-        },
-      }),
-    },
-  },
-  {
-    title: '用户类型',
-    dataIndex: 'UserTypeName',
-    align: 'center',
-    formItemProps: {
-      component: 'Select',
-      componentProps: () => ({
-        request: () => {
-          //return fetchStatusMapData();
-        },
-        onChange() {
-
-        },
-      }),
-    },
-  },
-  {
-    title: '角色名称',
-    dataIndex: 'roleName',
-    width: 150,
-    align: 'center',
-    hideInSearch: true,
-  },
-  {
-    title: '账号状态',
-    dataIndex: 'RecordStatus',
-    width: 150,
-    align: 'center',
-    customRender: ({ record }) => (
-      <div>
-        {record.RecordStatus==1?"正常":"禁用"}
-      </div>
-    ),
-    formItemProps: {
-      component: 'Select',
-      componentProps: () => ({
-        options: [
-          {
-            label: '正常',
-            value: 1,
-          },
-          {
-            label: '禁用',
-            value: 0,
-          },
-        ],
-        onChange() {
-
-        },
-      }),
-    },
-  },
-  {
-    title: '创建时间',
-    dataIndex: 'CreateTime',
-    width: 150,
-    align: 'center',
-    hideInSearch: true,
-  },
-  {
-    title: '操作',
-    dataIndex: 'ACTION',
-    align: 'center',
-    actions: ({ record }) => [
-      {
-        label: '启用',
-        disabled: record.RecordStatus==1,
-        onClick:async () => {
-          await updateUserStatu({userId: record.UserID, statu:1 });
-          dynamicTableInstance?.reload();
-        },
-      },
-      {
-        label: '禁用',
-        // auth: 'sys.online.kick',
-        disabled: record.RecordStatus==0,
-        popConfirm: {
-          title: '确定禁用该用户吗?',
-          onConfirm:async () => {
-            await updateUserStatu({userId: record.UserID, statu: 0 });
-            dynamicTableInstance?.reload();
-          },
-        },
-      },
-    ]
-  },
-];
-</script>
-
-<style scoped>
-
-</style>
--->
-
 <template>
   <div class="card-search">
     <a-form
@@ -201,7 +37,8 @@ const columns: TableColumn[] = [
       </a-row>
       <a-row class="edit-operation">
         <a-col :span="24" style="text-align: right">
-
+<!--          functioncode="T01030202"-->
+          <a-button type="primary" html-type="submit" @click='onAdd' >新增</a-button>
         </a-col>
       </a-row>
     </a-form>
@@ -215,8 +52,8 @@ const columns: TableColumn[] = [
         <template #bodyCell="{ column, text, record }">
           <template v-if="column.key === 'operation'">
             <div class="table-operation">
-              <a-button type="link" @click="onUpdateUserStatu(record.UserID,1)" functioncode="T0199010102">启用</a-button>
-              <a-button type="link" @click="onUpdateUserStatu(record.UserID,0)" functioncode="T0199010103">禁用</a-button>
+              <a-button type="link" @click="onUpdateUserStatus(record.UserID,1)" functioncode="T0199010102">启用</a-button>
+              <a-button type="link" @click="onUpdateUserStatus(record.UserID,0)" functioncode="T0199010103">禁用</a-button>
               <a-button type="link" @click="onUpdatePassword(record)" functioncode="T0199010104">修改密码</a-button>
             </div>
           </template>
@@ -224,6 +61,7 @@ const columns: TableColumn[] = [
       </a-table>
     </div>
     <UpdatePassword ref="updatePasswordRef"></UpdatePassword>
+    <UserAdd ref="userAddRef"></UserAdd>
   </div>
 </template>
 
@@ -231,14 +69,15 @@ const columns: TableColumn[] = [
 import {reactive, ref, computed, defineComponent} from 'vue';
 import type {FormInstance} from 'ant-design-vue';
 import type {TableColumnsType, TableProps, SelectProps} from 'ant-design-vue';
-import {getUserListPage, updateUserStatu} from '@/api/system/user'
+import {getUserListPage, updateUserStatus} from '@/api/system/user'
 import {getSysDictionaryList} from "@/api/system/dictionary";
 import UpdatePassword from '@/views/system/users/updatePassword.vue';
+import UserAdd from '@/views/system/users/addUser.vue';
 import {getPaginationTotalTitle} from "@/utils/common";
 
 export default defineComponent({
   name: 'UserList',
-  components: { UpdatePassword},
+  components: { UpdatePassword,UserAdd},
   setup() {
     const modalRoleUserRef = ref();
     const modalRoleEditRef = ref();
@@ -279,6 +118,7 @@ export default defineComponent({
     const dataList = ref([]);
     const userTypeList = ref<SelectProps['options']>();
     const updatePasswordRef = ref();
+    const userAddRef = ref();
 
     const onSelectChange = (selectedRowKeys: any) => {
       formState.selectedRowKeys = selectedRowKeys;
@@ -296,11 +136,16 @@ export default defineComponent({
       loadData();
     }
 
-    const onUpdateUserStatu = async function (userID, statu) {
-      await updateUserStatu({userId: userID, statu: statu});
+    const onAdd = ()=>{
+      userAddRef.value.show();
       loadData();
     }
 
+    const onUpdateUserStatus = async function (userID, status) {
+      await updateUserStatus({userId: userID, status: status});
+      await loadData();
+    }
+
     const onUpdatePassword = (item) => {
       updatePasswordRef.value.show(item.UserID,item.Name,item.LoginID);
     };
@@ -308,8 +153,8 @@ export default defineComponent({
     const loadData = async function () {
       formState.loading = true;
       const result: any = await getUserListPage(searchParamsState);
-
       dataList.value = result.list;
+      console.log("dataList",dataList.value);
       formState.total = result.total;
       formState.loading = false;
     }
@@ -334,10 +179,12 @@ export default defineComponent({
       userTypeList,
       onSelectChange,
       handleTableChange,
+      onAdd,
       onFinish,
-      onUpdateUserStatu,
+      onUpdateUserStatus,
       onUpdatePassword,
-      updatePasswordRef
+      updatePasswordRef,
+      userAddRef
     };
   },
   created() {

+ 5 - 14
vue/src/views/taskAndLog/dotask/edit.vue

@@ -64,8 +64,7 @@
               v-model:value="dataModel.streetCode"
               :options="streetList"
               :field-names="{ label: 'name', value: 'code' }"
-              :allow-clear="true"
-            >
+              :allow-clear="true" >
             </a-select>
           </a-form-item>
         </a-col>
@@ -73,8 +72,7 @@
       <a-row>
         <a-col class="table-bottom-a1">
           <a-form-item :label-col="{span:6}" label="" name="content"
-                       :rules="[{ required: true, message: '请输入任务内容!' }]"
-          >
+                       :rules="[{ required: true, message: '请输入任务内容!' }]" >
             <a-textarea v-model:value="dataModel.content" placeholder="任务内容" :rows="4"/>
           </a-form-item>
         </a-col>
@@ -104,13 +102,9 @@
               <template v-if="column.key === 'siteUserName'">
                 <div>
                   <a-input v-model:value="userData[index][column.key]" style="border:none;text-align: center;"></a-input>
-<!--                  <a-select
-                    ref="select"
-                    v-model:value="userData[index][column.key]"
-                    :options="siteUserList"
-                    :field-names="{ label: 'siteUserName', value: 'siteUserID' }"
-                    :allow-clear="true" style="width: 200px"
-                  >
+                  <!--<a-select ref="select" v-model:value="userData[index][column.key]"
+                    :options="siteUserList"  :field-names="{ label: 'siteUserName', value: 'siteUserID' }"
+                    :allow-clear="true" style="width: 200px" >
                   </a-select>-->
                 </div>
               </template>
@@ -293,8 +287,6 @@ export default defineComponent(
         });
       };
 
-
-
       return {
         ...toRefs(formData),
         modalSiteUserRef,
@@ -323,7 +315,6 @@ export default defineComponent(
     },
     created() {
       const id = history.state.params?.id;
-      console.log(id);
       this.loadUserData(id);
       this.loadData(id);
       this.getSiteUserList();

+ 9 - 3
vue/src/views/taskAndLog/dotask/index.vue

@@ -21,12 +21,16 @@
           <a-button type="primary" html-type="submit" @click="onSearch">查询</a-button>
           <a-button
             style="margin: 0 8px"
-            @click="
+            @click='
               () => {
+                /*searchParams.StartTime = dayjs().format("YYYY-MM-DD");
+                searchParams.EndTime = dayjs().format("YYYY-MM-DD");
+                searchParams.finishStartTime = dayjs().format("YYYY-MM-DD");
+                searchParams.finishEndTime = dayjs().format("YYYY-MM-DD");*/
                 formRef.resetFields();
                 loadData();
               }
-            ">重置</a-button>
+            '>重置</a-button>
           <a style="font-size: 12px" @click="expand = !expand">
             <template v-if="expand">
               <UpOutlined />
@@ -121,6 +125,7 @@ import {message, Modal} from "ant-design-vue";
 import dayjs from 'dayjs';
 import {useTabsViewStore} from "@/store/modules/tabsView";
 
+
 export default defineComponent({
   name: 'doTaskList',
   components: { DownOutlined, UpOutlined, BExportExcel},
@@ -284,6 +289,7 @@ export default defineComponent({
 
     return {
       changeCity,
+      expand,
       regionList,
       streetList,
       taskTypeList,
@@ -305,7 +311,7 @@ export default defineComponent({
       loadData,
       onAdd,
       onEdit,
-      expand
+      dayjs
     };
   },
   created() {

+ 13 - 18
vue/src/views/taskAndLog/dowork/edit.vue

@@ -6,8 +6,13 @@
         <a-col :span="7">
           <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" v-model:value="dataModel.siteUserID" :options="siteUserList"
-                      :field-names="{ label: 'text', value: 'value' }" :allow-clear="true" > </a-select>
+            <a-select ref="select"   show-search optionFilterProp="label"
+                      v-model:value="dataModel.siteUserID"
+                      :allow-clear="true">
+              <a-select-option v-for="item in siteUserList" :label="item.text" :value="item.value" :key="item.value">
+                <span>{{ item.text }}</span>
+              </a-select-option>
+            </a-select>
           </a-form-item>
         </a-col>
         <a-col :span="8">
@@ -44,7 +49,7 @@
         </a-col>
       </a-row>
       <a-row>
-        <a-textarea :auto-size="{ minRows: 4, maxRows: 10 }"  v-model:value="dataModel.workContent"  :disabled="opCategory==3" placeholder="完成情况" />
+        <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>
       <b-upload-file :fileRefId="dataModel.doWorkID" :readonly="false" :multiple="true"
@@ -65,7 +70,6 @@ import type {SelectProps} from "ant-design-vue";
 import {getSysDictionaryList} from "@/api/system/dictionary";
 import {getRegionCodeList, getStreetCodeList} from "@/api/system/area/index";
 import {getSiteUserDataList} from "@/api/baseSettings/userInfo";
-import {message} from "ant-design-vue";
 
 interface InstitutionModel {
   dataModel: any;
@@ -84,7 +88,6 @@ export default defineComponent({
     const opCategory = ref<any>();
     const tabsViewStore = useTabsViewStore();
     const formData = reactive<InstitutionModel>({ dataModel:{}});
-    const isAllowCommit = ref<boolean>(true);
     const formState = reactive({
       total: 0,
       selectedRowKeys: [],
@@ -145,18 +148,11 @@ export default defineComponent({
     };
 
     const onFinish = () => {
-      if(formData.dataModel.siteUserID==null||formData.dataModel.doTypeID ==null||formData.dataModel.workTime==null||
-        formData.dataModel.regionCode==null||formData.dataModel.streetCode==null||formData.dataModel.workContent==null){
-        message.error("请填写完整的工作日志!");
-        isAllowCommit.value = false;
-      }
-      if (isAllowCommit.value){
-        save(formData.dataModel).then(result => {
-          if (result) {
-            onClose(1);
-          }
-        });
-      }
+      save(formData.dataModel).then(result => {
+        if (result) {
+          onClose(1);
+        }
+      });
     };
 
 
@@ -173,7 +169,6 @@ export default defineComponent({
       siteUserList,
       regionList,
       streetList,
-      isAllowCommit,
       getRegionList,
       getStreetList,
       regionChange,

+ 7 - 5
vue/src/views/taskAndLog/dowork/index.vue

@@ -22,7 +22,9 @@
         </a-col>
         <a-col :span="6" style="text-align: left">
           <a-button type="primary" html-type="submit" @click="onSearch">查询</a-button>
-          <a-button style="margin: 0 8px" @click="formRef.resetFields();onReset();">重置</a-button>
+          <a-button style="margin: 0 8px" @click="
+          formRef.resetFields();
+          onReset();">重置</a-button>
           <a style="font-size: 12px" @click="expand = !expand">
             <template v-if="expand">
               <UpOutlined />
@@ -113,8 +115,8 @@ export default defineComponent({
       pageIndex: 1,
       pageSize: 20,
       userName:'',
-      workStartDate:'',
-      workEndDate:'',
+      workStartDate:null,
+      workEndDate:null,
       doTypeID: null,
       regionCode:'',
       streetCode:''
@@ -248,8 +250,8 @@ export default defineComponent({
     };
 
     const onReset =()=>{
-        searchParams.workStartDate = '';
-        searchParams.workEndDate ='';
+        searchParams.workStartDate = null;
+        searchParams.workEndDate = null;
         loadData();
     };