Parcourir la source

领用-退回功能开发

lizhenhao il y a 2 ans
Parent
commit
6e2085b4c4
13 fichiers modifiés avec 622 ajouts et 6 suppressions
  1. 121 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/controller/CollectController.java
  2. 49 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/domain/CollectBasicsReturn.java
  3. 46 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/domain/CollectBasicsReturnHi.java
  4. 5 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/domain/CollectDetailed.java
  5. 9 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/CollectBasicMapper.java
  6. 30 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/CollectBasicsReturnHiMapper.java
  7. 8 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/CollectBasicsReturnMapper.java
  8. 29 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/CollectDetailedMapper.java
  9. 17 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/xml/CollectBasicMapper.xml
  10. 44 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/xml/CollectBasicsReturnHiMapper.xml
  11. 18 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/xml/CollectDetailedMapper.xml
  12. 207 4
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/service/CollectService.java
  13. 39 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/service/dto/CollectDto.java

+ 121 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/controller/CollectController.java

@@ -1,17 +1,25 @@
 package com.jeeplus.test.materialManagement.collect.controller;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.materialManagement.collect.domain.CollectBasicsReturnHi;
 import com.jeeplus.test.materialManagement.collect.service.CollectService;
 import com.jeeplus.test.materialManagement.collect.service.dto.CollectDto;
 import com.jeeplus.test.materialManagement.collect.service.dto.WareHouseSummaryDto;
+import com.jeeplus.test.materialManagement.wareHouse.domain.WarehouseUpHi;
+import com.jeeplus.test.materialManagement.wareHouse.service.dto.WareHouseDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author: 王强
@@ -93,4 +101,117 @@ public class CollectController {
         IPage<WareHouseSummaryDto> iPage = collectService.wareHouseList(page, dto);
         return ResponseEntity.ok(iPage);
     }
+
+    /**
+     * 创建领用退回流程表数据
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "创建领用退回流程表数据")
+    @PostMapping("/createReturnData")
+    public ResponseEntity<Map<String,String>> createReturnData(@RequestBody CollectDto dto) throws Exception{
+        String returnId = collectService.createReturnData(dto.getId());
+        Map<String,String> res = new HashMap<String,String>();
+        res.put("returnId", returnId);
+        return ResponseEntity.ok(res);
+    }
+
+    /**
+     * 领用-退回  发起
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "领用-退回  发起")
+    @PostMapping("/saveReturn")
+    public ResponseEntity saveReturn(@RequestBody CollectDto dto) throws Exception{
+        String businessId = collectService.saveReturn(dto);
+        if (StringUtils.isNotBlank(businessId)) {
+            return ResponseUtil.newInstance().add("businessTable", "material_management_collect_basics_return").add("businessId", businessId).ok ("操作成功");
+        } else {
+            return ResponseEntity.badRequest().body("操作失败");
+        }
+    }
+
+    /**
+     * 领用-退回  同意
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "领用-退回  同意")
+    @PostMapping("/saveReturnAgree")
+    public ResponseEntity saveReturnAgree(@RequestBody CollectDto dto) throws Exception{
+        String s = collectService.saveReturnAgree(dto);
+        return ResponseUtil.newInstance().add("businessTable", "material_management_collect_basics_return").add("businessId", s).ok ("操作成功");
+    }
+
+    /**
+     * 领用-退回流程修改状态
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "领用-退回流程修改状态")
+    @PostMapping("/updateStatusByIdReturn")
+    public ResponseEntity updateStatusByIdReturn(@RequestBody CollectDto dto) throws Exception{
+        collectService.updateStatusByIdReturn(dto.getId(), dto.getStatus());
+        return ResponseEntity.ok("修改完成");
+    }
+
+    /**
+     * 查询
+     * @param returnId
+     * @return
+     */
+    @ApiOperation(value = "查询")
+    @GetMapping("/findByReturnId")
+    public ResponseEntity<CollectDto> findByReturnId(@RequestParam String returnId) throws Exception{
+        CollectDto dto = collectService.findByReturnId(returnId);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
+     * 取消领用退回
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "取消领用退回")
+    @PostMapping("/returnRequest")
+    public ResponseEntity returnRequest(@RequestBody CollectDto dto) throws Exception{
+        collectService.returnRequest(dto.getId());
+        return ResponseEntity.ok("操作完成");
+    }
+
+    /**
+     * 根据领用表id查询其全部历史修改数据
+     * @return
+     */
+    @ApiOperation(value = "根据领用表id查询其全部历史修改数据")
+    @GetMapping("/findHiById")
+    public ResponseEntity findHiById(@RequestParam String collectId) {
+        List<CollectBasicsReturnHi> hiById = collectService.findHiById(collectId);
+        return ResponseEntity.ok(hiById);
+    }
+
+    /**
+     * 根据历史表id查询历史表数据
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据历史表id查询历史表数据")
+    @GetMapping("/findHiByHiId")
+    public ResponseEntity findHiByHiId(@RequestParam String id) {
+        CollectDto hi = collectService.findHiByHiId(id);
+        return ResponseEntity.ok(hi);
+    }
+
+    /**
+     * 根据领用表id查询最近的一个修改历史
+     * @param collectId
+     * @return
+     */
+    @ApiOperation(value = "根据领用表id查询最近的一个修改历史")
+    @GetMapping("/findLastHiByid")
+    public ResponseEntity findLastHiByid(@RequestParam String collectId) {
+        CollectDto hi = collectService.findLastHiByid(collectId);
+        return ResponseEntity.ok(hi);
+    }
 }

