Bläddra i källkod

物资管理-领用

wangqiang 2 år sedan
förälder
incheckning
d837739a70
24 ändrade filer med 1118 tillägg och 91 borttagningar
  1. 96 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/controller/CollectController.java
  2. 63 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/domain/CollectBasic.java
  3. 81 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/domain/CollectDetailed.java
  4. 30 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/CollectBasicMapper.java
  5. 21 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/CollectDetailedMapper.java
  6. 51 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/xml/CollectBasicMapper.xml
  7. 29 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/mapper/xml/CollectDetailedMapper.xml
  8. 328 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/service/CollectService.java
  9. 105 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/service/dto/CollectDto.java
  10. 28 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/service/dto/WareHouseSummaryDto.java
  11. 14 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/domain/MaterialDetailed.java
  12. 2 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/mapper/MaterialBasicMapper.java
  13. 2 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/mapper/MaterialDetailedMapper.java
  14. 6 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/mapper/xml/MaterialBasicMapper.xml
  15. 10 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/mapper/xml/MaterialDetailedMapper.xml
  16. 90 45
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/service/MaterialService.java
  17. 10 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/service/dto/MaterialInfoDto.java
  18. 13 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/domain/WareHouseDetailed.java
  19. 1 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/domain/WareHouseSummary.java
  20. 2 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/WareHouseDetailedMapper.java
  21. 2 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/WareHouseSummaryMapper.java
  22. 11 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/xml/WareHouseDetailedMapper.xml
  23. 3 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/xml/WareHouseSummaryMapper.xml
  24. 120 41
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/service/WareHouseBasicService.java

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

