소스 검색

产品管理

zx 1 년 전
부모
커밋
d21e92e667
20개의 변경된 파일799개의 추가작업 그리고 195개의 파일을 삭제
  1. 3 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/MaterialController.java
  2. 35 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdCategoryController.java
  3. 75 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdMaterialController.java
  4. 76 2
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdProcedureController.java
  5. 11 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProductController.java
  6. 53 7
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdMaterial.java
  7. 28 13
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdProcedure.java
  8. 6 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdCategoryService.java
  9. 12 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdMaterialService.java
  10. 12 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdProcedureService.java
  11. 2 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProductService.java
  12. 49 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdCategoryServiceImpl.java
  13. 114 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdMaterialServiceImpl.java
  14. 124 0
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProdProcedureServiceImpl.java
  15. 42 4
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java
  16. 0 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  17. 2 2
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/TaskProgressServiceImpl.java
  18. 0 1
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/util/MD5Util.java
  19. 42 161
      fhKeeper/formulahousekeeper/timesheet-workshop/package-lock.json
  20. 113 3
      fhKeeper/formulahousekeeper/timesheet-workshop/src/views/product/list.vue

+ 3 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/MaterialController.java

@@ -1,6 +1,8 @@
 package com.management.platform.controller;
 
 
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
@@ -17,5 +19,6 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping("/material")
 public class MaterialController {
 
+
 }
 

+ 35 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdCategoryController.java

@@ -1,15 +1,20 @@
 package com.management.platform.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.management.platform.entity.ProdCategory;
+import com.management.platform.entity.User;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.ProdCategoryService;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 /**
  * <p>
@@ -30,11 +35,40 @@ public class ProdCategoryController {
     @Resource
     ProdCategoryService prodCategoryService;
 
+    @RequestMapping(value = "/getList",method = RequestMethod.POST)
+    public HttpRespMsg getList(){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
+        List<ProdCategory> categoryList = prodCategoryService.list(
+                new LambdaQueryWrapper<ProdCategory>()
+                        .eq(user.getCompanyId() != null, ProdCategory::getCompanyId, user.getCompanyId())
+        );
+        httpRespMsg.data=categoryList;
+
+        return httpRespMsg;
+    }
     @RequestMapping("get")
-    private HttpRespMsg get(Integer id){
+    public HttpRespMsg get(Integer id){
         HttpRespMsg msg = new HttpRespMsg();
         msg.data = prodCategoryService.getById(id);
         return msg;
     }
+
+    @RequestMapping("saveOrUpdateInfo")
+    public HttpRespMsg update(ProdCategory prodCategory){
+        return  prodCategoryService.saveOrUpdateInfo(prodCategory,request);
+    }
+
+    /**
+     * 根据当前分类有没有产品判断是否可删除
+     * @param id
+     * @return
+     */
+    @RequestMapping("delete")
+    public HttpRespMsg delete(Integer id){
+        return prodCategoryService.delete(id);
+    }
+
 }
 

+ 75 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdMaterialController.java