+ 49 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/domain/CollectBasicsReturn.java

@@ -0,0 +1,49 @@
+package com.jeeplus.test.materialManagement.collect.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 物资管理-领用退回
+ * @TableName material_management_collect_basics_return
+ */
+@Data
+@TableName("material_management_collect_basics_return")
+public class CollectBasicsReturn extends BaseEntity {
+
+    /**
+     * 申请原因
+     */
+    private String remarks;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 
+     */
+    private String processDefinitionId;
+
+    /**
+     * 领用id
+     */
+    private String basicId;
+
+    /**
+     * 退回申请人
+     */
+    private String requestUser;
+
+    private static final long serialVersionUID = 1L;
+}

+ 46 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/domain/CollectBasicsReturnHi.java

@@ -0,0 +1,46 @@
+package com.jeeplus.test.materialManagement.collect.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 物资管理-领用退回-历史
+ * @TableName material_management_collect_basics_return_hi
+ */
+@Data
+@TableName("material_management_collect_basics_return_hi")
+public class CollectBasicsReturnHi extends BaseEntity {
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 领用id
+     */
+    private String collectId;
+
+    /**
+     * json数据
+     */
+    private String jsonData;
+
+    /**
+     * 退回申请人
+     */
+    private String returnUser;
+
+    /**
+     * 退回数据的物品名称
+     */
+    private String returnGoods;
+
+    /**
+     * 退回申请人名称
+     */
+    private String returnUserName;
+
+    private static final long serialVersionUID = 1L;
+}

+ 5 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/domain/CollectDetailed.java

@@ -83,4 +83,9 @@ public class CollectDetailed extends BaseEntity {
     //附件信息
     @TableField(exist = false)
     List<WorkAttachmentDto> fileInfoLost;
+
+    /**
+     * 0未退回 1已退回
+     */
+    private String isReturn;
 }

+ 9 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/CollectBasicMapper.java

@@ -3,6 +3,7 @@ package com.jeeplus.test.materialManagement.collect.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.jeeplus.test.materialManagement.collect.domain.CollectBasic;
+import com.jeeplus.test.materialManagement.collect.domain.CollectBasicsReturn;
 import com.jeeplus.test.materialManagement.collect.service.dto.CollectDto;
 import com.jeeplus.test.materialManagement.collect.service.dto.WareHouseSummaryDto;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -27,4 +28,12 @@ public interface CollectBasicMapper extends BaseMapper<CollectBasic> {
     IPage<WareHouseSummaryDto> findWareHouseList(Page<WareHouseSummaryDto> page, @Param(Constants.WRAPPER) QueryWrapper<WareHouseSummaryDto> queryWrapper);
 
     String getUserNameByUserId(String handledBy);
+
+    CollectBasicsReturn selectReturnByBasicId(String id);
+
+    /**
+     * 清除退回原因
+     * @param id
+     */
+    void setCauseEmptyById(String id);
 }

+ 30 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/CollectBasicsReturnHiMapper.java