@@ -0,0 +1,96 @@
+package com.jeeplus.test.materialManagement.collect.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.common.utils.ResponseUtil;
+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 io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * @author: 王强
+ * @create: 2023-01-03 16:18
+ **/
+@RestController
+@Api(tags ="物资管理-领用申请")
+@RequestMapping(value = "/material/collect")
+public class CollectController {
+
+    @Resource
+    private CollectService collectService;
+
+    /**
+     * 根据id修改状态status
+     */
+    @ApiOperation(value = "根据id修改状态status")
+    @PostMapping(value = "updateStatusById")
+    public void updateStatusById(@RequestBody CollectDto dto) {
+        collectService.updateStatusById(dto);
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "删除")
+    @GetMapping("/remove")
+    public ResponseEntity<String> remove(@RequestParam String id){
+        String s = collectService.remove(id);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 新增/修改
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "新增、修改")
+    @PostMapping("/save")
+    public ResponseEntity<String> save(@RequestBody CollectDto dto) throws Exception{
+        String s = collectService.save(dto);
+        return ResponseUtil.newInstance().add("businessTable", "material_management_collect_basics").add("businessId", s).ok ("操作成功");
+    }
+
+    /**
+     * 查询
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "查询")
+    @GetMapping("/findById")
+    public ResponseEntity<CollectDto> findById(@RequestParam String id) throws Exception{
+        CollectDto dto = collectService.findById(id);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
+     * 列表查询
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "列表查询")
+    @GetMapping("/list")
+    public ResponseEntity<IPage<CollectDto>> list(Page<CollectDto> page, CollectDto dto) throws Exception{
+        IPage<CollectDto> iPage = collectService.list(page, dto);
+        return ResponseEntity.ok(iPage);
+    }
+
+    /**
+     * 商品入库信息列表查询
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "商品入库信息列表查询")
+    @GetMapping("/wareHouseList")
+    public ResponseEntity<IPage<WareHouseSummaryDto>> wareHouseList(Page<WareHouseSummaryDto> page, WareHouseSummaryDto dto) throws Exception{
+        IPage<WareHouseSummaryDto> iPage = collectService.wareHouseList(page, dto);
+        return ResponseEntity.ok(iPage);
+    }
+}

+ 63 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/domain/CollectBasic.java

@@ -0,0 +1,63 @@
+package com.jeeplus.test.materialManagement.collect.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author: 王强
+ * @create: 2023-01-03 16:29
+ **/
+@Data
+@TableName("material_management_collect_basics")
+public class CollectBasic extends BaseEntity {
+
+    //领用编号(字典值)
+    public static final String BIZ_CODE = "29";
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    private String processDefinitionId;
+
+    /**
+     * 领用编号
+     */
+    private String collectNo;
+
+    /**
+     * 经办人
+     */
+    private String handledBy;
+
+    /**
+     * 经办人部门
+     */
+    private String handledByOffice;
+
+    /**
+     * 领用时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date collectDate;
+
+    @TableField(exist = false)
+    List<CollectDetailed> detailInfos;
+}

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

@@ -0,0 +1,81 @@
+package com.jeeplus.test.materialManagement.collect.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 领用明细表
+ * @author: 王强
+ * @create: 2023-01-04 14:53
+ **/
+@Data
+@TableName("material_management_collect_detailed")
+public class CollectDetailed extends BaseEntity {
+
+    /**
+     * 领用基础表id
+     */
+    private String basicId;
+
+    /**
+     * 领用人
+     */
+    private String recipientAgent;
+
+    /**
+     * 领用人id
+     */
+    @TableField(exist = false)
+    private String recipientAgentId;
+
+    /**
+     * 领用人部门
+     */
+    @TableField(exist = false)
+    private String recipientOffice;
+
+    /**
+     * 领用类型
+     */
+    private String collectType;
+
+    /**
+     * 领用类型ID
+     */
+    @TableField(exist = false)
+    private String collectTypeId;
+
+    /**
+     * 物品名称
+     */
+    private String goodsName;
+
+    /**
+     * 剩余数量
+     */
+    private String surplusNumber;
+
+    /**
+     * 领用数量
+     */
+    private String collectNumber;
+
+    /**
+     * 单位
+     */
+    private String company;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    //附件信息
+    @TableField(exist = false)
+    List<WorkAttachmentDto> fileInfoLost;
+}

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

@@ -0,0 +1,30 @@
+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.service.dto.CollectDto;
+import com.jeeplus.test.materialManagement.collect.service.dto.WareHouseSummaryDto;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author: 王强
+ * @create: 2023-01-03 16:29
+ **/
+public interface CollectBasicMapper extends BaseMapper<CollectBasic> {
+
+    void updateStatusById(@Param("id") String id, @Param("type") String type);
+
+    List<String> findChildIds(String department);
+
+    IPage<CollectDto> findList(Page<CollectDto> page, @Param(Constants.WRAPPER) QueryWrapper<CollectDto> queryWrapper);
+
+    IPage<WareHouseSummaryDto> findWareHouseList(Page<WareHouseSummaryDto> page, @Param(Constants.WRAPPER) QueryWrapper<WareHouseSummaryDto> queryWrapper);
+
+    String getUserNameByUserId(String handledBy);
+}

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

@@ -0,0 +1,21 @@
+package com.jeeplus.test.materialManagement.collect.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.materialManagement.collect.domain.CollectDetailed;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+
+import java.util.List;
+
+/**
+ * @author: 王强
+ * @create: 2023-01-04 15:32
+ **/
+public interface CollectDetailedMapper extends BaseMapper<CollectDetailed> {
+    //根据基础表id查出详情数据
+    List<CollectDetailed> getByBasicId(String id);
+
+    //查出附件信息
+    List<WorkAttachmentDto> getByAttachmentId(String id);
+
+    List<String> getIdByBasicId(String id);
+}

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

@@ -0,0 +1,51 @@
+<?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.CollectBasicMapper">
+    <update id="updateStatusById">
+		UPDATE material_management_collect_basics SET status = #{type}
+		WHERE id = #{id}
+	</update>
+    <select id="findWareHouseList"
+            resultType="com.jeeplus.test.materialManagement.collect.service.dto.WareHouseSummaryDto">
+        SELECT
+			a.id,
+			a.create_by,
+			a.create_date,
+			a.trade_name,
+			a.trade_number
+		FROM
+			material_management_warehouse_summary a
+			${ew.customSqlSegment}
+		ORDER BY a.update_date DESC
+    </select>
+    <select id="findChildIds" resultType="java.lang.String">
+		select id from sys_office where parent_id = #{department}
+	</select>
+	<select id="findList" resultType="com.jeeplus.test.materialManagement.collect.service.dto.CollectDto">
+		SELECT
+        	DISTINCT
+			a.id,
+			a.create_by,
+			a.create_date,
+			a.status,
+			a.proc_ins_id,
+			a.process_definition_id,
+			a.collect_no,
+			a.handled_by,
+			a.handled_by_office,
+			a.collect_date,
+			b.goods_name,
+			so.name as handledByOfficeName,
+			su.name as handledByName
+		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'
+			${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>
+</mapper>

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

@@ -0,0 +1,29 @@
+<?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.CollectDetailedMapper">
+    <select id="getByBasicId" resultType="com.jeeplus.test.materialManagement.collect.domain.CollectDetailed">
+        select a.*,su.name as recipientAgent,su.id as recipientAgentId,
+        so.name as recipientOffice,d.id as collectTypeId, d.name as collectType
+        from material_management_collect_detailed a
+        left join sys_user su on a.recipient_agent = su.id
+        left join sys_office so on su.office_id = so.id
+        left join cw_reimbursement_type_info d on a.collect_type = d.id
+        where a.basic_id = #{basicId} and a.del_flag = '0'
+    </select>
+    <select id="getByAttachmentId" resultType="com.jeeplus.test.workContract.service.dto.WorkAttachmentDto">
+        SELECT
+			id,
+			url,
+			attachment_name AS `name`,
+			create_by AS `by`,
+			create_date
+		FROM
+			work_attachment
+		WHERE
+			del_flag = 0
+			AND attachment_id = #{id}
+    </select>
+    <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>
+</mapper>

+ 328 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/collect/service/CollectService.java

@@ -0,0 +1,328 @@
+package com.jeeplus.test.materialManagement.collect.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.StringUtils;
+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.CollectDetailed;
+import com.jeeplus.test.materialManagement.collect.mapper.CollectBasicMapper;
+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.WareHouseSummary;
+import com.jeeplus.test.materialManagement.wareHouse.mapper.WareHouseSummaryMapper;
+import com.jeeplus.test.mould.service.SerialnumTplService;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.oss.mapper.OssServiceMapper;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import org.springframework.beans.BeanUtils;
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * 领用表
+ * @author: 王强
+ * @create: 2023-01-03 16:24
+ **/
+@Service
+@Transactional
+public class CollectService {
+
+    @Resource
+    private CollectBasicMapper basicMapper;
+
+    @Resource
+    private CollectDetailedMapper detailedMapper;
+
+    @Resource
+    private WareHouseSummaryMapper summaryMapper;
+
+    @Resource
+    private SerialnumTplService serialnumTplService;
+
+    @Resource
+    private ContractInfoService infoService;
+
+    @Resource
+    private OssServiceMapper ossServiceMapper;
+
+    public void updateStatusById(CollectDto dto) {
+        basicMapper.updateStatusById(dto.getId(), dto.getStatus());
+    }
+
+    public String remove(String id) {
+        // 删除基础信息表
+        basicMapper.deleteById(id);
+        // 删除详情列表 及对应附件信息
+        List<CollectDetailed> detailedList = detailedMapper.getByBasicId(id);
+        if (null != detailedList){
+            detailedList.forEach(de->{
+                //附件
+                List<WorkAttachmentDto> fileList = detailedMapper.getByAttachmentId(de.getId());
+                if ( null != fileList ){
+                    fileList.forEach(f->{
+                        ossServiceMapper.deleteById(f.getId());
+                    });
+                }
+                detailedMapper.deleteById(de.getId());
+            });
+        }
+        // 删除附件信息
+        LambdaQueryWrapper<WorkAttachment> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(WorkAttachment::getAttachmentId, id);
+        ossServiceMapper.delete(wrapper);
+        return "操作成功";
+    }
+
+    public String save(CollectDto dto) throws Exception{
+        // 获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        synchronized (this) {
+            if (StringUtils.isNotEmpty(dto.getId()) && !dto.getId().equals("false")) {
+                return update(dto, userDTO);
+            } else {
+                return add(dto, userDTO);
+            }
+        }
+
+    }
+
+    public String update(CollectDto dto, UserDTO userDTO) {
+        // 修改基础信息
+        CollectBasic info = new CollectBasic();
+        BeanUtils.copyProperties(dto, info);
+        info.setUpdateBy(userDTO.getId());
+        info.setHandledBy(dto.getHandledById());
+        info.setUpdateDate(new Date());
+        basicMapper.updateById(info);
+        // 修改报销详情列表信息
+        // 删除原有数据
+//        LambdaQueryWrapper<MaterialDetailed> detailWrapper = new LambdaQueryWrapper<>();
+//        detailWrapper.eq(MaterialDetailed::getBasicId, dto.getId());
+//        detailedMapper.delete(detailWrapper);
+        if (CollectionUtils.isNotEmpty(dto.getDetailInfos())) {
+
+            List<String> idList = detailedMapper.getIdByBasicId(info.getId());
+            for (CollectDetailed detailInfo : dto.getDetailInfos()) {
+                //删除多余的领用详情
+                //根据基础表id获取所有的详情表id
+                if (null != idList) {
+                    if (idList.contains(detailInfo.getId())){
+                        idList.remove(detailInfo.getId());
+                    }
+                }
+            }
+            if (null != idList & idList.size()>0) {
+                idList.forEach(id->{
+                    detailedMapper.deleteById(id);
+                });
+            }
+
+            if (StringUtils.isNotEmpty(dto.getSign())) {
+
+            } else {
+                for (CollectDetailed detailInfo : dto.getDetailInfos()) {
+
+                    CollectDetailed materialDetailed = detailedMapper.selectById(detailInfo.getId());
+
+                    if ( null == materialDetailed) {
+                        // 生成id
+                        String detailId = UUID.randomUUID().toString().replace("-", "");
+                        detailInfo.setId(detailId);
+                        detailInfo.setRecipientAgent(detailInfo.getRecipientAgentId());
+                        detailInfo.setCollectType(detailInfo.getCollectTypeId());
+                        detailInfo.setCreateBy(userDTO.getId());
+                        detailInfo.setCreateDate(new Date());
+                        detailInfo.setUpdateBy(userDTO.getId());
+                        detailInfo.setUpdateDate(new Date());
+                        detailInfo.setDelFlag(0);
+                        // 保存基础表信息主键值
+                        detailInfo.setBasicId(dto.getId());
+                        detailedMapper.insert(detailInfo);
+                        // 修改附件信息列表
+                        if (CollectionUtils.isNotEmpty(detailInfo.getFileInfoLost())) {
+                            infoService.saveFiles(detailInfo.getFileInfoLost(), userDTO, detailInfo.getId());
+                        }
+                    } else {
+                        detailInfo.setRecipientAgent(detailInfo.getRecipientAgentId());
+                        detailInfo.setCollectType(detailInfo.getCollectTypeId());
+                        detailInfo.setUpdateBy(userDTO.getId());
+                        detailInfo.setUpdateDate(new Date());
+                        detailInfo.setBasicId(dto.getId());
+                        detailedMapper.updateById(detailInfo);
+                        if (CollectionUtils.isNotEmpty(detailInfo.getFileInfoLost())) {
+                            infoService.updateFiles(detailInfo.getFileInfoLost(), userDTO, detailInfo.getId());
+                        }
+                    }
+
+                    //当流程结束的时候 修改入库汇总表的数量
+                    if ( StringUtils.isNotEmpty(info.getStatus()) && info.getStatus().equals("5")){
+                        //根据商品名称 及 领用类型查询汇总表修改改商品库存数量
+                        WareHouseSummary summaryInfo = summaryMapper.getInfoByTradeName(detailInfo.getGoodsName(), detailInfo.getCollectType());
+                        if (null != summaryInfo) {
+                            String num = Double.parseDouble(summaryInfo.getTradeNumber())
+                                    - Double.parseDouble(detailInfo.getCollectNumber()) + "";
+                            summaryInfo.setTradeNumber(num);
+                            summaryMapper.updateById(summaryInfo);
+                        }
+                    }
+
+                }
+            }
+
+        }
+        // 修改附件信息列表
+        if (CollectionUtils.isNotEmpty(dto.getFiles())) {
+            infoService.updateFiles(dto.getFiles(), userDTO, dto.getId());
+        }
+        return dto.getId();
+    }
+
+    public String add(CollectDto dto, UserDTO userDTO) throws Exception{
+        // 生成id
+        String id = UUID.randomUUID().toString().replace("-", "");
+        // 生成编号
+        String no = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), dto.BIZ_CODE);
+        // 保存基础信息表信息
+        CollectBasic info = new CollectBasic();
+        BeanUtils.copyProperties(dto, info);
+        info.setId(id);
+        info.setCollectNo(no);
+        info.setHandledBy(dto.getHandledById());
+        info.setCreateBy(userDTO.getId());
+        info.setCreateDate(new Date());
+        info.setUpdateBy(userDTO.getId());
+        info.setUpdateDate(new Date());
+        info.setDelFlag(0);
+        basicMapper.insert(info);
+        // 保存详情列表信息
+        if (CollectionUtils.isNotEmpty(dto.getDetailInfos())) {
+            for (CollectDetailed detailed : dto.getDetailInfos()) {
+                // 生成id
+                String detailId = UUID.randomUUID().toString().replace("-", "");
+                detailed.setId(detailId);
+                detailed.setRecipientAgent(detailed.getRecipientAgentId());
+                detailed.setCollectType(detailed.getCollectTypeId());
+                detailed.setCreateBy(userDTO.getId());
+                detailed.setCreateDate(new Date());
+                detailed.setUpdateBy(userDTO.getId());
+                detailed.setUpdateDate(new Date());
+                detailed.setDelFlag(0);
+                // 保存基础表信息主键值
+                detailed.setBasicId(id);
+                detailedMapper.insert(detailed);
+                //保存详情列表附件信息
+                if (CollectionUtils.isNotEmpty(detailed.getFileInfoLost())){
+                    infoService.saveFiles(detailed.getFileInfoLost(), userDTO, detailId);
+                }
+
+            }
+        }
+        // 保存附件列表信息
+        if (CollectionUtils.isNotEmpty(dto.getFiles())) {
+            infoService.saveFiles(dto.getFiles(), userDTO, id);
+        }
+        return id;
+    }
+
+    public CollectDto findById(String id) {
+        CollectDto dto = new CollectDto();
+        // 查询基础信息表
+        CollectBasic info = basicMapper.selectById(id);
+        if (ObjectUtils.isNotEmpty(info)) {
+            BeanUtils.copyProperties(info, dto);
+            //将采购详情数据查出
+            List<CollectDetailed> detailedList = detailedMapper.getByBasicId(id);
+            if (CollectionUtils.isNotEmpty(detailedList)){
+                detailedList.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);
+                });
+            }
+            dto.setDetailInfos(detailedList);
+            //附件信息
+            List<WorkAttachmentDto> files = detailedMapper.getByAttachmentId(info.getId());
+            if (CollectionUtils.isNotEmpty(files)) {
+                for (WorkAttachmentDto i : files) {
+                    i.setCreateBy(UserUtils.get(i.getBy()));
+                }
+            }
+            //根据经办人id查出经办人的名称
+            String name = basicMapper.getUserNameByUserId(info.getHandledBy());
+            dto.setHandledBy(name);
+            dto.setHandledById(info.getHandledBy());
+            dto.setFiles(files);
+        }
+        return dto;
+    }
+
+    /**
+     * 列表查询
+     */
+    public IPage<CollectDto> list(Page<CollectDto> page , CollectDto dto) throws Exception{
+        QueryWrapper<CollectDto> queryWrapper = QueryWrapperGenerator.buildQueryCondition(dto, CollectDto.class);
+
+        queryWrapper.eq("a.del_flag", "0");
+        if (StringUtils.isNotEmpty(dto.getCollectNo())) {
+            queryWrapper.like("a.collect_no", dto.getCollectNo());
+        }
+        if (StringUtils.isNotEmpty(dto.getGoodsName())) {
+            queryWrapper.like("b.goods_name", dto.getGoodsName());
+        }
+        if (StringUtils.isNotEmpty(dto.getHandledBy())) {
+            queryWrapper.eq("a.handled_by", dto.getHandledBy());
+        }
+        if (StringUtils.isNotEmpty(dto.getHandledByOffice())) {
+            //先根据id查出是否是父节点,是父节点则查出所有的子节点信息
+            List<String> childIds = basicMapper.findChildIds(dto.getHandledByOffice());
+            if ( null != childIds & childIds.size()>0){
+                childIds.add(dto.getHandledByOffice());
+                queryWrapper.in("a.handled_by_office",childIds);
+            }else {
+                queryWrapper.eq("a.handled_by_office", dto.getHandledByOffice());
+            }
+        }
+        String[] contractDates = dto.getCollectDates();
+        if (contractDates != null) {
+
+            queryWrapper.between("a.collect_date", contractDates[0], contractDates[1]);
+        }
+
+        return basicMapper.findList(page, queryWrapper);
+    }
+
+    /**
+     * 列表查询
+     */
+    public IPage<WareHouseSummaryDto> wareHouseList(Page<WareHouseSummaryDto> page , WareHouseSummaryDto dto) throws Exception{
+        QueryWrapper<WareHouseSummaryDto> queryWrapper = QueryWrapperGenerator.buildQueryCondition(dto, WareHouseSummaryDto.class);
+
+        queryWrapper.eq("a.del_flag", "0");
+        queryWrapper.eq("a.ware_house_type", dto.getWareHouseType());
+        queryWrapper.gt("a.trade_number", 0);
+        if (StringUtils.isNotEmpty(dto.getTradeName())) {
+            queryWrapper.like("a.trade_name", dto.getTradeName());
+        }
+
+        return basicMapper.findWareHouseList(page, queryWrapper);
+    }
+}

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