@@ -1,10 +1,24 @@
 package com.management.platform.controller;
 
 
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.management.platform.entity.ProdMaterial;
+import com.management.platform.entity.ProdMaterial;
+import com.management.platform.service.ProdMaterialService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
 /**
  * <p>
  *  前端控制器
@@ -16,6 +30,67 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/prod-material")
 public class ProdMaterialController {
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    private ProdMaterialService prodMaterialService;
+
+    /**
+     * 获取产品的id物料列表
+     */
+    @RequestMapping("/getProdMaterialList")
+    public HttpRespMsg getProdMaterialList (@RequestParam Integer productId){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        List<String> versionList= (List<String>) prodMaterialService.getVersion(request,productId).getData();
+        HttpRespMsg info = prodMaterialService.getInfo(request, versionList.get(versionList.size() - 1), productId);
+        List<ProdMaterial> prodMaterialList= (List<ProdMaterial>) info.data;
+
+        HashMap<String,Object> map=new HashMap<>();
+        map.put("version",versionList.get(versionList.size() - 1));
+        map.put("prodMaterialList",prodMaterialList);
+        System.out.println(map);
+
+        httpRespMsg.data=map;
+        return httpRespMsg;
+    }
+
+    /**
+     * 新增、修改工序
+     */
+    @RequestMapping("/changeProdMaterial")
+    public HttpRespMsg changeProdMaterial ( Integer productId ,String version,  String  prodMaterials){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        ObjectMapper mapper = new ObjectMapper();
+        List<ProdMaterial> prodMaterialList= null;
+        try {
+            prodMaterialList = Arrays.asList(mapper.readValue(prodMaterials, ProdMaterial[].class));
+            return prodMaterialService.changeProdMaterial(request, prodMaterialList,productId,version);
+        } catch (IOException e) {
+            httpRespMsg.setError("data is error");
+            e.printStackTrace();
+        }
+        return httpRespMsg;
+    }
+
+
+    /**
+     * 是否可删除物料
+     * 查看该工序有没有被使用(计划中)
+     * TODO
+     */
+    @RequestMapping("/isDelete")
+    public HttpRespMsg isDeleteProdMaterial (Integer id){
+        return prodMaterialService.isDelete(request,id);
+    }
+
+    @RequestMapping("getVersions")
+    public HttpRespMsg getVersions(@RequestParam Integer productId){
 
+        return prodMaterialService.getVersion(request,productId);
+    }
+    @RequestMapping("getInfo")
+    public HttpRespMsg getInfo(@RequestParam String version,@RequestParam Integer productId){
+        return prodMaterialService.getInfo(request,version,productId);
+    }
 }
 

+ 76 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProdProcedureController.java

@@ -1,9 +1,20 @@
 package com.management.platform.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.management.platform.entity.ProdProcedure;
+import com.management.platform.service.ProdProcedureService;
+import com.management.platform.util.HttpRespMsg;
+import com.sun.scenario.effect.impl.sw.java.JSWBlend_SRC_OUTPeer;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * <p>
@@ -16,6 +27,69 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/prod-procedure")
 public class ProdProcedureController {
+    @Resource
+    private HttpServletRequest request;
+    @Resource
+    private ProdProcedureService prodProcedureService;
 
+    /**
+     * 获取产品的id工序列表
+     */
+    @RequestMapping("/getProdProcedureList")
+    public HttpRespMsg getProdProcedureList (@RequestParam Integer productId){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        List<String> versionList= (List<String>) prodProcedureService.getVersion(request,productId).getData();
+        HttpRespMsg info = prodProcedureService.getInfo(request, versionList.get(versionList.size() - 1), productId);
+        List<ProdProcedure> prodProcedureList= (List<ProdProcedure>) info.data;
+
+        HashMap<String,Object> map=new HashMap<>();
+        map.put("version",versionList.get(versionList.size() - 1));
+        map.put("prodProcedureList",prodProcedureList);
+        System.out.println(map);
+
+        httpRespMsg.data=map;
+        return httpRespMsg;
+    }
+
+    /**
+     * 新增、修改工序
+     */
+    @RequestMapping("/changeProdProcedure")
+    public HttpRespMsg changeProdProcedure ( Integer productId ,String version,  String  prodProcedures){
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        ObjectMapper mapper = new ObjectMapper();
+        List<ProdProcedure> prodProcedureList= null;
+        try {
+            prodProcedureList = Arrays.asList(mapper.readValue(prodProcedures, ProdProcedure[].class));
+            return prodProcedureService.changeProdProcedure(request, prodProcedureList,productId,version);
+        } catch (IOException e) {
+            httpRespMsg.setError("data is error");
+            e.printStackTrace();
+        }
+        return httpRespMsg;
+    }
+
+
+    /**
+     * 是否可删除工序
+     * 查看该工序有没有被使用(计划中)
+     * TODO
+     */
+    @RequestMapping("/isDelete")
+    public HttpRespMsg isDeleteProdProcedure (Integer id){
+        return prodProcedureService.isDelete(request,id);
+    }
+
+    @RequestMapping("getVersions")
+    public HttpRespMsg getVersions(@RequestParam Integer productId){
+
+        return prodProcedureService.getVersion(request,productId);
+
+    }
+
+    @RequestMapping("getInfo")
+    public HttpRespMsg getInfo(@RequestParam String version,@RequestParam Integer productId){
+        return prodProcedureService.getInfo(request,version,productId);
+    }
 }
 

