zx 1 年之前
父节点
当前提交
9c0b67b646
共有 14 个文件被更改,包括 417 次插入109 次删除
  1. 4 9
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/UserController.java
  2. 42 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/UserWorkTypeController.java
  3. 1 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/User.java
  4. 3 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/UserWorkType.java
  5. 1 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/UserMapper.java
  6. 4 4
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/UserService.java
  7. 8 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/UserWorkTypeService.java
  8. 6 3
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureServiceImpl.java
  9. 12 14
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java
  10. 14 11
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  11. 81 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserWorkTypeServiceImpl.java
  12. 4 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/UserMapper.xml
  13. 79 56
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/product/list.vue
  14. 158 9
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/team/index.vue

+ 4 - 9
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/UserController.java

@@ -120,11 +120,6 @@ public class UserController {
     public HttpRespMsg getBaseInfo(@RequestParam String userId){
         HttpRespMsg msg=new HttpRespMsg();
         User user = userService.getById(userId);
-        UserWorkType workType = userWorkTypeService.getById(user.getWorkTypeId());
-        if(workType!=null){
-            user.setWorkType(workType.getName());
-        }
-
         msg.setData(user);
 
         return msg;
@@ -141,11 +136,11 @@ public class UserController {
      */
     @RequestMapping("/getEmployeeList")
     public HttpRespMsg getEmployeeList(@RequestParam Integer departmentId,@RequestParam(defaultValue = "0") Integer matchingType, String keyword,
-                                       Integer status, Integer roleId,
+                                       Integer status, Integer roleId,Integer workTypeId,
                                        Integer onlyDirect,
                                        String cursor,
                                        @RequestParam Integer pageIndex, @RequestParam Integer pageSize) throws Exception {
-        return userService.getEmployeeList(departmentId,matchingType, keyword, status, roleId, onlyDirect, cursor,pageIndex, pageSize, request);
+        return userService.getEmployeeList(departmentId,matchingType, keyword, status, roleId,workTypeId, onlyDirect, cursor,pageIndex, pageSize, request);
     }
 
     @RequestMapping("/getSimpleActiveUserList")
@@ -215,11 +210,11 @@ public class UserController {
      */
     @RequestMapping("/insertUser")
     public HttpRespMsg insertUser(String id, @RequestParam String name, String phone,
-                                  @RequestParam Integer roleId, Double monthCost, Double cost,
+                                  @RequestParam Integer roleId,@RequestParam Integer workTypeId, Double monthCost, Double cost,
                                   Integer departmentId, Integer salaryType, String costApplyDate,
                                     String position, String certJson,String inductionDate,String superiorId,
                                     String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate) {
-        return userService.insertUser(id, name, phone, roleId, monthCost, cost, departmentId, salaryType, costApplyDate,
+        return userService.insertUser(id, name, phone, roleId, workTypeId, monthCost, cost, departmentId, salaryType, costApplyDate,
                     position, certJson, request,inductionDate,superiorId,plate1, plate2, plate3,plate4,plate5, jobNumber, inactiveDate);
     }
 

+ 42 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/UserWorkTypeController.java

@@ -1,10 +1,21 @@
 package com.management.platform.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.management.platform.entity.User;
+import com.management.platform.entity.UserWorkType;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.UserWorkTypeService;
+import com.management.platform.util.HttpRespMsg;
+import org.apache.http.HttpRequest;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
 /**
  * <p>
  *  前端控制器
@@ -16,6 +27,37 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/user-work-type")
 public class UserWorkTypeController {
+    @Resource
+    private UserWorkTypeService userWorkTypeService;
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    private UserMapper userMapper;
+
+    @RequestMapping("getAll")
+    public HttpRespMsg getAll(){
+        HttpRespMsg msg=new HttpRespMsg();
+        User user = userMapper.selectById(request.getHeader("Token"));
+
+        List<UserWorkType> typeList = userWorkTypeService.list(new LambdaQueryWrapper<UserWorkType>().eq(user.getCompanyId() != null, UserWorkType::getCompanyId, user.getCompanyId()));
+
+        msg.setData(typeList);
+        return msg;
+    }
+
+    @RequestMapping("updateOrInsert")
+    public HttpRespMsg update(UserWorkType workType){
+       return userWorkTypeService.updateOrInsert(workType,request);
+    }
+
+    @RequestMapping("delete")
+    public HttpRespMsg delete(Integer id){
+        return userWorkTypeService.delete(id,request);
+    }
 
+    @RequestMapping("getById")
+    public HttpRespMsg getById(Integer id){
+        return userWorkTypeService.getInfo(id,request);
+    }
 }
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/User.java

@@ -303,7 +303,7 @@ public class User extends Model<User> {
     /**
      * 工种名
      */
-    @TableField(exist = false)
+    @TableField("work_type")
     private String workType;
 
     @Override

+ 3 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/UserWorkType.java

@@ -30,6 +30,9 @@ public class UserWorkType extends Model<UserWorkType> {
     @TableField("name")
     private String name;
 
+    @TableField("company_id")
+    private Integer companyId;
+
 
     @Override
     protected Serializable pkVal() {

+ 1 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/mapper/UserMapper.java

@@ -22,7 +22,7 @@ import java.util.Map;
 public interface UserMapper extends BaseMapper<User> {
     List<Map<String, Object>> getUserByDepartment(Page page,
                                                   @Param("companyId") Integer companyId,
-                                                  @Param("departmentId") Integer departmentId,Integer matchingType, String keyword, Integer status, @Param("roleId") Integer roleId);
+                                                  @Param("departmentId") Integer departmentId, Integer matchingType, String keyword, Integer status, @Param("roleId") Integer roleId, @Param("workTypeId") Integer workTypeId);
 
     List<Map<String, Object>> getUserByDepartmentList(Page page,
                                                       @Param("companyId") Integer companyId,

+ 4 - 4
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/UserService.java

@@ -27,7 +27,7 @@ public interface UserService extends IService<User> {
 
     HttpRespMsg getUserInfo(String id);
 
-    HttpRespMsg getEmployeeList(Integer departmentId,Integer matchingType, String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception;
+    HttpRespMsg getEmployeeList(Integer departmentId, Integer matchingType, String keyword,  Integer status, Integer roleId,Integer workTypeId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception;
 
     HttpRespMsg deleteUser(String userId, HttpServletRequest request);
 
@@ -35,10 +35,10 @@ public interface UserService extends IService<User> {
 
     HttpRespMsg insertCompany(String companyName, String name, String phone, String vcode, String pwd, Integer type, String from);
 
-    HttpRespMsg insertUser(String id, String name, String phone, Integer roleId, Double monthCost, Double cost, Integer departmentId,
+    HttpRespMsg insertUser(String id, String name, String phone,  Integer roleId, Integer  workTypeId, Double monthCost, Double cost, Integer departmentId,
                            Integer salaryType, String costApplyDate, String position, String certJson,
-                           HttpServletRequest request,String inductionDate, String superiorId,String plate1,
-                           String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate);
+                           HttpServletRequest request, String inductionDate, String superiorId, String plate1,
+                           String plate2, String plate3, String plate4, String plate5, String jobNumber, String inactiveDate);
 
     HttpRespMsg importUser(MultipartFile multipartFile, HttpServletRequest request);
 

+ 8 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/UserWorkTypeService.java

@@ -2,6 +2,9 @@ package com.management.platform.service;
 
 import com.management.platform.entity.UserWorkType;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
 
 /**
  * <p>
@@ -13,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface UserWorkTypeService extends IService<UserWorkType> {
 
+    HttpRespMsg updateOrInsert(UserWorkType workType, HttpServletRequest request);
+
+    HttpRespMsg delete(Integer id,HttpServletRequest request);
+
+    HttpRespMsg getInfo(Integer id, HttpServletRequest request);
 }

+ 6 - 3
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureServiceImpl.java

@@ -50,7 +50,6 @@ public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, P
         long count = prodProcedureList.stream().filter(prodProcedure -> map.put(prodProcedure.getName(), prodProcedure) == null).count();
         if(count==prodProcedureList.size()){
 
-
             prodProcedureList.stream().forEach(prodProcedure -> {
                 user.getCompanyId();
                 prodProcedure.setCompanyId(user.getCompanyId());
@@ -72,15 +71,17 @@ public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, P
                 //2.要删除的id
                 List<ProdProcedure> deleteList = oldList.stream().filter(old -> {
                     for (ProdProcedure prodProcedure : prodProcedureList) {
-                        if (prodProcedure.getId() == old.getId()) {
+                        System.out.println(old.getId()+"=="+prodProcedure.getId());
+                        if (old.getId()==prodProcedure.getId() ) {
                             return false;
                         }
                     }
                     return true;
 
                 }).collect(Collectors.toList());
-                if (deleteList != null && deleteList.size() > 0) {
 
+                if (deleteList != null && deleteList.size() > 0) {
+                    System.out.println("deleteList"+deleteList);
                     List<Integer> deleteIdList = deleteList.stream().map(delete -> delete.getId()).collect(Collectors.toList());
                     prodProcedureMapper.deleteBatchIds(deleteIdList);
                 }
@@ -88,11 +89,13 @@ public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, P
                 //3.编辑的id
                 List<ProdProcedure> updateList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() != null).collect(Collectors.toList());
                 if (updateList != null&&updateList.size()>0) {
+                    System.out.println("updateList"+updateList);
                     this.updateBatchById(updateList);
                 }
                 //4.新增的id
                 List<ProdProcedure> insertList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() == null).collect(Collectors.toList());
                 if (insertList != null&&insertList.size()>0) {
+                    System.out.println("insertList"+insertList);
                     this.saveBatch(insertList);
                 }
             }else{

+ 12 - 14
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java

@@ -348,7 +348,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             sheet = workbook.getSheetAt(1);
             rowNum = sheet.getLastRowNum();
 
-            for(int indexNum=1;indexNum<rowNum;indexNum++){
+            for(int indexNum=1;indexNum<=rowNum;indexNum++){
                 XSSFRow row = sheet.getRow(indexNum);
                 //跳过空行
                 if(row==null){
@@ -425,23 +425,21 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
                 prodProcedureList.add(prodProcedure);
             }
 
-            //检查同一版本的同一版本号工序中有没有重复的
+            //检查一个产品是否只有一个工序版本号中有没有重复的
             for (ProdProcedure prodProcedure : prodProcedureList) {
 
-                if(prodProcedureList.stream().filter(procedure ->{
-                    return prodProcedure.getName().equals(procedure.getName())&&!prodProcedure.getVersionNumber().equals(procedure.getVersionNumber());
-                } ).count()>0){
+                if(prodProcedureList.stream().filter(procedure -> {
+                    return prodProcedure.getProductName().equals(procedure.getProductName()) && !prodProcedure.getVersionNumber().equals(procedure.getVersionNumber());
+                }).count()>0){
+
                     msg.setError("一个产品只能导入一个产品号");
                     return msg;
                 }
 
-
-
-
-                long count = prodProcedureList.stream()
+                //检查是否有重复的工序
+                if(prodProcedureList.stream()
                         .filter(procedure -> procedure.getProductName().equals(prodProcedure.getProductName()) && procedure.getVersionNumber().equals(prodProcedure.getVersionNumber()) && procedure.getName().equals(prodProcedure.getName()))
-                        .count();
-                if(count>1){
+                        .count()>1){
                     msg.setError("产品"+prodProcedure.getProductName()+"的"+prodProcedure.getVersionNumber()+"版本工序重复了");
                     return msg;
                 }
@@ -621,12 +619,12 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             }
 
 
-      *//*      //导出excel
+            //导出excel
             String result="系统提示:Excel文件导出成功!";
             //生成Excel文件
             String fileUrlSuffix = "产品详情"+System.currentTimeMillis();
-            return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileUrlSuffix,dataList,path);*//*
-//
+            return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileUrlSuffix,dataList,path);
+
             String title= "产品详情"+System.currentTimeMillis();
             String fileName= title+".xlsx";
             String path="D://cloud/upload/";

+ 14 - 11
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.constant.Constant;
-import com.management.platform.controller.WeiXinCorpController;
 import com.management.platform.entity.*;
 import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.entity.vo.UserVO;
@@ -19,8 +18,6 @@ import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
-import org.apache.commons.collections4.Put;
-import org.apache.commons.io.FileUtils;
 import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
@@ -36,7 +33,6 @@ import org.springframework.ldap.core.LdapTemplate;
 import org.springframework.ldap.filter.EqualsFilter;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.ModelAndView;
@@ -211,7 +207,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private TaskGroupService taskGroupService;
     @Resource
     private ParticipationService participationService;
-
+    @Resource
+    private UserWorkTypeMapper workTypeMapper;
     @Resource
     private LdapTemplate ldapTemplate;
 
@@ -744,7 +741,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
     //获取员工的列表
     @Override
-    public HttpRespMsg getEmployeeList(Integer departmentId,Integer matchingType,String keyword, Integer status, Integer roleId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception {
+    public HttpRespMsg getEmployeeList(Integer departmentId, Integer matchingType, String keyword,  Integer status, Integer roleId,Integer workTypeId, Integer onlyDirect, String cursor, Integer pageIndex, Integer pageSize, HttpServletRequest request) throws Exception {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         Boolean flag = false;
         if (status != null && status.equals(2)){
@@ -784,11 +781,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                 Page<User> page = new Page<>(pageIndex, pageSize);
                 if (departmentId == -1) {
                     //单独查找全部
-                    list = userMapper.getUserByDepartment(page, companyId, null,matchingType, keyword, status, roleId);
+                    list = userMapper.getUserByDepartment(page, companyId, null,matchingType, keyword, status, roleId,workTypeId);
                     total = page.getTotal();
                 } else if (departmentId == 0) {
                     //单独查找0, 未分配的
-                    list = userMapper.getUserByDepartment(page, companyId, departmentId,matchingType, keyword, status, roleId);
+                    list = userMapper.getUserByDepartment(page, companyId, departmentId,matchingType, keyword, status, roleId, workTypeId);
                     total = page.getTotal();
                 } else {
                     //范围查找
@@ -1181,9 +1178,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 
     //新增或修改用户
     @Override
-    public HttpRespMsg insertUser(String targetId, String name, String phone, Integer roleId, Double monthCost, Double cost,
-                                  Integer departmentId, Integer salaryType, String costApplyDate, String position, String certJson, HttpServletRequest request,String inductionDate,
-                                  String superiorId,   String plate1,String plate2,String plate3,String plate4,String plate5, String jobNumber, String inactiveDate) {
+    public HttpRespMsg insertUser(String targetId, String name, String phone, Integer roleId, Integer  workTypeId, Double monthCost, Double cost,
+                                  Integer departmentId, Integer salaryType, String costApplyDate, String position, String certJson, HttpServletRequest request, String inductionDate,
+                                  String superiorId, String plate1, String plate2, String plate3, String plate4, String plate5, String jobNumber, String inactiveDate) {
+
+
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         try {
@@ -1222,6 +1221,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                                 .setPhone(phone)
                                 .setRoleId(roleId)
                                 .setRoleName(sysRoleMapper.selectById(roleId).getRolename())
+                                .setWorkTypeId(workTypeId)
+                                .setWorkType(workTypeMapper.selectById(workTypeId).getName())
                                 .setCompanyId(creator.getCompanyId())
                                 .setMonthCost(monthCostValue)
                                 .setCost(costValue)
@@ -1303,6 +1304,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                         .setPhone(phone)
                         .setRoleId(roleId)
                         .setRoleName(sysRoleMapper.selectById(roleId).getRolename())
+                        .setWorkTypeId(workTypeId)
+                        .setWorkType(workTypeMapper.selectById(workTypeId).getName())
                         .setMonthCost(monthCostValue)
                         .setCost(costValue)
                         .setPosition(position)

+ 81 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/UserWorkTypeServiceImpl.java

@@ -1,11 +1,19 @@
 package com.management.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.management.platform.entity.User;
 import com.management.platform.entity.UserWorkType;
+import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.UserWorkTypeMapper;
 import com.management.platform.service.UserWorkTypeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * <p>
  *  服务实现类
@@ -16,5 +24,78 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class UserWorkTypeServiceImpl extends ServiceImpl<UserWorkTypeMapper, UserWorkType> implements UserWorkTypeService {
+    @Resource
+    private UserWorkTypeMapper workTypeMapper;
+    @Resource
+    private UserMapper userMapper;
+    @Override
+    public HttpRespMsg updateOrInsert(UserWorkType workType, HttpServletRequest request) {
+        HttpRespMsg msg=new HttpRespMsg();
+        String token = request.getHeader("Token");
+        Integer companyId = userMapper.selectById(token).getCompanyId();
+
+        int count = count(new LambdaQueryWrapper<UserWorkType>()
+                .eq(StringUtils.isNoneBlank(workType.getName()), UserWorkType::getName, workType.getName())
+                .eq(companyId!=null,UserWorkType::getCompanyId,companyId)
+        );
+
+        if(workType.getId()!=null){
+           if(count>1){
+               msg.setError("改工种已存在");
+           }else{
+
+               workTypeMapper.updateById(workType);
+               User user=new User();
+               user.setWorkType(workType.getName());
+
+               userMapper.update(user,new LambdaQueryWrapper<User>()
+                       .eq(true,User::getWorkTypeId,workType.getId())
+                       .eq(companyId!=null,User::getCompanyId,companyId)
+               );
+           }
+
+        }else{
+            if(count!=0){
+                msg.setError("改工种已存在");
+            }else{
+                workType.setCompanyId(companyId);
+                workTypeMapper.insert(workType);
+            }
+
+        }
+
+         msg.setData(workType);
+        return msg;
+    }
+
+
+    @Override
+    public HttpRespMsg delete(Integer id, HttpServletRequest request) {
+        HttpRespMsg msg=new HttpRespMsg();
+
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
+        if(userMapper.selectCount(new LambdaQueryWrapper<User>().eq(id!=null,User::getWorkTypeId,id)
+                .eq(user.getCompanyId()!=null,User::getCompanyId,user.getCompanyId()))>0){
+            msg.setError("改工种正在使用,不能删除");
+        }else{
+            workTypeMapper.deleteById(id);
+        }
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getInfo(Integer id, HttpServletRequest request) {
+        HttpRespMsg msg=new HttpRespMsg();
+
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
+        UserWorkType userWorkType = workTypeMapper.selectOne(new LambdaQueryWrapper<UserWorkType>()
+                .eq(user.getCompanyId() != null, UserWorkType::getCompanyId, user.getCompanyId())
+                .eq(id != null, UserWorkType::getId, id)
+        );
+        msg.setData(userWorkType);
 
+        return msg;
+    }
 }

+ 4 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/resources/mapper/UserMapper.xml

@@ -58,7 +58,7 @@
     </sql>
     <!--单独分页获取人员-->
     <select id="getUserByDepartment" resultType="java.util.Map">
-        SELECT a.id, a.role_id as roleId, a.role_name as roleName, a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
+        SELECT a.id,a.gender, a.role_id as roleId, a.role_name as roleName, a.work_type_id as workTypeId, a.work_type as workType, a.name, a.phone, a.portrait_url AS portraitUrl, a.role, a.company_id AS companyId, a.cost,
         a.department_id AS departmentId, b.department_name AS departmentName, a.department_cascade AS departmentCascade,
         a.month_cost as monthCost, a.salary_type as salaryType, a.is_active as isActive,date_format(a.`inactive_date`, '%Y-%m-%d') AS inactiveDate, a.cost_apply_date as costApplyDate,a.plate1,a.plate2,a.plate3,a.plate4,a.plate5,
         a.job_number as jobNumber, DATE_FORMAT(a.create_time, '%Y-%m-%d %H:%m')  as createTime
@@ -88,6 +88,9 @@
         <if test="roleId != null">
             AND a.role_id = #{roleId}
         </if>
+        <if test="workTypeId!= null">
+            AND a.work_type_id = #{workTypeId}
+        </if>
     </select>
 
     <!--范围分页获取人员-->

+ 79 - 56
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/product/list.vue

@@ -368,10 +368,10 @@
 
 
         <!-- 产品分类管理 -->
-        <el-dialog title="分类管理" :visible.sync="isganttshow" width="50%" :before-close="handleClose">
+        <el-dialog title="分类管理" :visible.sync="isganttshow" width="50%" >
             <div>
                 <el-table :data="categoryList" style="width: 100%">
-                    <el-table-column type="index" width="180">
+                    <el-table-column type="index" width="180" label="序号">
                     </el-table-column>
                     <el-table-column prop="name" label="分类名称" width="180">
                     </el-table-column>
@@ -408,7 +408,7 @@
             <div>
                 <el-form ref="form" :model="category" label-width="80px">
                     <el-form-item label="分类名称">
-                        <el-input v-model="category.name"></el-input>
+                        <el-input v-model="category.name" placeholder="请输入"></el-input>
                     </el-form-item>
                 </el-form>
             </div>
@@ -788,7 +788,7 @@ export default {
             temaddForm: {},
             rules: {
                 name: [{ required: true, message: this.$t('pleaseentername'), trigger: "blur" }],
-                code: [{ required: true, message: this.$t('qing-shu-ru-bian-hao'), trigger: "blur" }],
+                code: [{ required: true, message: "请输入项目代码", trigger: "blur" }],
                 orderNumber: [{ required: true, message:' 请输入订单数量', trigger: "blur" }],
                 unit: [{ required: true, message: '请输入单位', trigger: "blur" }],
                 groupNumber: [{ required: true, message: '请输入编组', trigger: "blur" }],
@@ -1057,24 +1057,33 @@ export default {
                 })
         },
         saveCategory() {
+            if (this.category.name == null) {
+                this.$message({
+                    showClose: true,
+                    message: '分类名不能为空',
+                    type: 'warning'
+                });
+            }else{
 
-            this.http.post("/prod-category/saveOrUpdateInfo", this.category,
-                res => {
-                    if (res.code == 'ok') {
-                        this.isganttshowCa = false
-                        this.getCategoryList()
-                        this.category = {}
-                    } else {
-                        this.$message({
-                            showClose: true,
-                            message: '该分类已存在',
-                            type: 'warning'
-                        });
-                    }
+                this.http.post("/prod-category/saveOrUpdateInfo", this.category,
+                    res => {
+                        if (res.code == 'ok') {
+                            this.isganttshowCa = false
+                            this.getCategoryList()
+                            this.category = {}
+                        } else {
+                            this.$message({
+                                showClose: true,
+                                message: '该分类已存在',
+                                type: 'warning'
+                            });
+                        }
 
 
-                })
+                    })
 
+            }
+            
         },
 
         getCategoryList() {
@@ -3230,50 +3239,64 @@ export default {
             this.$refs.form1.validate(valid => {
                 console.log(valid)
                 if (valid) {
+                    console.log("columnNumber", this.addForm.columnNumber,"vehicleNumber", this.addForm.vehicleNumber)
+                    let flag=true;
+                    if(!Number.isInteger(this.addForm.orderNumber)){
+                        flag=false;
+                    }
+                    if(this.addForm.columnNumber != null && !Number.isInteger(this.addForm.columnNumber)){
+                        flag=false;
+                    }
+                    if(this.addForm.vehicleNumber != null && !Number.isInteger(this.addForm.vehicleNumber)){
+                        flag=false;
+                    }
 
-                    if(Number.isInteger(this.addForm.orderNumber)&& Number.isInteger(this.addForm.columnNumber) && Number.isInteger(this.addForm.vehicleNumber)){    
-                    //console.log("valid",valid)
-                    this.addLoading = true;
-                    this.addForm.categoryId = this.cateId;
-                    this.http.post('/product/saveProductInfo', this.addForm,
-                        res => {
-                            this.addLoading = false;
-                            if (res.code == "ok") {
-                                this.productId = res.data.id;
-                                this.productName = res.data.name;
-                                this.$message({
-                                    message: (this.addForm.id != null ? this.$t('xiu-gai') : this.$t('create')) + this.$t('other.successful'),
-                                    type: "success"
-                                });
-                                if (addSequence) {
-                                    //进入工序录入
-                                    this.http.post('/prod-procedure/getProdProcedureList', { productId: this.productId },
-                                        res => {
-                                            this.procedureLit = res.data.prodProcedureList;
-                                            this.procedureVersion = res.data.version;
-
-                                        })
-
-                                    this.prodEditActive = 1;
+                    
+                    if(flag){
+                            //console.log("valid",valid)
+                        this.addLoading = true;
+                        this.addForm.categoryId = this.cateId;
+                        this.http.post('/product/saveProductInfo', this.addForm,
+                            res => {
+                                this.addLoading = false;
+                                if (res.code == "ok") {
+                                    this.productId = res.data.id;
+                                    this.productName = res.data.name;
+                                    this.$message({
+                                        message: (this.addForm.id != null ? this.$t('xiu-gai') : this.$t('create')) + this.$t('other.successful'),
+                                        type: "success"
+                                    });
+                                    if (addSequence) {
+                                        //进入工序录入
+                                        this.http.post('/prod-procedure/getProdProcedureList', { productId: this.productId },
+                                            res => {
+                                                this.procedureLit = res.data.prodProcedureList;
+                                                this.procedureVersion = res.data.version;
+
+                                            })
+
+                                        this.prodEditActive = 1;
+                                    } else {
+                                        this.addFormVisible = false;
+                                    }
+                                    this.getList();
                                 } else {
-                                    this.addFormVisible = false;
+                                    this.$message({
+                                        message: res.msg,
+                                        type: "error"
+                                    });
                                 }
-                                this.getList();
-                            }else {
+                            },
+                            error => {
+                                this.addLoading = false;
                                 this.$message({
-                                    message: res.msg,
+                                    message: error,
                                     type: "error"
                                 });
-                            }
-                        },
-                        error => {
-                            this.addLoading = false;
-                            this.$message({
-                                message: error,
-                                type: "error"
-                            });
-                        });;
-                    } else {
+                            });;
+
+                    }
+                    else {
                          this.$message({
                             message: "数量要为整数",
                             type: "error"

+ 158 - 9
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/team/index.vue

@@ -113,6 +113,10 @@
                     <el-form-item style="float:right;" v-if="user.dingdingUserid != null && permissions.structureImport">
                         <el-link type="primary" :underline="false" @click="showCorpDDSyncDialog">{{ $t('synchronizetheaddressbook') }}</el-link>
                     </el-form-item>
+
+                     <el-form-item style="float:right;" v-if="permissions.structureExport">
+                          <el-link type="primary" :underline="false" @click="showWorkTypeDialog">自定义工种</el-link>
+                      </el-form-item>
                     
                     <el-form-item style="float:right;">
                         <span style="color: #666666">{{ $t('jiao-se') }}</span>
@@ -121,16 +125,27 @@
                         </el-select>
                     </el-form-item>
                     <el-form-item style="float:right;">
-                        <span style="color: #666666">{{ $t('state.states') }}</span>
-                        <el-select v-model="status" :placeholder="$t('defaultText.pleaseChoose')" @change="getUser()" style="width: 120px" size="small">
+                        <span style="color: #666666">工种</span>
+                        <el-select v-model="workTypeId" :placeholder="$t('defaultText.pleaseChoose')" @change="getUser()" style="width: 120px" clearable size="small">
                             <el-option
-                            v-for="item in states"
-                            :key="item.value"
-                            :label="item.label"
-                            :value="item.value">
+                            v-for="item in workTypeList"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.id">
                             </el-option>
                         </el-select>
                     </el-form-item>
+                    <el-form-item style="float:right;">
+                          <span style="color: #666666">{{ $t('state.states') }}</span>
+                          <el-select v-model="status" :placeholder="$t('defaultText.pleaseChoose')" @change="getUser()" style="width: 120px" size="small">
+                              <el-option
+                              v-for="item in states"
+                              :key="item.value"
+                              :label="item.label"
+                              :value="item.value">
+                              </el-option>
+                          </el-select>
+                      </el-form-item>
                     <el-form-item style="float:right;">
                         <div style="width: 300px;display: inline-block;margin-top: 4px">
                             <el-input v-model="keyword" class="input-with-select" placeholder="请输入" clearable="true" size="small">
@@ -173,6 +188,8 @@
                   </template>
                 </el-table-column>
                 <el-table-column prop="jobNumber" :label="$t('Worknumber')" ></el-table-column>
+                <el-table-column prop="workType" label="工种" ></el-table-column>
+                <el-table-column  label="性别" ><template slot-scope="scope"><div>{{ scope.row.gender == 1 ? '男' : "女" }}</div></template></el-table-column>
                 <el-table-column prop="phone" :label="$t('shou-ji')" width="120"></el-table-column>
                 <el-table-column prop="departmentName" :label="$t('lable.department')" width="220">
                   <template slot-scope="scope">
@@ -236,7 +253,42 @@
             </el-col>
         </el-col>
       </div>
-
+      <!-- 工种列表 -->
+       <el-dialog title="工种管理" :visible.sync="isganttshow" width="50%" :before-close="handleClose">
+              <div>
+                  <el-table :data="workTypeList" style="width: 100%">
+                      <el-table-column type="index" width="180" label="序号">
+                      </el-table-column>
+                      <el-table-column prop="name" label="工种名称" width="180">
+                      </el-table-column>
+                      <el-table-column label="操作">
+                          <template slot-scope="scope">
+                              <el-button size="mini" @click="updateWorkType(scope.row)">编辑</el-button>
+                              <el-button size="mini" @click="deleteWorkType(scope.row)">删除</el-button>
+                          </template>
+                      </el-table-column>
+                  </el-table>
+              </div>
+              <span slot="footer" class="dialog-footer">
+                  <el-button @click="isganttshow = false">取 消</el-button>
+                  <el-button type="primary" @click="isganttshowWk = true; title = '新增工种'; workType = {}">新增</el-button>
+              </span>
+          </el-dialog>
+          
+          <!-- 编辑工种 -->
+          <el-dialog :title="title" :visible.sync="isganttshowWk" width="30%">
+              <div>
+                  <el-form ref="form" :model="workType" label-width="80px">
+                      <el-form-item label="工种名称">
+                          <el-input v-model="workType.name" placeholder="请输入"></el-input>
+                      </el-form-item>
+                  </el-form>
+              </div>
+              <span slot="footer" class="dialog-footer">
+                  <el-button @click="isganttshowWk = false">取 消</el-button>
+                  <el-button type="primary" @click=" saveWorkType()">确定</el-button>
+              </span>
+          </el-dialog>
       <!-- 修正工时所属部门 -->
       <el-dialog title="修正工时" :visible.sync="workingHoursDialog" width="650px" :before-close="handleClose">
         <div>
@@ -341,6 +393,16 @@
                   <el-form-item :label="$t('Worknumber')" prop="jobNumber">
                       <el-input v-model="insertForm.jobNumber" :placeholder="$t('peaseenterthe')" clearable></el-input>
                   </el-form-item>
+                  <el-form-item label="工种" prop="workTypeId">
+                         <el-select v-model="insertForm.workTypeId" placeholder="请选择">
+                            <el-option
+                              v-for="item in workTypeList"
+                              :key="item.id"
+                              :label="item.name"
+                              :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
                   <el-form-item :label="$t('monthcost')" prop="monthCost" v-if="insertForm.salaryType == 0 && permissions.structurePersonnel&&user.timeType.isSecretSalary==0">
                       <el-input v-model="insertForm.monthCost" id="mc" @input="oninput" :placeholder="$t('yuechengben')" clearable @keyup.native="restrictNumber('mc')"></el-input>
                       <span style="color:orange;font-size:12px;">{{ $t('yuegongzuoo') }}{{timeType.monthDays}}{{ $t('time.day') }},{{$t('meitian')}}{{timeType.allday}}{{ $t('xiaoshi') }}</span>
@@ -801,6 +863,8 @@ export default {
     window.onresize = function temp() {
         that.tableHeight = window.innerHeight - 195;
     };
+
+    this.getAllWorkType()
     this.initDrag([
       {
         type: "LR",
@@ -840,6 +904,11 @@ export default {
   },
   data() {
     return {
+      isganttshow: false,
+      isganttshowWk: false,
+      workTypeId: null,
+      workTypeList: [],  //所有工种集合
+      workType:{},
       isSyncContact: false,
       showSyncDDDialog: false,
       transferActiveDialogFlag:false,
@@ -2420,6 +2489,7 @@ export default {
           status: this.status,
           // role: this.role
           roleId: this.roleId,
+          workTypeId: this.workTypeId,
           onlyDirect: this.onlyDirect ? "1" : "0",
           cursor: this.nextCursor, // 游标
           matchingType: this.integer
@@ -2508,6 +2578,79 @@ export default {
         })
         .catch(() => {});
     },
+    showWorkTypeDialog(){
+      this.getAllWorkType()
+      this.isganttshow=true;
+    },
+    //获取所有的工种
+    getAllWorkType(){
+      this.http.post("/user-work-type/getAll",{},
+      res=>{
+        if(res.code =='ok'){
+          this.workTypeList=res.data.map(item=>{
+            return{
+              id: parseInt(item.id),
+              name: item.name
+            }
+          })
+          console.log(this.workTypeList)
+        }
+      })
+    },
+    updateWorkType(row) {
+      this.isganttshowWk = true
+      this.title = "编辑工种"
+      this.workType = row
+    },
+    deleteWorkType(row) {
+      this.http.post("/user-work-type/delete", { id: row.id },
+        res => {
+          console.log("=======", res.code)
+          if (res.code === 'ok') {
+            this.getAllWorkType()
+            this.$message({
+              showClose: true,
+              message: '删除成功',
+              type: 'success'
+            });
+          } else {
+            this.$message({
+              showClose: true,
+              message: res.msg,
+              type: 'warning'
+            });
+          }
+        })
+    },
+    saveWorkType() {
+     
+      if(this.workType.name==null){
+         this.$message({
+          showClose: true,
+          message: '工种名不能为空',
+          type: 'warning'
+        });
+      }else{
+          this.http.post("/user-work-type/updateOrInsert", this.workType,
+          res => {
+            if (res.code == 'ok') {
+              this.isganttshowWk = false
+              this.getAllWorkType()
+              this.workType = {}
+            } else {
+              this.$message({
+                showClose: true,
+                message: '该工种已存在',
+                type: 'warning'
+              });
+            }
+
+
+          })
+      }
+    
+
+    },
 
     // 新增、编辑人员
     openInsertDialog(row, roleNameFlg) {
@@ -2572,10 +2715,12 @@ export default {
                 plate3: res.data.plate3,
                 plate4: res.data.plate4,
                 plate5: res.data.plate5,
-                jobNumber: res.data.jobNumber
+                jobNumber: res.data.jobNumber,
+                workTypeId: res.data.workTypeId
               };
               this.$set(this.insertForm, 'inductionDate', res.data.inductionDate)
               this.getUserCustomConfig(1);
+              this.getAllWorkType()
             } else {
               this.$message({
                 message: res.msg,
@@ -2656,11 +2801,13 @@ export default {
             this.submitLoading = false;
             return false;
           }
+
           form = {
             name: this.insertForm.name,
             phone: this.insertForm.phone,
             // role: this.insertForm.role,
             roleId: this.insertForm.roleId,
+            workTypeId: this.insertForm.workTypeId,
             monthCost: this.insertForm.monthCost,
             cost: this.insertForm.cost,
             salaryType: this.insertForm.salaryType,
@@ -2674,6 +2821,8 @@ export default {
             plate4: this.insertForm.plate4,
             plate5: this.insertForm.plate5,
             jobNumber: this.insertForm.jobNumber,
+            workTypeId: this.insertForm.workTypeId
+            
           };
           if (this.insertForm.isActive == 0) {
             form.inactiveDate = this.insertForm.inactiveDate;
@@ -2902,7 +3051,7 @@ export default {
             position: this.insertForm.position,
             certJson: this.insertForm.certJson,
             inductionDate: this.insertForm.inductionDate,
-            jobNumber: this.insertForm.jobNumber,
+            jobNumber: this.insertForm.jobNumber
           };
           if (this.insertForm.departmentId != null) {
             form.departmentId =