@@ -0,0 +1,30 @@
+package com.jeeplus.test.materialManagement.collect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.materialManagement.collect.domain.CollectBasicsReturnHi;
+
+import java.util.List;
+
+public interface CollectBasicsReturnHiMapper extends BaseMapper<CollectBasicsReturnHi> {
+
+    /**
+     * 根据领用id查询全部退回记录
+     * @param collectId
+     * @return
+     */
+    List<CollectBasicsReturnHi> findHiById(String collectId);
+
+    /**
+     * 根据历史数据id查询
+     * @param id
+     * @return
+     */
+    CollectBasicsReturnHi findHiByHiId(String id);
+
+    /**
+     * 根据领用id查询最近的一条退回记录
+     * @param collectId
+     * @return
+     */
+    CollectBasicsReturnHi findLastHiByid(String collectId);
+}

+ 8 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/CollectBasicsReturnMapper.java

@@ -0,0 +1,8 @@
+package com.jeeplus.test.materialManagement.collect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.materialManagement.collect.domain.CollectBasicsReturn;
+
+public interface CollectBasicsReturnMapper extends BaseMapper<CollectBasicsReturn> {
+
+}

+ 29 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/CollectDetailedMapper.java

@@ -18,4 +18,33 @@ public interface CollectDetailedMapper extends BaseMapper<CollectDetailed> {
     List<WorkAttachmentDto> getByAttachmentId(String id);
 
     List<String> getIdByBasicId(String id);
+
+    /**
+     * 根据领用详情id修改 退回标记(is_return)
+     * @param id 领用详情id
+     * @param isReturn 退回标记 0未退回 1已退回
+     */
+    void updateReturnFlagById(String id, String isReturn);
+
+    /**
+     * 根据退回表id修改 退回状态
+     * @param id 退回表id
+     * @param status 退回状态
+     */
+    void updateStatusByIdReturn(String id, String status);
+
+    /**
+     * 根据退回表id修改 退回状态和 退回申请人
+     * @param id 退回表id
+     * @param status 退回状态
+     * @param userId 退回申请人id
+     * @param cause 退回原因
+     */
+    void updateByIdReturn(String id, String status, String userId, String cause);
+
+    /**
+     * 将此领用id下全部del_flag=0的领用详情修改为->未退回
+     * @param id 领用id
+     */
+    void updateNoReturnByBasicId(String id);
 }

+ 17 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/xml/CollectBasicMapper.xml

@@ -35,19 +35,35 @@
 			a.handled_by_office,
 			a.collect_date,
 			b.goods_name,
+			b.id as detail_id,
 			so.name as handledByOfficeName,
 			su.name as handledByName,
-			art.ID_ as task_id
+			art.ID_ as task_id,
+			returna.status as status_return,
+			returna.proc_ins_id as proc_ins_id_return,
+			returna.process_definition_id as process_definition_id_return,
+			returna.id as return_id,
+			art_r.ID_ as task_id_return
 		FROM
 			material_management_collect_basics a
 			left join sys_user su on a.handled_by = su.id
 			left join sys_office so on a.handled_by_office = so.id
 			left join material_management_collect_detailed b on a.id = b.basic_id and b.del_flag = '0'
 			left join act_ru_task art ON a.proc_ins_id = art.PROC_INST_ID_
+			left join material_management_collect_basics_return returna on returna.basic_id = a.id and returna.del_flag = '0'
+			left join act_ru_task art_r ON returna.proc_ins_id = art_r.PROC_INST_ID_
 			${ew.customSqlSegment}
 		ORDER BY a.update_date DESC
 	</select>
 	<select id="getUserNameByUserId" resultType="java.lang.String">
 		select name from sys_user where id = #{id}
 	</select>
+	<select id="selectReturnByBasicId" resultType="com.jeeplus.test.materialManagement.collect.domain.CollectBasicsReturn">
+		select *
+		from material_management_collect_basics_return
+		where basic_id = #{id}
+	</select>
+	<update id="setCauseEmptyById">
+		update material_management_collect_basics_return set remarks = null where id = #{id}
+	</update>
 </mapper>