+ 11 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/controller/ProductController.java

@@ -56,5 +56,16 @@ public class ProductController {
         productService.removeById(id);
         return msg;
     }
+
+    /**
+     * 查询产品详情
+     * @param id
+     * @return
+     * Todo
+     */
+    @RequestMapping("getInfo")
+    public HttpRespMsg getInfo(Integer id){
+        return productService.getProductInfo(request,id);
+    }
 }
 

+ 53 - 7
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdMaterial.java

@@ -27,17 +27,62 @@ public class ProdMaterial extends Model<ProdMaterial> {
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
-    @TableField("prod_id")
-    private Integer prodId;
+    @TableField("name")
+    private String name;
 
-    @TableField("material_id")
-    private Integer materialId;
+    /**
+     * 所属公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 产品id
+     */
+    @TableField("product_id")
+    private Integer productId;
+
+    /**
+     * 公司编码
+     */
+    @TableField("company_code")
+    private Integer companyCode;
+
+    /**
+     * 公司图号
+     */
+    @TableField("company_drawing_no")
+    private Integer companyDrawingNo;
+
+    /**
+     * 材质
+     */
+    @TableField("material_quality")
+    private String materialQuality;
+
+    /**
+     * 厚度
+     */
+    @TableField("thickness")
+    private Double thickness;
+
+    /**
+     * 数量(个/产品)
+     */
+    @TableField("number_product")
+    private Integer numberProduct;
+
+    /**
+     * 数量(个/辆)
+     */
+    @TableField("number_vehicle")
+    private Integer numberVehicle;
 
     /**
-     * 数量
+     * 版本号
      */
-    @TableField("num")
-    private Integer num;
+    @TableField("version_number")
+    private String versionNumber;
 
 
     @Override
@@ -45,4 +90,5 @@ public class ProdMaterial extends Model<ProdMaterial> {
         return this.id;
     }
 
+
 }

+ 28 - 13
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/entity/ProdProcedure.java

@@ -23,28 +23,32 @@ import lombok.experimental.Accessors;
 @Accessors(chain = true)
 public class ProdProcedure extends Model<ProdProcedure> {
 
-    private static final long serialVersionUID=1L;
-
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
-    @TableField("prod_id")
-    private Integer prodId;
+    /**
+     * 工序名称
+     */
+    @TableField("name")
+    private String name;
 
-    @TableField("procedure_id")
-    private Integer procedureId;
+    /**
+     * 所属公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
 
     /**
-     * 工序类型:0-大工序,1-工序
+     * 所属产品id
      */
-    @TableField("proced_type")
-    private Integer procedType;
+    @TableField("product_id")
+    private Integer productId;
 
     /**
-     * 单价:单位元
+     * 单间工
      */
-    @TableField("price")
-    private BigDecimal price;
+    @TableField("unit_price")
+    private BigDecimal unitPrice;
 
     /**
      * 质检类型:0-自检,1-互检,2-专检
@@ -52,10 +56,21 @@ public class ProdProcedure extends Model<ProdProcedure> {
     @TableField("check_type")
     private Integer checkType;
 
+    /**
+     * 单件工时
+     */
+    @TableField("working_time")
+    private Double workingTime;
+
+    /**
+     * 版本号
+     */
+    @TableField("version_number")
+    private String versionNumber;
+
 
     @Override
     protected Serializable pkVal() {
         return this.id;
     }
-
 }

+ 6 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdCategoryService.java

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

+ 12 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdMaterialService.java