@@ -0,0 +1,105 @@
+package com.jeeplus.test.materialManagement.collect.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.test.materialManagement.collect.domain.CollectDetailed;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author: 王强
+ * @create: 2023-01-04 14:58
+ **/
+@Data
+public class CollectDto {
+
+    /**
+     * 管理员修改标记
+     */
+    private String sign;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    private String createBy;
+
+    //领用编号(字典值)
+    public static final String BIZ_CODE = "29";
+
+    /**
+     * 基础表主键值
+     */
+    private String id;
+
+    /**
+     * 领用物品名称
+     */
+    private String goodsName;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    private String processDefinitionId;
+
+    /**
+     * 领用编号
+     */
+    private String collectNo;
+
+    /**
+     * 领用时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date collectDate;
+
+    /**
+     * 领用时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String[] collectDates;
+
+    /**
+     * 经办人
+     */
+    private String handledBy;
+
+    /**
+     * 经办人id
+     */
+    private String handledById;
+
+    /**
+     * 经办人名称
+     */
+    private String handledByName;
+
+    /**
+     * 经办人部门
+     */
+    private String handledByOffice;
+
+    /**
+     *经办人部门名称
+     */
+    private String handledByOfficeName;
+
+    private List<WorkAttachmentDto> files;
+
+    //附件信息
+    List<WorkAttachment> fileInfoLost;
+
+    //新增信息
+    List<CollectDetailed> detailInfos;
+}

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