+ 44 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/xml/CollectBasicsReturnHiMapper.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.materialManagement.collect.mapper.CollectBasicsReturnHiMapper">
+
+    <sql id="HI_Column_List">
+        hi.id,
+        hi.create_by,
+        hi.create_date,
+        hi.update_by,
+        hi.update_date,
+        hi.del_flag,
+        hi.remarks,
+        hi.collect_id,
+        hi.json_data,
+        hi.return_user,
+        hi.return_goods
+    </sql>
+
+    <select id="findHiById" resultType="com.jeeplus.test.materialManagement.collect.domain.CollectBasicsReturnHi">
+        select
+        <include refid="HI_Column_List"></include>,
+        su.name as returnUserName
+        from material_management_collect_basics_return_hi hi
+        left join sys_user su on su.id = hi.return_user
+        where hi.del_flag = '0' and hi.collect_id = #{collectId}
+        order by hi.create_date desc
+    </select>
+
+    <select id="findHiByHiId" resultType="com.jeeplus.test.materialManagement.collect.domain.CollectBasicsReturnHi">
+        select
+        <include refid="HI_Column_List"></include>
+        from material_management_collect_basics_return_hi hi
+        where hi.del_flag = '0' and hi.id = #{id}
+    </select>
+
+    <select id="findLastHiByid" resultType="com.jeeplus.test.materialManagement.collect.domain.CollectBasicsReturnHi">
+        select
+        <include refid="HI_Column_List"></include>
+        from material_management_collect_basics_return_hi hi
+        where hi.del_flag = '0' and hi.collect_id = #{collectId}
+        order by hi.create_date desc
+        limit 1
+    </select>
+</mapper>

+ 18 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/xml/CollectDetailedMapper.xml

@@ -9,7 +9,8 @@
             IFNULL((
                         sum( trade_number ) - b.collect_number
                         ),
-                sum( trade_number )) AS surplusNumber
+                sum( trade_number )) AS surplusNumber,
+                a.is_return
              FROM material_management_collect_detailed a
              LEFT JOIN sys_user su
              ON a.recipient_agent = su.id
@@ -55,4 +56,20 @@
     <select id="getIdByBasicId" resultType="java.lang.String">
         select a.id from material_management_collect_detailed a where a.basic_id = #{id} and a.del_flag = 0
     </select>
+
+    <update id="updateReturnFlagById">
+        update material_management_collect_detailed set is_return = #{isReturn} where id = #{id}
+    </update>
+
+    <update id="updateStatusByIdReturn">
+        update material_management_collect_basics_return set status = #{status} where id = #{id}
+    </update>
+
+    <update id="updateByIdReturn">
+        update material_management_collect_basics_return set status = #{status},request_user = #{userId},remarks = #{cause} where id = #{id}
+    </update>
+
+    <update id="updateNoReturnByBasicId">
+        update material_management_collect_detailed set is_return = '0' where basic_id = #{id}
+    </update>
 </mapper>

+ 207 - 4
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/service/CollectService.java

@@ -1,6 +1,8 @@
 package com.jeeplus.test.materialManagement.collect.service;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -16,14 +18,19 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.cw.contractRegistration.service.ContractInfoService;
 import com.jeeplus.test.materialManagement.collect.domain.CollectBasic;
+import com.jeeplus.test.materialManagement.collect.domain.CollectBasicsReturn;
+import com.jeeplus.test.materialManagement.collect.domain.CollectBasicsReturnHi;
 import com.jeeplus.test.materialManagement.collect.domain.CollectDetailed;
 import com.jeeplus.test.materialManagement.collect.mapper.CollectBasicMapper;
+import com.jeeplus.test.materialManagement.collect.mapper.CollectBasicsReturnHiMapper;
+import com.jeeplus.test.materialManagement.collect.mapper.CollectBasicsReturnMapper;
 import com.jeeplus.test.materialManagement.collect.mapper.CollectDetailedMapper;
 import com.jeeplus.test.materialManagement.collect.service.dto.CollectDto;
 import com.jeeplus.test.materialManagement.collect.service.dto.WareHouseSummaryDto;
 import com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseBasic;
 import com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseDetailed;
 import com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseSummary;
+import com.jeeplus.test.materialManagement.wareHouse.domain.WarehouseUpHi;
 import com.jeeplus.test.materialManagement.wareHouse.mapper.WareHouseBasicMapper;
 import com.jeeplus.test.materialManagement.wareHouse.mapper.WareHouseDetailedMapper;
 import com.jeeplus.test.materialManagement.wareHouse.mapper.WareHouseSummaryMapper;