@@ -2,6 +2,11 @@ package com.management.platform.service;
 
 import com.management.platform.entity.ProdMaterial;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.entity.ProdProcedure;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +18,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ProdMaterialService extends IService<ProdMaterial> {
 
+    HttpRespMsg getVersion(HttpServletRequest request, Integer productId);
+
+    HttpRespMsg getInfo(HttpServletRequest request, String version, Integer productId);
+
+    HttpRespMsg isDelete(HttpServletRequest request, Integer id);
+
+    HttpRespMsg changeProdMaterial(HttpServletRequest request, List<ProdMaterial> prodMaterialList, Integer productId, String version);
 }

+ 12 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProdProcedureService.java

@@ -2,6 +2,10 @@ package com.management.platform.service;
 
 import com.management.platform.entity.ProdProcedure;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.management.platform.util.HttpRespMsg;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ProdProcedureService extends IService<ProdProcedure> {
 
+
+    HttpRespMsg changeProdProcedure(HttpServletRequest request, List<ProdProcedure> ProdProcedureList,  Integer productId,String version);
+
+    HttpRespMsg isDelete(HttpServletRequest request, Integer deleteId);
+
+    HttpRespMsg getVersion(HttpServletRequest request, Integer productId);
+
+    HttpRespMsg getInfo(HttpServletRequest request, String version, Integer productId);
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/ProductService.java

@@ -19,4 +19,6 @@ public interface ProductService extends IService<Product> {
     HttpRespMsg getProductPage(Integer cateId, Integer pageIndex, Integer pageSize, String name, String code, HttpServletRequest request);
 
     HttpRespMsg saveProductInfo(Product product, HttpServletRequest request);
+
+    HttpRespMsg getProductInfo(HttpServletRequest request, Integer id);
 }

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

@@ -1,11 +1,20 @@
 package com.management.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.management.platform.entity.ProdCategory;
+import com.management.platform.entity.Product;
+import com.management.platform.entity.User;
 import com.management.platform.mapper.ProdCategoryMapper;
+import com.management.platform.mapper.ProductMapper;
+import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.ProdCategoryService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.HttpRespMsg;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * <p>
  *  服务实现类
@@ -16,5 +25,45 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class ProdCategoryServiceImpl extends ServiceImpl<ProdCategoryMapper, ProdCategory> implements ProdCategoryService {
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private ProdCategoryMapper prodCategoryMapper;
+    @Resource
+    private ProductMapper productMapper;
+
+    @Override
+    public HttpRespMsg saveOrUpdateInfo(ProdCategory prodCategory, HttpServletRequest request) {
+        String token = request.getHeader("Token");
+        User user = userMapper.selectById(token);
+        prodCategory.setCompanyId(user.getCompanyId());
+        if(prodCategory.getId()==null){
+            prodCategoryMapper.insert(prodCategory);
+        }else{
+            prodCategoryMapper.updateById(prodCategory);
+        }
+        HttpRespMsg msg = new HttpRespMsg();
+        System.out.println(prodCategory);
+        msg.setData(prodCategory);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg delete(Integer id) {
+        HttpRespMsg msg=new HttpRespMsg();
 
+        Integer count = productMapper.selectCount(
+                new LambdaQueryWrapper<Product>()
+                        .eq(id != null, Product::getCategoryId, id)
+        );
+        System.out.println(id);
+        System.out.println(count);
+        if(count==0){
+            prodCategoryMapper.deleteById(id);
+        }else{
+            msg.setError("category is used");
+        }
+        System.out.println(msg.code);
+        return msg;
+    }
 }

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

@@ -1,11 +1,23 @@
 package com.management.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.ProdMaterial;
+import com.management.platform.entity.ProdMaterial;
+import com.management.platform.entity.User;
 import com.management.platform.mapper.ProdMaterialMapper;
+import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.ProdMaterialService;
 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;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  *  服务实现类
@@ -16,5 +28,107 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class ProdMaterialServiceImpl extends ServiceImpl<ProdMaterialMapper, ProdMaterial> implements ProdMaterialService {
+    @Resource
+    private ProdMaterialMapper prodMaterialMapper;
+    @Resource
+    private UserMapper userMapper;
+    @Override
+    public HttpRespMsg getVersion(HttpServletRequest request, Integer productId) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        List<ProdMaterial> prodMaterialVersions = prodMaterialMapper.selectList(
+                new QueryWrapper<ProdMaterial>()
+                        .select("DISTINCT version_number")
+                        .lambda()
+                        .eq(productId != null, ProdMaterial::getProductId, productId)
+        );
+        List<String> versionList = prodMaterialVersions.stream().map(prodMaterial -> prodMaterial.getVersionNumber()).collect(Collectors.toList());
+        httpRespMsg.data=versionList;
+        return httpRespMsg;
+    }
+
+    @Override
+    public HttpRespMsg getInfo(HttpServletRequest request, String version, Integer productId) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        List<ProdMaterial> prodMaterialList = prodMaterialMapper.selectList(
+                new LambdaQueryWrapper<ProdMaterial>()
+                        .eq(user.getCompanyId() != null, ProdMaterial::getCompanyId, user.getCompanyId())
+                        .eq(StringUtils.isNotBlank(version), ProdMaterial::getVersionNumber, version)
+                        .eq(productId != null, ProdMaterial::getProductId, productId)
+
+        );
+        httpRespMsg.data=prodMaterialList;
+        return httpRespMsg;
+    }
+
+    @Override
+    public HttpRespMsg isDelete(HttpServletRequest request, Integer id) {
+        HttpRespMsg msg = new HttpRespMsg();
+        //TODO: 检查工序是否已经被使用,被使用的不能删除
+
+        boolean flag=true;
+        msg.setData(flag);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg changeProdMaterial(HttpServletRequest request, List<ProdMaterial> prodMaterialList, Integer productId, String version) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+
+        prodMaterialList.stream().forEach(prodMaterial -> {
+            user.getCompanyId();
+            prodMaterial.setCompanyId(user.getCompanyId());
+            prodMaterial.setProductId(productId);
+            prodMaterial.setVersionNumber(version);
+
+        });
+
+
+        //1.获取原有的工序id
+        List<ProdMaterial> oldList = prodMaterialMapper.selectList(new LambdaQueryWrapper<ProdMaterial>()
+                .eq(user.getCompanyId() != null, ProdMaterial::getCompanyId, user.getCompanyId())
+                .eq(productId != null, ProdMaterial::getProductId, productId)
+                .eq(StringUtils.isNotBlank(version),ProdMaterial::getVersionNumber,version)
+                .select(ProdMaterial::getId)
+        );
+
+        if(oldList!=null&&oldList.size()>0){
+            //2.要删除的id
+            List<ProdMaterial> deleteList = oldList.stream().filter(old -> {
+                for (ProdMaterial prodMaterial : prodMaterialList) {
+                    if (prodMaterial.getId() == old.getId()) {
+                        return false;
+                    }
+                }
+                return true;
+
+            }).collect(Collectors.toList());
+            if (deleteList != null && deleteList.size() > 0) {
+                List<Integer> deleteIdList = deleteList.stream().map(delete -> delete.getId()).collect(Collectors.toList());
+
+                prodMaterialMapper.deleteBatchIds(deleteIdList);
+            }
+
+            //3.编辑的id
+            List<ProdMaterial> updateList = prodMaterialList.stream().filter(prodMaterial -> prodMaterial.getId() != null).collect(Collectors.toList());
+            if (updateList != null&&updateList.size()>0) {
+                this.updateBatchById(updateList);
+            }
+            //4.新增的id
+            List<ProdMaterial> insertList = prodMaterialList.stream().filter(prodMaterial -> prodMaterial.getId() == null).collect(Collectors.toList());
+            if (insertList != null&&insertList.size()>0) {
+                this.saveBatch(insertList);
+            }
+        }else{
+
+            this.saveBatch(prodMaterialList);
+        }
+
+
 
+        return msg;
+    }
 }

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

