Bläddra i källkod

物资管理-合同

wangqiang 2 år sedan
förälder
incheckning
c014333f03

+ 83 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/contract/controller/ContractController.java

@@ -0,0 +1,83 @@
+package com.jeeplus.test.materialManagement.contract.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.contract.service.ContractService;
+import com.jeeplus.test.materialManagement.contract.service.dto.ContractInfoDto;
+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-13 13:55
+ **/
+@RestController
+@Api(tags ="物资管理-合同")
+@RequestMapping(value = "/material/contract")
+public class ContractController {
+
+    @Resource
+    private ContractService contractService;
+
+    /**
+     * 新增/修改
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "新增、修改")
+    @PostMapping("/save")
+    public ResponseEntity<String> save(@RequestBody ContractInfoDto dto) throws Exception{
+        String s = contractService.save(dto);
+        return ResponseUtil.newInstance().add("businessTable", "material_management_contract").add("businessId", s).ok ("操作成功");
+    }
+
+    /**
+     * 列表查询
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "列表查询")
+    @GetMapping("/list")
+    public ResponseEntity<IPage<ContractInfoDto>> list(Page<ContractInfoDto> page, ContractInfoDto dto) throws Exception{
+        IPage<ContractInfoDto> iPage = contractService.list(page, dto);
+        return ResponseEntity.ok(iPage);
+    }
+
+    /**
+     * 查询
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "查询")
+    @GetMapping("/findById")
+    public ResponseEntity<ContractInfoDto> findById(@RequestParam String id) throws Exception{
+        ContractInfoDto dto = contractService.findById(id);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
+     * 根据id修改状态status
+     */
+    @ApiOperation(value = "根据id修改状态status")
+    @PostMapping(value = "updateStatusById")
+    public void updateStatusById(@RequestBody ContractInfoDto dto) {
+        contractService.updateStatusById(dto);
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "删除")
+    @GetMapping("/remove")
+    public ResponseEntity<String> remove(@RequestParam String id){
+        String s = contractService.remove(id);
+        return ResponseEntity.ok(s);
+    }
+}

+ 66 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/contract/domain/Contract.java

@@ -0,0 +1,66 @@
+package com.jeeplus.test.materialManagement.contract.domain;
+
+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;
+
+/**
+ * 物资管理-合同表
+ * @author: 王强
+ * @create: 2023-01-13 13:56
+ **/
+@Data
+@TableName("material_management_contract")
+public class Contract extends BaseEntity {
+
+    //备注1
+    private String remarks1;
+    //备注2
+    private String remarks2;
+
+    private String procInsId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    private String processDefinitionId;
+
+    //客户名称
+    private String name;
+
+    //是否有统一社会信用代码
+    private String isUscCode;
+
+    //统一社会信用代码
+    private String uscCode;
+
+    //注册地址
+    private String companyAddress;
+
+    //详细地址
+    private String address;
+
+    //公司电话
+    private String mobile;
+
+    //合同名称
+    private String contractName;
+
+    //签订日期
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date signingDate;
+
+    //合同生效日期
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date effectiveDate;
+
+    //合同终止日期
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endTime;
+
+}

+ 33 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/contract/domain/ContractUser.java

@@ -0,0 +1,33 @@
+package com.jeeplus.test.materialManagement.contract.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 物资管理-合同-客户联系人表
+ * @author: 王强
+ * @create: 2023-01-13 13:57
+ **/
+@Data
+@TableName("material_management_contract_user")
+public class ContractUser extends BaseEntity {
+
+    //备注
+    private String remarks;
+
+    //姓名
+    private String name;
+
+    //职位
+    private String position;
+
+    //联系方式1
+    private String contactFirst;
+
+    //联系方式2
+    private String contactSecond;
+
+    //物资管理-合同表id
+    private String contractId;
+}

+ 21 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/contract/mapper/ContractMapper.java