@@ -0,0 +1,28 @@
+package com.jeeplus.test.materialManagement.collect.service.dto;
+
+import lombok.Data;
+
+/**
+ * 入库汇总表
+ * @author: 王强
+ * @create: 2023-01-03 16:22
+ **/
+@Data
+public class WareHouseSummaryDto {
+
+    /**
+     * 商品名称
+     */
+    private String tradeName;
+
+    /**
+     * 商品数量
+     */
+    private String tradeNumber;
+
+    /**
+     * 入库类型
+     */
+    private String wareHouseType;
+
+}

+ 14 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/domain/MaterialDetailed.java

@@ -25,11 +25,18 @@ public class MaterialDetailed extends BaseEntity {
     /**
      * 采购人
      */
-    private String purchaser;
+    private String purchaserAgent;
+
+    /**
+     * 采购人id
+     */
+    @TableField(exist = false)
+    private String purchaserAgentId;
 
     /**
      * 采购部门
      */
+    @TableField(exist = false)
     private String procurementOffice;
 
     /**
@@ -38,6 +45,12 @@ public class MaterialDetailed extends BaseEntity {
     private String procurementType;
 
     /**
+     * 采购类型id
+     */
+    @TableField(exist = false)
+    private String procurementTypeId;
+
+    /**
      * 商品名称
      */
     private String tradeName;

+ 2 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/mapper/MaterialBasicMapper.java

@@ -31,4 +31,6 @@ public interface MaterialBasicMapper extends BaseMapper<MaterialBasic> {
      * @return
      */
     MaterialBasic getInfoByPurchaseNo(String purchaseNo);
+
+    String getUserNameByUserId(String handledBy);
 }

+ 2 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/mapper/MaterialDetailedMapper.java

@@ -16,4 +16,6 @@ public interface MaterialDetailedMapper extends BaseMapper<MaterialDetailed> {
 
     //查出附件信息
     List<WorkAttachmentDto> getByAttachmentId(String id);
+
+    List<String> getIdByBasicId(String id);
 }

+ 6 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/mapper/xml/MaterialBasicMapper.xml

@@ -25,9 +25,11 @@
 			a.proc_ins_id,
 			a.process_definition_id,
 			b.trade_total_price,
-			so.name as handledByOfficeName
+			so.name as handledByOfficeName,
+			su.name as handledByName
 		FROM
 			material_management_pruchase_request_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_pruchase_request_detailed b
 			on a.id = b.basic_id and b.del_flag = '0'
@@ -44,4 +46,7 @@
             resultType="com.jeeplus.test.materialManagement.purchase.domain.MaterialBasic">
 		select * from material_management_pruchase_request_basics where purchase_no = #{purchaseNo}
 	</select>
+    <select id="getUserNameByUserId" resultType="java.lang.String">
+		select name from sys_user where id = #{id}
+	</select>
 </mapper>

+ 10 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/mapper/xml/MaterialDetailedMapper.xml

@@ -2,7 +2,13 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.jeeplus.test.materialManagement.purchase.mapper.MaterialDetailedMapper">
     <select id="getByBasicId" resultType="com.jeeplus.test.materialManagement.purchase.domain.MaterialDetailed">
-        select * from material_management_pruchase_request_detailed where basic_id = #{basicId} and del_flag = '0'
+        select a.*,su.name as purchaserAgent,su.id as purchaserAgentId,
+        so.name as procurementOffice,d.id as procurementTypeId, d.name as procurementType
+        from material_management_pruchase_request_detailed a
+        left join sys_user su on a.purchaser_agent = su.id
+        left join sys_office so on su.office_id = so.id
+        left join cw_reimbursement_type_info d on a.procurement_type = d.id
+        where a.basic_id = #{basicId} and a.del_flag = '0'
     </select>
     <select id="getByAttachmentId" resultType="com.jeeplus.test.workContract.service.dto.WorkAttachmentDto">
         SELECT
@@ -17,4 +23,7 @@
 			del_flag = 0
 			AND attachment_id = #{id}
     </select>
+    <select id="getIdByBasicId" resultType="java.lang.String">
+        select a.id from material_management_pruchase_request_detailed a where a.basic_id = #{id} and a.del_flag = 0
+    </select>
 </mapper>

+ 90 - 45
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/service/MaterialService.java

@@ -2,6 +2,7 @@ package com.jeeplus.test.materialManagement.purchase.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.jeeplus.core.query.QueryWrapperGenerator;
@@ -59,14 +60,14 @@ public class MaterialService {
         if (StringUtils.isNotEmpty(dto.getPurchaseSketch())) {
             queryWrapper.like("a.purchase_sketch", dto.getPurchaseSketch());
         }
-        if (StringUtils.isNotEmpty(dto.getHandledByOfficeName())) {
+        if (StringUtils.isNotEmpty(dto.getHandledByOffice())) {
             //先根据id查出是否是父节点,是父节点则查出所有的子节点信息
-            List<String> childIds = basicMapper.findChildIds(dto.getHandledByOfficeName());
+            List<String> childIds = basicMapper.findChildIds(dto.getHandledByOffice());
             if ( null != childIds & childIds.size()>0){
-                childIds.add(dto.getHandledByOfficeName());
+                childIds.add(dto.getHandledByOffice());
                 queryWrapper.in("a.handled_by_office",childIds);
             }else {
-                queryWrapper.eq("a.handled_by_office", dto.getHandledByOfficeName());
+                queryWrapper.eq("a.handled_by_office", dto.getHandledByOffice());
             }
         }
         if (StringUtils.isNotEmpty(dto.getStatus())) {
@@ -79,8 +80,8 @@ public class MaterialService {
         //经办人
         if (StringUtils.isNotEmpty(dto.getHandledBy())) {
             //根据经办人id查出经办人名称
-            String name = basicMapper.getHandledName(dto.getHandledBy());
-            dto.setHandledBy(name);
+//            String name = basicMapper.getHandledName(dto.getHandledBy());
+//            dto.setHandledBy(name);
             queryWrapper.eq("a.handled_by", dto.getHandledBy());
         }
         //合同金额
@@ -106,7 +107,7 @@ public class MaterialService {
     public String save(MaterialInfoDto dto) throws Exception{
         // 获取当前登录人信息
         UserDTO userDTO = UserUtils.getCurrentUserDTO();
-        if (StringUtils.isNotEmpty(dto.getId())) {
+        if (StringUtils.isNotEmpty(dto.getId()) && !dto.getId().equals("false")) {
             return update(dto, userDTO);
         } else {
             return add(dto, userDTO);
@@ -124,6 +125,7 @@ public class MaterialService {
         info.setId(id);
 //        info.setNo(no);
         info.setPurchaseNo(no);
+        info.setHandledBy(dto.getHandledById());
         info.setCreateBy(userDTO.getId());
         info.setCreateDate(new Date());
         info.setUpdateBy(userDTO.getId());
@@ -136,6 +138,8 @@ public class MaterialService {
                 // 生成id
                 String detailId = UUID.randomUUID().toString().replace("-", "");
                 detailed.setId(detailId);
+                detailed.setPurchaserAgent(detailed.getPurchaserAgentId());
+                detailed.setProcurementType(detailed.getProcurementTypeId());
                 detailed.setCreateBy(userDTO.getId());
                 detailed.setCreateDate(new Date());
                 detailed.setUpdateBy(userDTO.getId());
@@ -164,32 +168,67 @@ public class MaterialService {
         MaterialBasic info = new MaterialBasic();
         BeanUtils.copyProperties(dto, info);
         info.setUpdateBy(userDTO.getId());
+        info.setHandledBy(dto.getHandledById());
         info.setUpdateDate(new Date());
         basicMapper.updateById(info);
         // 修改报销详情列表信息
         // 删除原有数据
-        LambdaQueryWrapper<MaterialDetailed> detailWrapper = new LambdaQueryWrapper<>();
-        detailWrapper.eq(MaterialDetailed::getBasicId, dto.getId());
-        detailedMapper.delete(detailWrapper);
+//        LambdaQueryWrapper<MaterialDetailed> detailWrapper = new LambdaQueryWrapper<>();
+//        detailWrapper.eq(MaterialDetailed::getBasicId, dto.getId());
+//        detailedMapper.delete(detailWrapper);
         if (CollectionUtils.isNotEmpty(dto.getDetailInfos())) {
+
+            List<String> idList = detailedMapper.getIdByBasicId(info.getId());
             for (MaterialDetailed detailInfo : dto.getDetailInfos()) {
-                // 生成id
-                String detailId = UUID.randomUUID().toString().replace("-", "");
-                detailInfo.setId(detailId);
-                detailInfo.setCreateBy(userDTO.getId());
-                detailInfo.setCreateDate(new Date());
-                detailInfo.setUpdateBy(userDTO.getId());
-                detailInfo.setUpdateDate(new Date());
-                detailInfo.setDelFlag(0);
-                // 保存基础表信息主键值
-                detailInfo.setBasicId(dto.getId());
-                detailInfo.setTradeTotalPrice(dto.getTradeTotalPrice());
-                detailedMapper.insert(detailInfo);
-                // 修改附件信息列表
-                if (CollectionUtils.isNotEmpty(detailInfo.getFileInfoLost())) {
-                    infoService.updateFiles(detailInfo.getFileInfoLost(), userDTO, detailInfo.getId());
+                //删除多余的领用详情
+                //根据基础表id获取所有的详情表id
+                if (null != idList) {
+                    if (idList.contains(detailInfo.getId())){
+                        idList.remove(detailInfo.getId());
+                    }
                 }
             }
+            if (null != idList & idList.size()>0) {
+                idList.forEach(id->{
+                    detailedMapper.deleteById(id);
+                });
+            }
+
+            for (MaterialDetailed detailInfo : dto.getDetailInfos()) {
+                MaterialDetailed materialDetailed = detailedMapper.selectById(detailInfo.getId());
+                if ( null == materialDetailed) {
+                    // 生成id
+                    String detailId = UUID.randomUUID().toString().replace("-", "");
+                    detailInfo.setId(detailId);
+                    detailInfo.setPurchaserAgent(detailInfo.getPurchaserAgentId());
+                    detailInfo.setProcurementType(detailInfo.getProcurementTypeId());
+                    detailInfo.setCreateBy(userDTO.getId());
+                    detailInfo.setCreateDate(new Date());
+                    detailInfo.setUpdateBy(userDTO.getId());
+                    detailInfo.setUpdateDate(new Date());
+                    detailInfo.setDelFlag(0);
+                    // 保存基础表信息主键值
+                    detailInfo.setBasicId(dto.getId());
+                    detailInfo.setTradeTotalPrice(dto.getTradeTotalPrice());
+                    detailedMapper.insert(detailInfo);
+                    // 修改附件信息列表
+                    if (CollectionUtils.isNotEmpty(detailInfo.getFileInfoLost())) {
+                        infoService.saveFiles(detailInfo.getFileInfoLost(), userDTO, detailInfo.getId());
+                    }
+                } else {
+                    detailInfo.setPurchaserAgent(detailInfo.getPurchaserAgentId());
+                    detailInfo.setProcurementType(detailInfo.getProcurementTypeId());
+                    detailInfo.setUpdateBy(userDTO.getId());
+                    detailInfo.setUpdateDate(new Date());
+                    detailInfo.setBasicId(dto.getId());
+                    detailInfo.setTradeTotalPrice(dto.getTradeTotalPrice());
+                    detailedMapper.updateById(detailInfo);
+                    if (CollectionUtils.isNotEmpty(detailInfo.getFileInfoLost())) {
+                        infoService.updateFiles(detailInfo.getFileInfoLost(), userDTO, detailInfo.getId());
+                    }
+                }
+
+            }
         }
         // 修改附件信息列表
         if (CollectionUtils.isNotEmpty(dto.getFiles())) {
@@ -202,30 +241,36 @@ public class MaterialService {
         MaterialInfoDto dto = new MaterialInfoDto();
         // 查询基础信息表
         MaterialBasic info = basicMapper.selectById(id);
-        BeanUtils.copyProperties(info, dto);
-        //将采购详情数据查出
-        List<MaterialDetailed> detailedList = detailedMapper.getByBasicId(id);
-        if (CollectionUtils.isNotEmpty(detailedList)){
-            detailedList.forEach(detailed->{
-                //附件信息
-                List<WorkAttachmentDto> acList = detailedMapper.getByAttachmentId(detailed.getId());
-                if (CollectionUtils.isNotEmpty(acList)) {
-                    for (WorkAttachmentDto i : acList) {
-                        i.setCreateBy(UserUtils.get(i.getBy()));
+        if (ObjectUtils.isNotEmpty(info)) {
+            BeanUtils.copyProperties(info, dto);
+            //将采购详情数据查出
+            List<MaterialDetailed> detailedList = detailedMapper.getByBasicId(id);
+            if (CollectionUtils.isNotEmpty(detailedList)){
+                detailedList.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);
+                });
+            }
+            dto.setDetailInfos(detailedList);
+            //附件信息
+            List<WorkAttachmentDto> files = detailedMapper.getByAttachmentId(info.getId());
+            if (CollectionUtils.isNotEmpty(files)) {
+                for (WorkAttachmentDto i : files) {
+                    i.setCreateBy(UserUtils.get(i.getBy()));
                 }
-                detailed.setFileInfoLost(acList);
-            });
-        }
-        dto.setDetailInfos(detailedList);
-        //附件信息
-        List<WorkAttachmentDto> files = detailedMapper.getByAttachmentId(info.getId());
-        if (CollectionUtils.isNotEmpty(files)) {
-            for (WorkAttachmentDto i : files) {
-                i.setCreateBy(UserUtils.get(i.getBy()));
             }
+            //根据经办人id查出经办人的名称
+            String name = basicMapper.getUserNameByUserId(info.getHandledBy());
+            dto.setHandledBy(name);
+            dto.setHandledById(info.getHandledBy());
+            dto.setFiles(files);
         }
-        dto.setFiles(files);
         return dto;
     }
 

+ 10 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/purchase/service/dto/MaterialInfoDto.java

@@ -28,6 +28,11 @@ public class MaterialInfoDto {
     private String id;
 
     /**
+     * 经办人id
+     */
+    private String handledById;
+
+    /**
      * 采购编号
      */
     private String purchaseNo;
@@ -58,6 +63,11 @@ public class MaterialInfoDto {
     private String handledBy;
 
     /**
+     * 经办人名称
+     */
+    private String handledByName;
+
+    /**
      *经办人部门
      */
     private String handledByOfficeName;

+ 13 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/domain/WareHouseDetailed.java

@@ -28,8 +28,15 @@ public class WareHouseDetailed extends BaseEntity {
     private String wareHouseMan;
 
     /**
+     * 入库人id
+     */
+    @TableField(exist = false)
+    private String wareHouseManId;
+
+    /**
      * 入库人部门
      */
+    @TableField(exist = false)
     private String wareHouseManOffice;
 
     /**
@@ -38,6 +45,12 @@ public class WareHouseDetailed extends BaseEntity {
     private String wareHouseType;
 
     /**
+     * 入库类型id
+     */
+    @TableField(exist = false)
+    private String wareHouseTypeId;
+
+    /**
      * 商品名称
      */
     private String tradeName;

+ 1 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/domain/WareHouseSummary.java

@@ -16,7 +16,7 @@ public class WareHouseSummary extends BaseEntity {
     /**
      * 入库基础表id
      */
-    private String basicId;
+    private String detailedId;
 
     /**
      * 入库类型

+ 2 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/WareHouseDetailedMapper.java

@@ -20,4 +20,6 @@ public interface WareHouseDetailedMapper extends BaseMapper<WareHouseDetailed> {
 
     //查出附件信息
     List<WorkAttachmentDto> getByAttachmentId(String id);
+
+    List<String> getIdByBasicId(String id);
 }

+ 2 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/WareHouseSummaryMapper.java

@@ -26,4 +26,6 @@ public interface WareHouseSummaryMapper extends BaseMapper<WareHouseSummary> {
      * @return
      */
     List<WareHouseSummary> getInfoByBasicId(String id);
+
+    void deleteByDetailedId(String id);
 }

+ 11 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/xml/WareHouseDetailedMapper.xml

@@ -3,7 +3,14 @@
 <mapper namespace="com.jeeplus.test.materialManagement.wareHouse.mapper.WareHouseDetailedMapper">
     <select id="getByBasicId"
             resultType="com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseDetailed">
-        select * from material_management_warehouse_detailed where basic_id = #{id} and del_flag = '0'
+        select a.*,b.name as wareHouseMan,b.id as wareHouseManId,c.name as wareHouseManOffice,
+        d.id as wareHouseTypeId, d.name as wareHouseType
+        from material_management_warehouse_detailed a
+        left join sys_user b on a.ware_house_man = b.id and b.del_flag = '0'
+        left join sys_office c on b.office_id = c.id
+        left join cw_reimbursement_type_info d on a.ware_house_type = d.id
+        where a.basic_id = #{id} and a.del_flag = '0'
+        ORDER BY a.create_date desc
     </select>
     <select id="getByAttachmentId" resultType="com.jeeplus.test.workContract.service.dto.WorkAttachmentDto">
         SELECT
@@ -18,4 +25,7 @@
 			del_flag = 0
 			AND attachment_id = #{id}
     </select>
+    <select id="getIdByBasicId" resultType="java.lang.String">
+        select a.id from material_management_warehouse_detailed a where a.basic_id = #{id} and a.del_flag = 0
+    </select>
 </mapper>

+ 3 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/mapper/xml/WareHouseSummaryMapper.xml

@@ -1,6 +1,9 @@
 <?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.wareHouse.mapper.WareHouseSummaryMapper">
+    <delete id="deleteByDetailedId">
+        update material_management_warehouse_summary set del_flag = 1
+    </delete>
     <select id="getInfoByTradeName"
             resultType="com.jeeplus.test.materialManagement.wareHouse.domain.WareHouseSummary">
         select * from material_management_warehouse_summary

+ 120 - 41
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/wareHouse/service/WareHouseBasicService.java

@@ -166,50 +166,127 @@ public class WareHouseBasicService {
         basicMapper.updateById(info);
         // 修改报销详情列表信息
         // 删除原有数据
-        LambdaQueryWrapper<WareHouseDetailed> detailWrapper = new LambdaQueryWrapper<>();
-        detailWrapper.eq(WareHouseDetailed::getBasicId, dto.getId());
-        detailedMapper.delete(detailWrapper);
+//        LambdaQueryWrapper<WareHouseDetailed> detailWrapper = new LambdaQueryWrapper<>();
+//        detailWrapper.eq(WareHouseDetailed::getBasicId, dto.getId());
+//        detailedMapper.delete(detailWrapper);
         if (CollectionUtils.isNotEmpty(dto.getWareHouse())) {
+
+            List<String> idList = detailedMapper.getIdByBasicId(info.getId());
             for (WareHouseDetailed detailInfo : dto.getWareHouse()) {
-                // 生成id
-                String detailId = UUID.randomUUID().toString().replace("-", "");
-                detailInfo.setId(detailId);
-                detailInfo.setCreateBy(userDTO.getId());
-                detailInfo.setCreateDate(new Date());
-                detailInfo.setUpdateBy(userDTO.getId());
-                detailInfo.setUpdateDate(new Date());
-                detailInfo.setDelFlag(0);
-                // 保存基础表信息主键值
-                detailInfo.setBasicId(dto.getId());
-                detailInfo.setTradeTotalPrice(dto.getWareHouseTotalPrice());
-                detailedMapper.insert(detailInfo);
-                // 修改附件信息列表
-                if (CollectionUtils.isNotEmpty(detailInfo.getFileInfoLost())) {
-                    infoService.updateFiles(detailInfo.getFileInfoLost(), userDTO, detailInfo.getId());
+                //删除多余的领用详情
+                //根据基础表id获取所有的详情表id
+                if (null != idList) {
+                    if (idList.contains(detailInfo.getId())){
+                        idList.remove(detailInfo.getId());
+                    }
                 }
-                //将入库详情商品信息汇总处理
-                //根据商品名称及入库类型查是否有相关数据
-                WareHouseSummary summary = summaryMapper.getInfoByTradeName(detailInfo.getTradeName(),detailInfo.getWareHouseType());;
-                if (null != summary) {
-                    String num = Double.valueOf(detailInfo.getTradeNumber())
-                            + Double.valueOf(summary.getTradeNumber()) + "";
-                    summary.setTradeNumber(num);
-                    summaryMapper.updateById(summary);
+            }
+            if (null != idList & idList.size()>0) {
+                idList.forEach(id->{
+                    detailedMapper.deleteById(id);
+                    //汇总表中的数据也删除掉
+                    summaryMapper.deleteByDetailedId(id);
+                });
+            }
+
+            for (WareHouseDetailed detailInfo : dto.getWareHouse()) {
+                // 生成id
+                WareHouseDetailed wareHouseDetailed = detailedMapper.selectById(detailInfo.getId());
+                if (null == wareHouseDetailed) {
+                    String detailId = UUID.randomUUID().toString().replace("-", "");
+                    detailInfo.setId(detailId);
+                    detailInfo.setWareHouseMan(detailInfo.getWareHouseManId());
+                    detailInfo.setCreateBy(userDTO.getId());
+                    detailInfo.setCreateDate(new Date());
+                    detailInfo.setWareHouseMan(detailInfo.getWareHouseManId());
+                    detailInfo.setUpdateBy(userDTO.getId());
+                    detailInfo.setUpdateDate(new Date());
+                    detailInfo.setWareHouseType(detailInfo.getWareHouseTypeId());
+                    detailInfo.setDelFlag(0);
+                    // 保存基础表信息主键值
+                    detailInfo.setBasicId(dto.getId());
+                    detailInfo.setTradeTotalPrice(dto.getWareHouseTotalPrice());
+                    detailedMapper.insert(detailInfo);
+                    //保存详情列表附件信息
+                    if (CollectionUtils.isNotEmpty(detailInfo.getFileInfoLost())){
+                        infoService.saveFiles(detailInfo.getFileInfoLost(), userDTO, detailId);
+                    }
+                    //将入库详情商品信息汇总处理
+                    //根据商品名称及入库类型查是否有相关数据
+                    WareHouseSummary summary = summaryMapper.getInfoByTradeName(detailInfo.getTradeName(),detailInfo.getWareHouseType());;
+                    if (null != summary) {
+                        if (summary.getTradeName().equals(detailInfo.getTradeName()) &&
+                                summary.getWareHouseType().equals(detailInfo.getWareHouseType())) {
+                            String num = Double.valueOf(detailInfo.getTradeNumber())
+                                    + Double.valueOf(summary.getTradeNumber()) + "";
+                            summary.setTradeNumber(num);
+                            summary.setWareHouseType(detailInfo.getWareHouseType());
+                            summary.setUpdateBy(userDTO.getId());
+                            summary.setUpdateDate(new Date());
+                            summary.setDetailedId(detailInfo.getId());
+                            summaryMapper.updateById(summary);
+                        }
+                    } else {
+                        summary = new WareHouseSummary();
+                        // 生成id
+                        String summaryId = UUID.randomUUID().toString().replace("-", "");
+                        summary.setDetailedId(detailInfo.getId());
+                        summary.setId(summaryId);
+                        summary.setCreateBy(userDTO.getId());
+                        summary.setCreateDate(new Date());
+                        summary.setUpdateBy(userDTO.getId());
+                        summary.setUpdateDate(new Date());
+                        summary.setDelFlag(0);
+                        summary.setWareHouseType(detailInfo.getWareHouseType());
+                        summary.setTradeName(detailInfo.getTradeName());
+                        summary.setTradeNumber(detailInfo.getTradeNumber());
+                        summaryMapper.insert(summary);
+                    }
                 } else {
-                    summary = new WareHouseSummary();
-                    // 生成id
-                    String summaryId = UUID.randomUUID().toString().replace("-", "");
-                    summary.setBasicId(dto.getId());
-                    summary.setId(summaryId);
-                    summary.setCreateBy(userDTO.getId());
-                    summary.setCreateDate(new Date());
-                    summary.setUpdateBy(userDTO.getId());
-                    summary.setUpdateDate(new Date());
-                    summary.setDelFlag(0);
-                    summary.setWareHouseType(detailInfo.getWareHouseType());
-                    summary.setTradeName(detailInfo.getTradeName());
-                    summary.setTradeNumber(detailInfo.getTradeNumber());
-                    summaryMapper.insert(summary);
+                    detailInfo.setWareHouseMan(detailInfo.getWareHouseManId());
+                    detailInfo.setUpdateBy(userDTO.getId());
+                    detailInfo.setUpdateDate(new Date());
+                    detailInfo.setDelFlag(0);
+                    detailInfo.setWareHouseType(detailInfo.getWareHouseTypeId());
+                    // 保存基础表信息主键值
+                    detailInfo.setBasicId(dto.getId());
+                    detailInfo.setTradeTotalPrice(dto.getWareHouseTotalPrice());
+                    detailedMapper.updateById(detailInfo);
+                    // 修改附件信息列表
+                    if (CollectionUtils.isNotEmpty(detailInfo.getFileInfoLost())) {
+                        infoService.updateFiles(detailInfo.getFileInfoLost(), userDTO, detailInfo.getId());
+                    }
+                    //将入库详情商品信息汇总处理
+                    //根据商品名称及入库类型查是否有相关数据
+                    WareHouseSummary summary = summaryMapper.getInfoByTradeName(detailInfo.getTradeName(),detailInfo.getWareHouseType());;
+                    if (null != summary) {
+                        if (wareHouseDetailed.getTradeNumber().equals(detailInfo.getTradeNumber()) &&
+                                !wareHouseDetailed.getTradeName().equals(detailInfo.getTradeName())) {
+                            String num = Double.valueOf(detailInfo.getTradeNumber())
+                                    + Double.valueOf(summary.getTradeNumber()) + "";
+                            summary.setTradeNumber(num);
+                            summary.setUpdateBy(userDTO.getId());
+                            summary.setWareHouseType(detailInfo.getWareHouseType());
+                            summary.setUpdateDate(new Date());
+                            summary.setDetailedId(detailInfo.getId());
+                            summaryMapper.updateById(summary);
+                        }
+                    } else {
+                        summary = new WareHouseSummary();
+                        // 生成id
+                        String summaryId = UUID.randomUUID().toString().replace("-", "");
+                        summary.setDetailedId(detailInfo.getId());
+                        summary.setId(summaryId);
+                        summary.setCreateBy(userDTO.getId());
+                        summary.setCreateDate(new Date());
+                        summary.setUpdateBy(userDTO.getId());
+                        summary.setUpdateDate(new Date());
+                        summary.setDelFlag(0);
+                        summary.setWareHouseType(detailInfo.getWareHouseType());
+                        summary.setTradeName(detailInfo.getTradeName());
+                        summary.setTradeNumber(detailInfo.getTradeNumber());
+                        summaryMapper.insert(summary);
+                    }
                 }
             }
         }
@@ -244,12 +321,14 @@ public class WareHouseBasicService {
             for (WareHouseDetailed detailed : dto.getWareHouse()) {
                 // 生成id
                 String detailId = UUID.randomUUID().toString().replace("-", "");
+                detailed.setWareHouseMan(detailed.getWareHouseManId());
                 detailed.setId(detailId);
                 detailed.setCreateBy(userDTO.getId());
                 detailed.setCreateDate(new Date());
                 detailed.setUpdateBy(userDTO.getId());
                 detailed.setUpdateDate(new Date());
                 detailed.setDelFlag(0);
+                detailed.setWareHouseType(detailed.getWareHouseTypeId());
                 // 保存基础表信息主键值
                 detailed.setBasicId(id);
                 detailed.setTradeTotalPrice(dto.getWareHouseTotalPrice());
@@ -270,7 +349,7 @@ public class WareHouseBasicService {
                     summary = new WareHouseSummary();
                     // 生成id
                     String summaryId = UUID.randomUUID().toString().replace("-", "");
-                    summary.setBasicId(id);
+                    summary.setDetailedId(detailed.getId());
                     summary.setId(summaryId);
                     summary.setCreateBy(userDTO.getId());
                     summary.setCreateDate(new Date());