@@ -1,11 +1,22 @@
 package com.management.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.ProdProcedure;
+import com.management.platform.entity.User;
 import com.management.platform.mapper.ProdProcedureMapper;
+import com.management.platform.mapper.UserMapper;
 import com.management.platform.service.ProdProcedureService;
 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;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +28,117 @@ import org.springframework.stereotype.Service;
 @Service
 public class ProdProcedureServiceImpl extends ServiceImpl<ProdProcedureMapper, ProdProcedure> implements ProdProcedureService {
 
+    @Resource
+    private ProdProcedureMapper prodProcedureMapper;
+    @Resource
+    private UserMapper userMapper;
+
+
+    @Override
+    public HttpRespMsg changeProdProcedure(HttpServletRequest request, List<ProdProcedure> prodProcedureList, Integer productId,String version) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+
+        prodProcedureList.stream().forEach(prodProcedure -> {
+            user.getCompanyId();
+            prodProcedure.setCompanyId(user.getCompanyId());
+            prodProcedure.setProductId(productId);
+            prodProcedure.setVersionNumber(version);
+
+        });
+
+
+        //1.获取原有的工序id
+        List<ProdProcedure> oldList = prodProcedureMapper.selectList(new LambdaQueryWrapper<ProdProcedure>()
+                .eq(user.getCompanyId() != null, ProdProcedure::getCompanyId, user.getCompanyId())
+                .eq(productId != null, ProdProcedure::getProductId, productId)
+                .eq(StringUtils.isNotBlank(version),ProdProcedure::getVersionNumber,version)
+                .select(ProdProcedure::getId)
+        );
+
+        if(oldList!=null&&oldList.size()>0){
+
+            //2.要删除的id
+            List<ProdProcedure> deleteList = oldList.stream().filter(old -> {
+                for (ProdProcedure prodProcedure : prodProcedureList) {
+                    if (prodProcedure.getId() == old.getId()) {
+                        return false;
+                    }
+                }
+                return true;
+
+            }).collect(Collectors.toList());
+            if (deleteList != null && deleteList.size() > 0) {
+
+                List<Integer> deleteIdList = deleteList.stream().map(delete -> delete.getId()).collect(Collectors.toList());
+                prodProcedureMapper.deleteBatchIds(deleteIdList);
+            }
+
+            //3.编辑的id
+            List<ProdProcedure> updateList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() != null).collect(Collectors.toList());
+            if (updateList != null&&updateList.size()>0) {
+                this.updateBatchById(updateList);
+            }
+            //4.新增的id
+            List<ProdProcedure> insertList = prodProcedureList.stream().filter(prodProcedure -> prodProcedure.getId() == null).collect(Collectors.toList());
+            if (insertList != null&&insertList.size()>0) {
+                this.saveBatch(insertList);
+            }
+        }else{
+
+            this.saveBatch(prodProcedureList);
+        }
+
+
+
+
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg isDelete(HttpServletRequest request, Integer deleteId) {
+        HttpRespMsg msg = new HttpRespMsg();
+        //TODO: 检查工序是否已经被使用,被使用的不能删除
+        boolean flag=true;
+        msg.setData(flag);
+        return msg;
+    }
+
+    @Override
+    public HttpRespMsg getVersion(HttpServletRequest request, Integer productId) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+
+        List<ProdProcedure> procedureVersions = prodProcedureMapper.selectList(
+                new QueryWrapper<ProdProcedure>()
+                        .select("DISTINCT version_number")
+                        .lambda()
+                        .eq(productId != null, ProdProcedure::getProductId, productId)
+                        .eq(user.getCompanyId()!=null,ProdProcedure::getCompanyId,user.getCompanyId())
+
+        );
+        List<String> versionList = procedureVersions.stream().map(prodProcedure -> prodProcedure.getVersionNumber()).collect(Collectors.toList());
+        System.out.println(versionList);
+        System.out.println(procedureVersions);
+        httpRespMsg.data=versionList;
+        return httpRespMsg;
+    }
+
+    @Override
+    public HttpRespMsg getInfo(HttpServletRequest request, String version, Integer productId) {
+        HttpRespMsg httpRespMsg=new HttpRespMsg();
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        List<ProdProcedure> prodProcedureList = prodProcedureMapper.selectList(
+                new LambdaQueryWrapper<ProdProcedure>()
+                        .eq(user.getCompanyId() != null, ProdProcedure::getCompanyId, user.getCompanyId())
+                        .eq(StringUtils.isNotBlank(version), ProdProcedure::getVersionNumber, version)
+                        .eq(productId != null, ProdProcedure::getProductId, productId)
+
+        );
+        httpRespMsg.data=prodProcedureList;
+        return httpRespMsg;
+    }
 }

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