@@ -39,10 +46,7 @@ import org.springframework.beans.BeanUtils;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 /**
  * 领用表
@@ -83,6 +87,12 @@ public class CollectService {
     @Resource
     private FlowTaskService flowTaskService;
 
+    @Resource
+    private CollectBasicsReturnMapper returnMapper;
+
+    @Resource
+    private CollectBasicsReturnHiMapper returnHiMapper;
+
     public void updateStatusById(CollectDto dto) {
         basicMapper.updateStatusById(dto.getId(), dto.getStatus());
     }
@@ -111,6 +121,89 @@ public class CollectService {
         return "操作成功";
     }
 
+    /**
+     * 发起退回流程
+     * @param dto
+     * @return
+     */
+    public String saveReturn(CollectDto dto) {
+        if (CollectionUtils.isNotEmpty(dto.getDetailInfos()) && StringUtils.isNotBlank(dto.getId())) {
+            for (CollectDetailed detailInfo : dto.getDetailInfos()) {
+                if (StringUtils.isNotBlank(detailInfo.getId()) && StringUtils.isNotBlank(detailInfo.getIsReturn())) {
+                    detailedMapper.updateReturnFlagById(detailInfo.getId(), detailInfo.getIsReturn()); // 修改退回状态
+                }
+            }
+            String returnId = createReturnData(dto.getId());
+            detailedMapper.updateByIdReturn(returnId, dto.getStatusReturn(), UserUtils.getCurrentUserDTO().getId(), dto.getReturnCause());
+            return returnId;
+        } else {
+            return "";
+        }
+    }
+
+    /**
+     * 退回流程审核同意
+     * @param dto
+     */
+    public String saveReturnAgree(CollectDto dto) {
+        // 将数据存储到历史表中
+        // 将未修改的数据添加到历史数据表中
+        CollectDto byId = this.findById(dto.getId());
+        String jsonString = JSON.toJSONString(byId);
+        if (ObjectUtil.isNotEmpty(byId) && StringUtils.isNotBlank(byId.getReturnId())) {
+            // 清空退回原因
+            basicMapper.setCauseEmptyById(byId.getReturnId());
+        }
+        CollectBasicsReturnHi returnHi = new CollectBasicsReturnHi();
+        returnHi.setJsonData(jsonString); // json
+        returnHi.setCollectId(dto.getId()); // 领用id
+        CollectBasicsReturn collectBasicsReturn = returnMapper.selectOne(new LambdaQueryWrapper<CollectBasicsReturn>().eq(CollectBasicsReturn::getBasicId, dto.getId()));
+        if (ObjectUtil.isNotEmpty(collectBasicsReturn) && StringUtils.isNotBlank(collectBasicsReturn.getRequestUser())) {
+            returnHi.setReturnUser(collectBasicsReturn.getRequestUser()); // 退回申请人
+        }
+        List<String> returnGoodsName = new ArrayList<>();
+        // 将退回的明细数据删除
+        if (CollectionUtils.isNotEmpty(dto.getDetailInfos())) {
+            for (CollectDetailed detailInfo : dto.getDetailInfos()) {
+                if (StringUtils.isNotBlank(detailInfo.getId()) && StringUtils.isNotBlank(detailInfo.getIsReturn())) {
+                    if("1".equals(detailInfo.getIsReturn())) { // 退回状态
+                        if (StringUtils.isNotBlank(detailInfo.getCollectNumber())) {
+                            // 如果数量不是空的话,将小数点后的0去除
+                            BigDecimal value = new BigDecimal(detailInfo.getCollectNumber());
+                            BigDecimal noZeros = value.stripTrailingZeros();
+                            String resultNum = noZeros.toPlainString();
+                            returnGoodsName.add(detailInfo.getGoodsName() + "*" + resultNum);
+                        } else {
+                            returnGoodsName.add(detailInfo.getGoodsName());
+                        }
+                        detailedMapper.delete(new LambdaQueryWrapper<CollectDetailed>().eq(CollectDetailed::getId,detailInfo.getId()));
+                    }
+                }
+            }
+        }
+        String returnGoods = String.join(",", returnGoodsName);
+        if (StringUtils.isNotBlank(returnGoods)) {
+            returnHi.setReturnGoods(returnGoods); // 退回的数据(字符串展示)
+        }
+        returnHiMapper.insert(returnHi); // 将数据存储到历史表中
+        // 修改退回流程的状态
+        String returnId = createReturnData(dto.getId());
+        detailedMapper.updateStatusByIdReturn(returnId, dto.getStatusReturn());
+
+        if (ObjectUtil.isNotEmpty(collectBasicsReturn)) {
+            return collectBasicsReturn.getId();
+        } else {
+            return "";
+        }
+    }
+
+    public void updateStatusByIdReturn(String id, String status) {
+        CollectBasicsReturn returnData = returnMapper.selectOne(new LambdaQueryWrapper<CollectBasicsReturn>().eq(CollectBasicsReturn::getBasicId, id));
+        if (ObjectUtil.isNotEmpty(returnData) && StringUtils.isNotBlank(returnData.getId())) {
+            detailedMapper.updateStatusByIdReturn(returnData.getId(), status); // 修改退回的流程状态
+        }
+    }
+
     public String save(CollectDto dto) throws Exception{
         // 获取当前登录人信息
         UserDTO userDTO = UserUtils.getCurrentUserDTO();
@@ -351,6 +444,25 @@ public class CollectService {
             dto.setHandledById(info.getHandledBy());
             dto.setFiles(files);
         }
+        // 领用-退回流程信息
+        CollectBasicsReturn collectBasicsReturn = basicMapper.selectReturnByBasicId(id);
+        if (ObjectUtil.isNotEmpty(collectBasicsReturn)) {
+            if (StringUtils.isNotBlank(collectBasicsReturn.getProcessDefinitionId())){
+                dto.setProcessDefinitionIdReturn(collectBasicsReturn.getProcessDefinitionId());
+            }
+            if (StringUtils.isNotBlank(collectBasicsReturn.getProcInsId())){
+                dto.setProcInsIdReturn(collectBasicsReturn.getProcInsId());
+            }
+            if (StringUtils.isNotBlank(collectBasicsReturn.getStatus())){
+                dto.setStatusReturn(collectBasicsReturn.getStatus());
+            }
+            if (StringUtils.isNotBlank(collectBasicsReturn.getId())){
+                dto.setReturnId(collectBasicsReturn.getId());
+            }
+            if (StringUtils.isNotBlank(collectBasicsReturn.getRemarks())){
+                dto.setReturnCause(collectBasicsReturn.getRemarks());
+            }
+        }
         return dto;
     }
 
