czh 2 лет назад
Родитель
Сommit
297c8bc4da

+ 38 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CooperateStatusEnum.java

@@ -0,0 +1,38 @@
+package com.sckw.core.model.enums;
+
+import lombok.Getter;
+
+/**
+ * @author czh
+ * @desc 合作状态
+ * @date 2023/6/15
+ */
+@Getter
+public enum CooperateStatusEnum {
+
+    //审核中
+    PROCESS(0, "审核中"),
+    //合作中
+    OK(1, "合作中"),
+    //已解除
+    PASS(2, "已解除");
+
+    private final int code;
+
+    private final String name;
+
+    CooperateStatusEnum(int code, String name){
+        this.code = code;
+        this.name = name;
+    }
+
+    public static CooperateStatusEnum getName(int code){
+        for (CooperateStatusEnum cooperateStatusEnum : values()) {
+            if (cooperateStatusEnum.getCode() == code) {
+                return cooperateStatusEnum;
+            }
+        }
+        return null;
+    }
+
+}

+ 3 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java

@@ -140,4 +140,7 @@ public class HttpStatus {
     public static final String MSG_009 = "认证提交成功!";
     public static final String MSG_010 = "绑定成功!";
     public static final String MSG_011 = "当前企业还存在员工数据,不能删除!";
+    public static final String MSG_012 = "只能解除状态为合作中的记录!";
+    public static final String MSG_013 = "只能删除状态为已解除的记录!";
+    public static final String MSG_014 = "导出失败";
 }

+ 4 - 0
sckw-modules/sckw-manage/pom.xml

@@ -58,6 +58,10 @@
             <groupId>com.sckw</groupId>
             <artifactId>sckw-system-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-excel</artifactId>
+        </dependency>
 
     </dependencies>
 

+ 38 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/controller/KwmCooperateManageController.java

@@ -5,6 +5,7 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.manage.model.vo.req.BindManagerReqVo;
 import com.sckw.manage.model.vo.req.CooperateManageQueryReqVo;
+import com.sckw.manage.model.vo.req.IdsReqVo;
 import com.sckw.manage.model.vo.req.QueryDetailReqVo;
 import com.sckw.manage.service.KwmCooperateManageService;
 import jakarta.validation.Valid;
@@ -63,4 +64,41 @@ public class KwmCooperateManageController {
         return HttpResult.ok(HttpStatus.MSG_010);
     }
 
+    /**
+     * @param reqVo ids
+     * @return HttpResult
+     * @desc: 解除合同
+     * @author: czh
+     * @date: 2023/7/11
+     */
+    @PostMapping("dissolve")
+    public HttpResult dissolve(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
+        kwmCooperateManageService.dissolve(reqVo.getIds());
+        return HttpResult.ok(HttpStatus.MSG_010);
+    }
+
+    /**
+     * @param reqVo ids
+     * @return HttpResult
+     * @desc: 删除合同
+     * @author: czh
+     * @date: 2023/7/11
+     */
+    @PostMapping("delete")
+    public HttpResult delete(@Valid @RequestBody IdsReqVo reqVo) throws SystemException {
+        kwmCooperateManageService.delete(reqVo.getIds());
+        return HttpResult.ok(HttpStatus.MSG_007);
+    }
+
+    /**
+     * @param reqVo 查询入参
+     * @desc: 导出
+     * @author: czh
+     * @date: 2023/7/11
+     */
+    @PostMapping("export")
+    public void export(@Valid @RequestBody CooperateManageQueryReqVo reqVo) throws SystemException {
+        kwmCooperateManageService.export(reqVo);
+    }
+
 }

+ 0 - 5
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/CooperateManageQueryReqVo.java

@@ -20,11 +20,6 @@ public class CooperateManageQueryReqVo extends PageRequest implements Serializab
     @Serial
     private static final long serialVersionUID = 1104292279932957389L;
 
-    /**
-     * 1 我放发起  2对方发起,不传查全部
-     */
-//    private Integer applyTypeCode;
-
     /**
      * 合作属性,多个用","隔开
      */

+ 26 - 0
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/model/vo/req/IdsReqVo.java

@@ -0,0 +1,26 @@
+package com.sckw.manage.model.vo.req;
+
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 已多个主键为入参
+ * @date 2023/7/11
+ */
+@Data
+public class IdsReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -8156054282601592480L;
+
+    /**
+     * 多个主键,用","隔开
+     */
+    @NotBlank(message = "id不能为空")
+    private String ids;
+
+}

+ 92 - 4
sckw-modules/sckw-manage/src/main/java/com/sckw/manage/service/KwmCooperateManageService.java

@@ -1,22 +1,25 @@
 package com.sckw.manage.service;
+import java.io.IOException;
 import java.util.Date;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.model.enums.CooperateStatusEnum;
+import com.sckw.core.model.enums.SystemTypeEnum;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
-import com.sckw.core.utils.StringUtils;
+import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.excel.utils.EasyExcelUtil;
 import com.sckw.manage.dao.KwmCooperateMapper;
 import com.sckw.manage.model.dto.req.CooperateManageQueryReqDto;
 import com.sckw.manage.model.dto.res.CooperateManageQueryResDto;