@@ -1,13 +1,16 @@
 package com.management.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.management.platform.entity.Product;
-import com.management.platform.entity.Project;
-import com.management.platform.entity.User;
+import com.management.platform.entity.*;
+import com.management.platform.mapper.ProdMaterialMapper;
+import com.management.platform.mapper.ProdProcedureMapper;
 import com.management.platform.mapper.ProductMapper;
 import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.ProdMaterialService;
+import com.management.platform.service.ProdProcedureService;
 import com.management.platform.service.ProductService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.management.platform.util.HttpRespMsg;
@@ -17,6 +20,7 @@ import org.springframework.util.StringUtils;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -33,7 +37,14 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
     ProductMapper productMapper;
     @Resource
     UserMapper userMapper;
-
+    @Resource
+    ProdProcedureMapper prodProcedureMapper;
+    @Resource
+    ProdProcedureService prodProcedureService;
+    @Resource
+    ProdMaterialMapper prodMaterialMapper;
+    @Resource
+    ProdMaterialService prodMaterialService;
 
     @Override
     public HttpRespMsg getProductPage(Integer cateId, Integer pageIndex, Integer pageSize, String name, String code, HttpServletRequest request) {
@@ -76,7 +87,34 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             productMapper.updateById(product);
         }
         HttpRespMsg msg = new HttpRespMsg();