@@ -393,6 +505,12 @@ public class CollectService {
                     item.setAuditUserIds(flowTaskService.getTaskAuditUsers(item.getTaskId()));  // 获取数据审核人
                 }
             }
+            // 领用-退回申请
+            if (StringUtils.isNotBlank(item.getTaskIdReturn()) && StringUtils.isNotBlank(item.getStatusReturn())) {
+                if ("2".equals(item.getStatusReturn())) { // “审核中”的数据要获取数据审核人
+                    item.setAuditUserIdsReturn(flowTaskService.getTaskAuditUsers(item.getTaskIdReturn()));  // 获取数据审核人
+                }
+            }
         });
         return list;
     }
@@ -412,4 +530,89 @@ public class CollectService {
 
         return basicMapper.findWareHouseList(page, queryWrapper);
     }
+
+    public String createReturnData (String basicId) {
+        CollectBasicsReturn returnData = returnMapper.selectOne(new LambdaQueryWrapper<CollectBasicsReturn>().eq(CollectBasicsReturn::getBasicId, basicId));
+        if (ObjectUtil.isNotEmpty(returnData)) {
+            return returnData.getId();
+        } else {
+            CollectBasicsReturn collectBasicsReturn = new CollectBasicsReturn();
+            collectBasicsReturn.setBasicId(basicId);
+            collectBasicsReturn.setStatus("0"); // 未发起状态
+            returnMapper.insert(collectBasicsReturn);
+            return collectBasicsReturn.getId();
+        }
+    }
+
+    public CollectDto findByReturnId (String returnId) {
+        CollectBasicsReturn returnData = returnMapper.selectOne(new LambdaQueryWrapper<CollectBasicsReturn>().eq(CollectBasicsReturn::getId, returnId));
+        if (ObjectUtil.isNotEmpty(returnData) && StringUtils.isNotBlank(returnData.getBasicId())) {
+            CollectDto byId = this.findById(returnData.getBasicId());
+            return byId;
+        } else {
+            return new CollectDto();
+        }
+    }
+
+    public void returnRequest(String id) {
+        CollectBasicsReturn returnData = returnMapper.selectOne(new LambdaQueryWrapper<CollectBasicsReturn>().eq(CollectBasicsReturn::getBasicId, id));
+        if (ObjectUtil.isNotEmpty(returnData) && StringUtils.isNotBlank(returnData.getId())) {
+            detailedMapper.updateStatusByIdReturn(returnData.getId(), "0"); // 修改退回的流程状态
+            basicMapper.setCauseEmptyById(returnData.getId()); // 清空退回原因
+        }
+        // 将退回状态的数据全部撤回
+        detailedMapper.updateNoReturnByBasicId(id);
+    }
+
+    // 根据领用表id查询其全部历史修改数据
+    public List<CollectBasicsReturnHi> findHiById(String collectId) {
+        List<CollectBasicsReturnHi> hiById = returnHiMapper.findHiById(collectId);
+        return hiById;
+    }
+
+    // 根据历史表id查询历史表数据
+    public CollectDto findHiByHiId(String hiId) {
+        CollectDto collectDto = new CollectDto();
+        CollectBasicsReturnHi hiByHiId = returnHiMapper.findHiByHiId(hiId); // 根据历史表id查询历史表数据
+        if (ObjectUtil.isNotEmpty(hiByHiId) && StringUtils.isNotBlank(hiByHiId.getJsonData())) {
+            collectDto = JSON.parseObject(hiByHiId.getJsonData(), CollectDto.class); // json字符串解析为java对象
+            // 领用详情中的附件数据获取。
+            // 在这里要重新获取一下领用详情附件的原因是,json字符串中的附件createBy值存储不正确,所以重新获取一下
+            if(ObjectUtil.isNotEmpty(collectDto) && CollectionUtil.isNotEmpty(collectDto.getDetailInfos())) {
+                collectDto.getDetailInfos().forEach(detailed->{
+                    List<WorkAttachmentDto> acList = detailedMapper.getByAttachmentId(detailed.getId());
+                    if (CollectionUtils.isNotEmpty(acList)) {
+                        for (WorkAttachmentDto i : acList) {
+                            i.setCreateBy(UserUtils.get(i.getBy()));
+                        }
+                    }
+                    detailed.setFileInfoLost(acList);
+                });
+            }
+        }
+        return collectDto;
+    }
+
+    // 根据领用表id查询最近的一个修改历史
+    public CollectDto findLastHiByid(String collectId) {
+        CollectDto collectDto = new CollectDto();
+        CollectBasicsReturnHi hiByHiId = returnHiMapper.findLastHiByid(collectId); // 根据领用表id查询最近的一个修改历史
+        if (ObjectUtil.isNotEmpty(hiByHiId) && StringUtils.isNotBlank(hiByHiId.getJsonData())) {
+            collectDto = JSON.parseObject(hiByHiId.getJsonData(), CollectDto.class); // json字符串解析为java对象
+            // 领用详情中的附件数据获取。
+            // 在这里要重新获取一下领用详情附件的原因是,json字符串中的附件createBy值存储不正确,所以重新获取一下
+            if(ObjectUtil.isNotEmpty(collectDto) && CollectionUtil.isNotEmpty(collectDto.getDetailInfos())) {
+                collectDto.getDetailInfos().forEach(detailed->{
+                    List<WorkAttachmentDto> acList = detailedMapper.getByAttachmentId(detailed.getId());
+                    if (CollectionUtils.isNotEmpty(acList)) {
+                        for (WorkAttachmentDto i : acList) {
+                            i.setCreateBy(UserUtils.get(i.getBy()));
+                        }
+                    }
+                    detailed.setFileInfoLost(acList);
+                });
+            }
+        }
+        return collectDto;
+    }
 }

+ 39 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/service/dto/CollectDto.java

@@ -112,4 +112,43 @@ public class CollectDto {
      * 数据审核人  领用申请
      */
     private List<String> auditUserIds;
+
+    /**
+     * 领用-退回流程状态
+     */
+    private String statusReturn;
+
+    /**
+     * 流程id
+     */
+    private String procInsIdReturn;
+
+    private String processDefinitionIdReturn;
+
+    /**
+     * 退回id
+     */
+    private String returnId;
+
+    /**
+     * 退回申请原因
+     */
+    private String returnCause;
+
+    /**
+     * 领用-退回申请  taskId
+     */
+    private String taskIdReturn;
+
+    /**
+     * 数据审核人  领用-退回申请
+     */
+    private List<String> auditUserIdsReturn;
+
+    /**
+     * 领用详情id
+     */
+    private String detailId;
+
+
 }