-import com.sckw.manage.model.vo.req.BindManagerReqVo;
+import com.sckw.manage.model.entity.KwmCooperate;
 import com.sckw.manage.model.vo.req.CooperateManageQueryReqVo;
-import com.sckw.manage.model.vo.req.QueryDetailReqVo;
 import com.sckw.manage.model.vo.res.CooperateManageQueryResVo;
 import com.sckw.manage.model.vo.res.QueryDetailResVo;
 import com.sckw.system.api.RemoteSystemService;
@@ -27,6 +30,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -153,4 +157,88 @@ public class KwmCooperateManageService {
     public void bindManager(Long userId) {
         remoteUserService.bindManager(LoginUserHolder.getEntId(), userId);
     }
+
+    /**
+     * @param ids 主键id
+     * @desc: 解除合同
+     * @author: czh
+     * @date: 2023/7/11
+     */
+    @Transactional(rollbackFor = {})
+    public void dissolve(String ids) {
+        //todo 判断是否可以解除(若和所选企业有未完结的业务单据(销售订单/采购订单、托运订单/承运订单、对账单、结算单),不支持解除合作)
+        //提示:您与所选企业存在未完结业务,当前无法删除!
+        List<KwmCooperate> kwmCooperates = kwmCooperateMapper.selectBatchIds(Arrays.asList(ids.split(Global.COMMA)));
+        Long userId = LoginUserHolder.getUserId();
+        Date date = new Date();
+        kwmCooperates.forEach(item -> {
+            //运营端可以操作任意状态,企业端只能操作合作中的数据
+            if (checkUserPermission(item.getStatus())){
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.MSG_012);
+            }
+
+            item.setStatus(CooperateStatusEnum.PASS.getCode());
+            item.setUpdateBy(userId);
+            item.setUpdateTime(date);
+            if (kwmCooperateMapper.updateById(item) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+            }
+        });
+
+    }
+
+    /**
+     * @param status 操作状态
+     * @return boolean
+     * @desc: 校验用户操作状态
+     * @author: czh
+     * @date: 2023/7/11
+     */
+    private boolean checkUserPermission(int status) {
+        return status != CooperateStatusEnum.OK.getCode() && LoginUserHolder.getSystemType() != SystemTypeEnum.MANAGE.getCode();
+    }
+
+    /**
+     * @param ids 主键
+     * @desc: 删除合同
+     * @author: czh
+     * @date: 2023/7/11
+     */
+    public void delete(String ids) {
+        List<KwmCooperate> kwmCooperates = kwmCooperateMapper.selectBatchIds(Arrays.asList(ids.split(Global.COMMA)));
+        Long userId = LoginUserHolder.getUserId();
+        Date date = new Date();
+        kwmCooperates.forEach(item -> {
+            //运营端可以操作任意状态,企业端只能操作合作中的数据
+            if (item.getStatus() != CooperateStatusEnum.PASS.getCode()){
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.MSG_013);
+            }
+
+            item.setDelFlag(Global.YES);
+            item.setUpdateBy(userId);
+            item.setUpdateTime(date);
+            if (kwmCooperateMapper.updateById(item) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+            }
+        });
+    }
+
+    /**
+     * @param reqVo 查询入参
+     * @desc: 导出
+     * @author: czh
+     * @date: 2023/7/11
+     */
+    public void export(CooperateManageQueryReqVo reqVo) throws SystemException {
+        CooperateManageQueryReqDto cooperateManageQueryReqDto = new CooperateManageQueryReqDto();
+        BeanUtils.copyProperties(reqVo, cooperateManageQueryReqDto);
+        cooperateManageQueryReqDto.setCooperateTypes(Arrays.asList(reqVo.getCooperateTypes().split(Global.COMMA)));
+        List<CooperateManageQueryResVo> list = findList(cooperateManageQueryReqDto);
+        try {
+            EasyExcelUtil.writeSingleExcel("合作管理.xlsx", "sheet1", list, CooperateManageQueryResVo.class);
+        } catch (IOException e) {
+            log.error("导出失败:", e);
+            throw new SystemException(HttpStatus.CODE_10301, HttpStatus.MSG_014);
+        }
+    }
 }

+ 0 - 6
sckw-modules/sckw-manage/src/main/resources/mapper/KwmCooperateMapper.xml

@@ -51,12 +51,6 @@
            and (a.invitee_ent_id = #{currentEntId} OR a.inviter_ent_id = #{currentEntId})
            and a.create_time >= #{startTime}
            and a.create_time &lt;= #{endTime}
-<!--           <if test="applyTypeCode != null and applyTypeCode == 1">-->
-<!--               and a.inviter_ent_id = a.ent_id-->
-<!--           </if>-->
-<!--           <if test="applyTypeCode != null and applyTypeCode == 2">-->
-<!--               and a.invitee_ent_id = a.ent_id-->
-<!--           </if>-->
            and b.type in
            <foreach collection="reqDto.cooperateTypes" item="item" open="(" close=")" separator=",">
                #{item}