+        System.out.println(product);
         msg.setData(product);
         return msg;
     }
+
+    /**
+     * todo
+     * @param request
+     * @param id
+     * @return
+     */
+    @Override
+    public HttpRespMsg getProductInfo(HttpServletRequest request, Integer id) {
+        HttpRespMsg msg=new HttpRespMsg();
+       /* List<ProdProcedure> procedureVersions = (List<ProdProcedure>) prodProcedureService.getVersion(request,id).getData();
+
+        List<ProdMaterial> prodMaterialVersions = (List<ProdMaterial>) prodMaterialService.getVersion(request,id).getData();
+
+
+
+        ProdProcedure prodProcedure= (ProdProcedure) prodProcedureService.getInfo(request,procedureVersions.get(procedureVersions.size()-1).getVersionNumber(),id).getData();
+        ProdMaterial prodMaterial= (ProdMaterial) prodMaterialService.getInfo(request,prodMaterialVersions.get(prodMaterialVersions.size()-1).getVersionNumber(),id).getData();
+
+        Map<String,Object> map=new HashMap<>();
+        map.put("procedureVersions",procedureVersions);
+        map.put("prodMaterialVersions", prodMaterialVersions);
+        map.put("prodProcedure",prodProcedure);
+        map.put("")*/
+        return null;
+    }
 }

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

@@ -37,7 +37,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.client.DefaultResponseErrorHandler;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
-import sun.net.www.http.HttpClient;
 
 import javax.annotation.Resource;
 import javax.net.ssl.TrustManager;

+ 2 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/TaskProgressServiceImpl.java

@@ -12,12 +12,12 @@ import com.management.platform.service.WxCorpInfoService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.ListUtil;
 import com.management.platform.util.MessageUtils;
-import jdk.nashorn.internal.ir.IfNode;
+
 import org.apache.poi.ss.usermodel.Header;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
-import sun.misc.Request;
+
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;

+ 0 - 1
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/util/MD5Util.java

@@ -1,7 +1,6 @@
 package com.management.platform.util;
 
 import org.springframework.util.DigestUtils;
-import sun.security.rsa.RSASignature;
 
 import java.security.MessageDigest;
 import java.text.ParseException;

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 42 - 161
fhKeeper/formulahousekeeper/timesheet-workshop/package-lock.json


+ 113 - 3
fhKeeper/formulahousekeeper/timesheet-workshop/src/views/product/list.vue