@@ -0,0 +1,21 @@
+package com.jeeplus.test.materialManagement.contract.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.materialManagement.contract.domain.Contract;
+import com.jeeplus.test.materialManagement.contract.service.dto.ContractInfoDto;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+
+/**
+ * @author: 王强
+ * @create: 2023-01-13 14:29
+ **/
+public interface ContractMapper extends BaseMapper<Contract> {
+
+    void updateStatusById(@Param("id") String id, @Param("type") String type);
+
+    IPage<ContractInfoDto> findList(Page<ContractInfoDto> page,@Param(Constants.WRAPPER) QueryWrapper<ContractInfoDto> queryWrapper);
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/contract/mapper/ContractUserMapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.materialManagement.contract.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.materialManagement.contract.domain.ContractUser;
+
+import java.util.List;
+
+/**
+ * @author: 王强
+ * @create: 2023-01-13 14:31
+ **/
+public interface ContractUserMapper extends BaseMapper<ContractUser> {
+    //根据合同id查出所有的用户id
+    List<String> getByContractId(String id);
+
+    List<ContractUser> getByContId(String id);
+}

+ 32 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/contract/mapper/xml/ContractMapper.xml

@@ -0,0 +1,32 @@
+<?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.contract.mapper.ContractMapper">
+	<update id="updateStatusById">
+		UPDATE material_management_contract SET status = #{type}
+		WHERE id = #{id}
+	</update>
+	<select id="findList"
+            resultType="com.jeeplus.test.materialManagement.contract.service.dto.ContractInfoDto">
+        SELECT
+        	DISTINCT
+			a.id,
+			a.create_by,
+			a.create_date,
+			a.proc_ins_id,
+			a.status,
+			a.process_definition_id,
+			a.usc_code,
+			a.address,
+			a.company_address,
+			a.mobile,
+			a.contract_name,
+			a.signing_date,
+			a.effective_date,
+			a.end_time,
+			a.name
+		FROM
+			material_management_contract a
+			${ew.customSqlSegment}
+		ORDER BY a.update_date DESC
+    </select>
+</mapper>

+ 10 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/contract/mapper/xml/ContractUserMapper.xml

@@ -0,0 +1,10 @@
+<?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.contract.mapper.ContractUserMapper">
+    <select id="getByContractId" resultType="java.lang.String">
+        select id from material_management_contract_user where contract_id = #{id} and del_flag = 0
+    </select>
+    <select id="getByContId" resultType="com.jeeplus.test.materialManagement.contract.domain.ContractUser">
+        SELECT * FROM material_management_contract_user where contract_id = #{id} and del_flag = 0 order by create_date desc
+    </select>
+</mapper>

+ 224 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/contract/service/ContractService.java

@@ -0,0 +1,224 @@
+package com.jeeplus.test.materialManagement.contract.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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.jeeplus.sys.utils.UserUtils;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.jeeplus.test.cw.contractRegistration.service.ContractInfoService;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.jeeplus.test.materialManagement.contract.domain.Contract;
+import com.jeeplus.test.materialManagement.contract.domain.ContractUser;
+import com.jeeplus.test.materialManagement.contract.mapper.ContractMapper;
+import com.jeeplus.test.materialManagement.contract.mapper.ContractUserMapper;
+import com.jeeplus.test.materialManagement.contract.service.dto.ContractInfoDto;
+import com.jeeplus.test.materialManagement.purchase.mapper.MaterialDetailedMapper;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.oss.mapper.OssServiceMapper;
+import com.jeeplus.test.program.configuration.projectList.service.dto.ContractDto;
+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-13 14:11
+ **/
+@Service
+@Transactional
+public class ContractService {
+
+    @Resource
+    private ContractMapper contractMapper;
+
+    @Resource
+    private ContractUserMapper contractUserMapper;
+
+    @Resource
+    private MaterialDetailedMapper detailedMapper;
+
+    @Resource
+    private OssServiceMapper ossServiceMapper;
+
+
+    @Resource
+    private ContractInfoService infoService;
+
+    public String remove(String id) {
+        // 删除基础信息表
+        contractMapper.deleteById(id);
+        // 删除详情列表 及对应附件信息
+        List<ContractUser> detailedList = contractUserMapper.getByContId(id);
+        if (null != detailedList){
+            detailedList.forEach(de->{
+                detailedMapper.deleteById(de.getId());
+            });
+        }
+        // 删除附件信息
+        LambdaQueryWrapper<WorkAttachment> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(WorkAttachment::getAttachmentId, id);
+        ossServiceMapper.delete(wrapper);
+        return "操作成功";
+    }
+
+    public void updateStatusById(ContractInfoDto dto) {
+        contractMapper.updateStatusById(dto.getId(), dto.getStatus());
+    }
+
+    public ContractInfoDto findById(String id) {
+        ContractInfoDto dto = new ContractInfoDto();
+        // 查询基础信息表
+        Contract info = contractMapper.selectById(id);
+        if (ObjectUtils.isNotEmpty(info)) {
+            BeanUtils.copyProperties(info, dto);
+            //将采购详情数据查出
+            List<ContractUser> detailedList = contractUserMapper.getByContId(id);
+            dto.setCwProjectClientContactDTOList(detailedList);
+            //附件信息
+            List<WorkAttachmentDto> files = detailedMapper.getByAttachmentId(info.getId());
+            if (CollectionUtils.isNotEmpty(files)) {
+                for (WorkAttachmentDto i : files) {
+                    i.setCreateBy(UserUtils.get(i.getBy()));
+                }
+            }
+            dto.setFiles(files);
+        }
+        return dto;
+    }
+
+    /**
+     * 列表查询
+     */
+    public IPage<ContractInfoDto> list(Page<ContractInfoDto> page , ContractInfoDto dto) throws Exception{
+        QueryWrapper<ContractInfoDto> queryWrapper = QueryWrapperGenerator.buildQueryCondition(dto, ContractInfoDto.class);
+
+        queryWrapper.eq("a.del_flag", "0");
+
+        if (StringUtils.isNotEmpty(dto.getName())) {
+            queryWrapper.like("a.name", dto.getName());
+        }
+        if (StringUtils.isNotEmpty(dto.getContractName())) {
+            queryWrapper.like("a.contract_name", dto.getContractName());
+        }
+        if (StringUtils.isNotEmpty(dto.getStatus())) {
+            queryWrapper.like("a.status", dto.getStatus());
+        }
+        String[] effectiveDates = dto.getEffectiveDates();
+        if (effectiveDates != null) {
+
+            queryWrapper.between("a.effective_date", effectiveDates[0], effectiveDates[1]);
+        }
+
+        return contractMapper.findList(page, queryWrapper);
+    }
+
+    public String save(ContractInfoDto dto) throws Exception{
+        // 获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        if (StringUtils.isNotEmpty(dto.getId()) && !dto.getId().equals("false")) {
+            return update(dto, userDTO);
+        } else {
+            return add(dto, userDTO);
+        }
+    }
+
+    public String update(ContractInfoDto dto, UserDTO userDTO) {
+        // 修改基础信息
+        Contract info = new Contract();
+        BeanUtils.copyProperties(dto, info);
+        info.setUpdateBy(userDTO.getId());
+        info.setUpdateDate(new Date());
+        contractMapper.updateById(info);
+        //当一开始保存的联系人数据在修改的时候被删除时
+        List<String> idList = contractUserMapper.getByContractId(info.getId());
+        for (ContractUser detailInfo : dto.getCwProjectClientContactDTOList()) {
+            //删除多余的领用详情
+            //根据基础表id获取所有的详情表id
+            if (null != idList) {
+                if (idList.contains(detailInfo.getId())){
+                    idList.remove(detailInfo.getId());
+                }
+            }
+        }
+        if (null != idList & idList.size()>0) {
+            idList.forEach(id->{
+                contractUserMapper.deleteById(id);
+            });
+        }
+        // 修改客户联系人信息
+        if (CollectionUtils.isNotEmpty(dto.getCwProjectClientContactDTOList())) {
+            for (ContractUser user : dto.getCwProjectClientContactDTOList()) {
+                //根据id去客户联系人表中查是否有对应数据  有则修改,无则添加
+                ContractUser contractUser = contractUserMapper.selectById(user.getId());
+                if (null == contractUser) {
+                    // 生成id
+                    String detailId = UUID.randomUUID().toString().replace("-", "");
+                    user.setId(detailId);
+                    user.setCreateBy(userDTO.getId());
+                    user.setCreateDate(new Date());
+                    user.setUpdateBy(userDTO.getId());
+                    user.setUpdateDate(new Date());
+                    user.setDelFlag(0);
+                    user.setContractId(info.getId());
+                    contractUserMapper.insert(user);
+                } else {
+                    user.setUpdateBy(userDTO.getId());
+                    user.setUpdateDate(new Date());
+                    contractUserMapper.updateById(user);
+                }
+            }
+        }
+        // 修改附件信息列表
+        if (CollectionUtils.isNotEmpty(dto.getFiles())) {
+            infoService.updateFiles(dto.getFiles(), userDTO, dto.getId());
+        }
+        return dto.getId();
+    }
+
+    public String add(ContractInfoDto dto, UserDTO userDTO) throws Exception{
+        // 生成id
+        String id = UUID.randomUUID().toString().replace("-", "");
+        // 保存基础信息表信息
+        Contract info = new Contract();
+        BeanUtils.copyProperties(dto, info);
+        info.setId(id);
+        info.setCreateBy(userDTO.getId());
+        info.setCreateDate(new Date());
+        info.setUpdateBy(userDTO.getId());
+        info.setUpdateDate(new Date());
+        info.setDelFlag(0);
+        contractMapper.insert(info);
+        //保存客户联系人信息
+        if (CollectionUtils.isNotEmpty(dto.getCwProjectClientContactDTOList())) {
+            for (ContractUser user : dto.getCwProjectClientContactDTOList()) {
+                // 生成id
+                String detailId = UUID.randomUUID().toString().replace("-", "");
+                user.setId(detailId);
+                user.setCreateBy(userDTO.getId());
+                user.setCreateDate(new Date());
+                user.setUpdateBy(userDTO.getId());
+                user.setUpdateDate(new Date());
+                user.setDelFlag(0);
+                user.setContractId(info.getId());
+                contractUserMapper.insert(user);
+            }
+        }
+        // 保存附件列表信息
+        if (CollectionUtils.isNotEmpty(dto.getFiles())) {
+            infoService.saveFiles(dto.getFiles(), userDTO, id);
+        }
+        return id;
+    }
+}