@@ -27,7 +27,7 @@
                     <el-link type="primary" :underline="false" @click="handleAdd(-1,null)">新增产品</el-link>
                 </el-form-item>
                 <el-form-item style="float:right;" >
-                        <el-link type="primary" :underline="false" @click="isganttshow = true">分类管理</el-link>
+                        <el-link type="primary" :underline="false" @click="getCategoryList()">分类管理</el-link>
                 </el-form-item>
             </el-form>
         </el-col>
@@ -372,6 +372,59 @@
                 <el-button type="primary" @click="userDetailVisible = false" >{{ $t('btn.determine') }}</el-button>
             </div>
         </el-dialog>
+
+
+        <!-- 产品分类管理 -->
+        <el-dialog
+            title="分类管理"
+            :visible.sync="isganttshow"
+            width="60%"
+            :before-close="handleClose">
+            <div>
+                <el-table
+                :data="categoryList"
+                style="width: 100%">
+                    <el-table-column
+                        prop="date"
+                        label="日期"
+                        width="180">
+                    </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="updateCategory(scope.row)">编辑</el-button>
+                            <el-button size="mini" @click="deleteCategory(scope.row.id)">删除</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="isganttshowCa = true; title ='新增'">新增</el-button>
+            </span>
+        </el-dialog>
+         <el-dialog
+            :title="title"
+            :visible.sync="isganttshowCa"
+            width="30%"
+            >
+            <div>
+               <el-form ref="form" :model="category" label-width="80px">
+                     <el-form-item label="分类名称">
+                        <el-input v-model="category.name"></el-input>
+                    </el-form-item>
+               </el-form> 
+            </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="isganttshowCa = false">取 消</el-button>
+                <el-button type="primary" @click=" saveCategory()">确定</el-button>
+            </span>
+        </el-dialog>
         <!-- 子项目列表 -->
         <el-dialog :title="$t('listofsubitems')" show-header="false" v-if="subProjectVisible" :visible.sync="subProjectVisible" :close-on-click-modal="false" customClass="customWidth" width="500px">
             <el-table :data="subProjectList" highlight-current-row  height="400" style="width: 100%;">
@@ -577,8 +630,8 @@ a {
         },
         data() {
             return {
-
-        
+                categoryList: [],
+                category:{},
                 procedureVersion: "",
                 prodMaterialVersion: "",
                 //项目展开的详情
@@ -614,6 +667,7 @@ a {
                 showImportResult: false,
                 importResultMsg:null,
                 isganttshow: false,
+                isganttshowCa: false,
                 deleteAlertMsg: null,
                 chosenLeaders:[],
                 baseClfList:[],
@@ -848,7 +902,63 @@ a {
             })
         },
         methods: {
+            updateCategory(row){
+                this.isganttshowCa = true
+                this.title="编辑"
+                this.category=row
+            },
+            deleteCategory(row){
+                this.http.post("/prod-category/delete",{id: row.id},
+                res=>{
+                    console.log("=======",res.code)
+                    if(res.code==='ok'){
+                        this.getCategoryList()
+                         this.$message({
+                            showClose: true,
+                            message: '删除成功',
+                            type: 'success'
+                        });
+                    }else{
+                         this.$message({
+                            showClose: true,
+                            message: '该分类正在使用中,不能删除',
+                            type: 'warning'
+                        });
+                    }
+                })
+             },
+            saveCategory(){
+                
+                this.http.post("/prod-category/saveOrUpdateInfo",this.category,
+                res=>{
+                    if(res.code=='ok'){
+                        this.isganttshowCa = false
+                        this.getCategoryList()
+                    }
+                   
 
+                })
+
+            },
+
+            getCategoryList(){
+                this.isganttshow = true
+                console.log("======")
+                console.log(this.categoryList)
+                this.http.post("/prod-category/getList",null,
+               res => {
+                    this.categoryList=res.data
+                    console.log(this.categoryList)
+                })
+
+            },
+             handleClose(done) {
+                this.$confirm('确认关闭?')
+                    .then(_ => {
+                        done();
+                    })
+                    .catch(_ => { });
+            },
             changeProcedureVersion(row){
                 let index = null
                 for (var i in this.list) {