+ 80 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/materialManagement/contract/service/dto/ContractInfoDto.java

@@ -0,0 +1,80 @@
+package com.jeeplus.test.materialManagement.contract.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.test.materialManagement.contract.domain.ContractUser;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author: 王强
+ * @create: 2023-01-13 14:07
+ **/
+@Data
+public class ContractInfoDto {
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String[] effectiveDates;
+
+    private String createBy;
+
+    /**
+     * 基础表主键值
+     */
+    private String id;
+
+    //备注1
+    private String remarks1;
+    //备注2
+    private String remarks2;
+
+    private String procInsId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    private String processDefinitionId;
+
+    //客户名称
+    private String name;
+
+    //是否有统一社会信用代码
+    private String isUscCode;
+
+    //统一社会信用代码
+    private String uscCode;
+
+    //注册地址
+    private String companyAddress;
+
+    //详细地址
+    private String address;
+
+    //公司电话
+    private String mobile;
+
+    //合同名称
+    private String contractName;
+
+    //签订日期
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date signingDate;
+
+    //合同生效日期
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date effectiveDate;
+
+    //合同终止日期
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endTime;
+
+
+    private List<WorkAttachmentDto> files;
+
+    //客户联系人信息
+    List<ContractUser> cwProjectClientContactDTOList;
+}