Ver Fonte

1.掌柜合同管理

wuhp há 1 ano atrás
pai
commit
8c966acaf2
26 ficheiros alterados com 1439 adições e 0 exclusões
  1. 6 0
      pom.xml
  2. 91 0
      src/main/java/com/ydtech/modules/fnc/controller/contract/ContractController.java
  3. 19 0
      src/main/java/com/ydtech/modules/fnc/dao/contract/ContractFileMapper.java
  4. 35 0
      src/main/java/com/ydtech/modules/fnc/dao/contract/ContractMapper.java
  5. 31 0
      src/main/java/com/ydtech/modules/fnc/dao/contract/ContractSupplierMapper.java
  6. 111 0
      src/main/java/com/ydtech/modules/fnc/dto/contract/ContractDto.java
  7. 33 0
      src/main/java/com/ydtech/modules/fnc/dto/contract/ContractFileDto.java
  8. 38 0
      src/main/java/com/ydtech/modules/fnc/dto/contract/ContractSupplierDto.java
  9. 167 0
      src/main/java/com/ydtech/modules/fnc/entity/ContractEntity.java
  10. 75 0
      src/main/java/com/ydtech/modules/fnc/entity/ContractFileEntity.java
  11. 47 0
      src/main/java/com/ydtech/modules/fnc/entity/ContractSupplierEntity.java
  12. 20 0
      src/main/java/com/ydtech/modules/fnc/service/contract/ContractFileService.java
  13. 39 0
      src/main/java/com/ydtech/modules/fnc/service/contract/ContractService.java
  14. 20 0
      src/main/java/com/ydtech/modules/fnc/service/contract/ContractSupplierService.java
  15. 44 0
      src/main/java/com/ydtech/modules/fnc/service/contract/impl/ContractFileServiceImpl.java
  16. 53 0
      src/main/java/com/ydtech/modules/fnc/service/contract/impl/ContractSupplierServiceImpl.java
  17. 285 0
      src/main/java/com/ydtech/modules/fnc/service/contract/impl/contractServiceImpl.java
  18. 108 0
      src/main/java/com/ydtech/modules/fnc/vo/ContractVo.java
  19. 18 0
      src/main/java/com/ydtech/modules/inv/controller/InvAccountController.java
  20. 7 0
      src/main/java/com/ydtech/modules/inv/model/InvAccount.java
  21. 9 0
      src/main/java/com/ydtech/modules/inv/service/InvAccountService.java
  22. 5 0
      src/main/java/com/ydtech/modules/inv/service/impl/InvAccountServiceImpl.java
  23. 41 0
      src/main/resources/mapper/modules/fnc/contract/ContractFileMapper.xml
  24. 69 0
      src/main/resources/mapper/modules/fnc/contract/ContractMapper.xml
  25. 66 0
      src/main/resources/mapper/modules/fnc/contract/ContractSupplierMapper.xml
  26. 2 0
      src/main/resources/mapper/modules/inv/InvAccountMapper.xml

+ 6 - 0
pom.xml

@@ -104,6 +104,12 @@
             <version>3.2.0</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.belerweb</groupId>
+            <artifactId>pinyin4j</artifactId>
+            <version>2.5.0</version>
+        </dependency>
+
         <!-- Druid 依赖 log4j包 -->
         <dependency>
             <groupId>log4j</groupId>

+ 91 - 0
src/main/java/com/ydtech/modules/fnc/controller/contract/ContractController.java

@@ -0,0 +1,91 @@
+package com.ydtech.modules.fnc.controller.contract;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
+import com.ydtech.modules.admin.model.vo.KztGetDeptUtilsDto;
+import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
+import com.ydtech.modules.admin.utils.KztGetDeptUtils;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fnc.dto.contract.ContractDto;
+import com.ydtech.modules.fnc.entity.ContractEntity;
+import com.ydtech.modules.fnc.service.contract.ContractService;
+import com.ydtech.modules.inv.model.InvAccount;
+import com.ydtech.modules.fnc.vo.ContractVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+
+@RestController
+@Api(tags = "公司内部合同")
+@RequestMapping("/fnc/contract")
+public class ContractController extends BaseController {
+    @Autowired
+    private ContractService contractService;
+
+    /**
+     * @param contractDto
+     * @return 新增合同
+     */
+    @PostMapping("saveAndUpdate")
+    @ApiOperation("新增修改")
+    public HttpResult insertInsAccount(@RequestBody ContractDto contractDto) {
+        contractService.saveAndUpdate(contractDto);
+        return HttpResult.ok(StringUtils.isNotBlank(contractDto.getId()) ? "编辑成功" : "新增成功");
+    }
+
+    /**
+     * @description: 分页查询
+     * @author: whp
+     **/
+    @PostMapping("queryPage")
+    @ApiOperation(value = "合同分页查询")
+    public HttpResult<IPage<ContractEntity>> queryPage(@RequestBody ContractVo contractVO) {
+        try {
+            IPage<ContractEntity> result = contractService.queryPage(contractVO);
+            return HttpResult.ok("查询数据成功", result);
+        } catch (Exception e) {
+            return HttpResult.error("查询错误" + e.getMessage());
+        }
+    }
+
+
+    /**
+     * @description: 分页查询
+     * @author: whp
+     **/
+    @DeleteMapping("/delete/{id}")
+    @ApiOperation(value = "删除")
+    public HttpResult<Object> deleteById(@PathVariable("id") String id) {
+        contractService.deleteById(id);
+        return HttpResult.ok("删除成功");
+    }
+
+    /**
+     * @description: 分页查询
+     * @author: whp
+     **/
+    @GetMapping("/{id}")
+    @ApiOperation(value = "回显")
+    public HttpResult<ContractEntity> getById(@PathVariable("id") String id) {
+        return HttpResult.ok(contractService.getSelectById(id));
+    }
+
+    /**
+     *
+     * @param contractDto
+     * @return  合同协议新增
+     */
+    @PostMapping("copyContract")
+    @ApiOperation("合同协议新增")
+    public HttpResult copyContract(@RequestBody ContractDto contractDto) {
+        contractService.copyContract(contractDto);
+        return HttpResult.ok();
+    }
+
+}

+ 19 - 0
src/main/java/com/ydtech/modules/fnc/dao/contract/ContractFileMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.fnc.dao.contract;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.fnc.entity.ContractFileEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface ContractFileMapper extends BaseMapper<ContractFileEntity> {
+    void deleteByContractId(String id);
+
+    /**
+     *
+     * @param id
+     * @return  通过合同获取附件
+     */
+    List<ContractFileEntity> selectByContractId(String id);
+}

+ 35 - 0
src/main/java/com/ydtech/modules/fnc/dao/contract/ContractMapper.java

@@ -0,0 +1,35 @@
+package com.ydtech.modules.fnc.dao.contract;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.modules.fnc.entity.ContractEntity;
+import com.ydtech.modules.fnc.vo.ContractVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.HashMap;
+
+@Mapper
+public interface ContractMapper  extends BaseMapper<ContractEntity> {
+    /**
+     *
+     * @param page
+     * @param contractVO
+     * @return  合同分页
+     */
+    IPage<ContractEntity> queryPage(@Param("page") Page page,@Param("vo") ContractVo contractVO);
+
+    /**
+     *
+     * @return  获取合同最大编码
+     */
+    HashMap<String, Object> getMaxCode();
+
+    /**
+     *
+     * @param id
+     * @return  获取新增协议最大的合同编码
+     */
+    HashMap<String, Object> copyContractCode(String id);
+}

+ 31 - 0
src/main/java/com/ydtech/modules/fnc/dao/contract/ContractSupplierMapper.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.fnc.dao.contract;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.fnc.dto.contract.ContractSupplierDto;
+import com.ydtech.modules.fnc.entity.ContractSupplierEntity;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ContractSupplierMapper  extends BaseMapper<ContractSupplierEntity> {
+    void deleteBySupplierIds(@Param("supplierIdList") List<String> supplierIdList,@Param("id") String id);
+
+    /**
+     *
+     * @param id
+     * @return
+     */
+    List<ContractSupplierEntity> selectByContractId(String id);
+
+
+
+    /**
+     *
+     * @param supplierIdList
+     * @return  供应商合同关联表
+     */
+    List<ContractSupplierEntity> selecSupplierList(ContractSupplierDto contractSupplierDto);
+
+}

+ 111 - 0
src/main/java/com/ydtech/modules/fnc/dto/contract/ContractDto.java

@@ -0,0 +1,111 @@
+package com.ydtech.modules.fnc.dto.contract;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@ApiModel("合同实体类")
+public class ContractDto implements Serializable {
+
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("合同编码")
+    private String contractCode;
+
+    @ApiModelProperty("合同名称")
+    private String contractName;
+
+
+    @ApiModelProperty("内部公司名称")
+    private String internalCompanyName;
+
+    @ApiModelProperty("内部公司id")
+    private String internalCompanyId;
+
+
+    @ApiModelProperty("外部公司名称")
+    private String externalCompaniesName;
+
+
+    @ApiModelProperty("外部公司id")
+    private String externalCompaniesId;
+
+
+    @ApiModelProperty("供应商名称")
+    private String supplierName;
+
+    @ApiModelProperty("供应商id")
+    private String supplierId;
+
+
+    @ApiModelProperty("合同类型")
+    private String contractType;
+
+    @ApiModelProperty("是否开口合同 0 是 1 否")
+    private String isOpenContract;
+
+
+    @ApiModelProperty("是否顺延 0 是 1 否")
+    private String shouldPostponed;
+
+
+    @ApiModelProperty("到期提醒")
+    private String expirationReminder;
+
+
+    @ApiModelProperty("生效日期")
+    private LocalDateTime effectiveDate;
+
+
+    @ApiModelProperty("失效日期")
+    private LocalDateTime expiringDate;
+
+
+    @ApiModelProperty("顺延时间")
+    private LocalDateTime shouldPostponedDate;
+
+
+    @ApiModelProperty("顺延后失效时间")
+    private LocalDateTime shouldPostponedEffectiveDate;
+
+
+    @ApiModelProperty("创建日期")
+    private LocalDateTime createTime;
+
+
+    @ApiModelProperty("附件路径")
+    private String filePathId;
+
+
+    @ApiModelProperty("附件路径idList")
+    private List<String> filePathIdList;
+
+
+    @ApiModelProperty("部门编码")
+    private String deptId;
+
+    @ApiModelProperty("用户编码")
+    private String userId;
+
+    @ApiModelProperty("供应商id")
+    private List<String> supplierIdList;
+
+    @ApiModelProperty("内外部类型")
+    private String externType;
+
+    @ApiModelProperty("内部类型")
+    private String internalType;
+
+    @ApiModelProperty("合同是否有效 0 有效 1 无效")
+    private String contractStatus;
+
+    @ApiModelProperty("父级id")
+    private String parentId;
+}

+ 33 - 0
src/main/java/com/ydtech/modules/fnc/dto/contract/ContractFileDto.java

@@ -0,0 +1,33 @@
+package com.ydtech.modules.fnc.dto.contract;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel("合同附件关联实体")
+public class ContractFileDto implements Serializable {
+
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("附件id")
+    private String fileId;
+
+    @ApiModelProperty("合同id")
+    private String contractId;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("部门id")
+    private String deptId;
+
+    @ApiModelProperty("用户id")
+    private String userId;
+
+}

+ 38 - 0
src/main/java/com/ydtech/modules/fnc/dto/contract/ContractSupplierDto.java

@@ -0,0 +1,38 @@
+package com.ydtech.modules.fnc.dto.contract;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@ApiModel("供应商合同实体")
+public class ContractSupplierDto  implements Serializable {
+
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("供应商id")
+    private String supplierId;
+
+    @ApiModelProperty("合同id")
+    private String contractId;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("部门id")
+    private String deptId;
+
+    @ApiModelProperty("用户id")
+    private String userId;
+
+
+    @ApiModelProperty("用户id")
+    private List<String> supplierIdList;
+}

+ 167 - 0
src/main/java/com/ydtech/modules/fnc/entity/ContractEntity.java

@@ -0,0 +1,167 @@
+package com.ydtech.modules.fnc.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Getter
+@Setter
+@TableName("ins_contract")
+@ApiModel(value = "insContract对象", description = "公司内部合同")
+public class ContractEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    @TableId("id")
+    private String id;
+
+    @ApiModelProperty("合同编码")
+    @TableField("contract_code")
+    private String contractCode;
+
+    @ApiModelProperty("合同名称")
+    @TableField("contract_name")
+    private String contractName;
+
+
+    @ApiModelProperty("内部公司名称")
+    @TableField("internal_company_name")
+    private String internalCompanyName;
+
+
+    @ApiModelProperty("内部公司id")
+    @TableField("internal_company_id")
+    private String internalCompanyId;
+
+
+    @ApiModelProperty("外部公司名称")
+    @TableField("external_companies_name")
+    private String externalCompaniesName;
+
+
+    @ApiModelProperty("外部公司id")
+    @TableField("external_companies_id")
+    private String externalCompaniesId;
+
+
+
+    @ApiModelProperty("供应商名称")
+    @TableField("supplier_name")
+    private String supplierName;
+
+
+    @ApiModelProperty("供应商id")
+    @TableField("supplier_id")
+    private String supplierId;
+
+
+    @ApiModelProperty("合同类型")
+    @TableField("contract_type")
+    private String contractType;
+
+    @ApiModelProperty("是否开口合同 0 是 1 否")
+    @TableField("is_open_contract")
+    private String isOpenContract;
+
+
+    @ApiModelProperty("是否顺延 0 是 1 否")
+    @TableField("should_postponed")
+    private String shouldPostponed;
+
+
+    @ApiModelProperty("到期提醒")
+    @TableField("expiration_reminder")
+    private String expirationReminder;
+
+
+
+    @ApiModelProperty("生效日期")
+    @TableField("effective_date")
+    private LocalDateTime effectiveDate;
+
+
+
+    @ApiModelProperty("失效日期")
+    @TableField("expiring_date")
+    private LocalDateTime expiringDate;
+
+
+    @ApiModelProperty("顺延时间")
+    @TableField("should_postponed_date")
+    private LocalDateTime shouldPostponedDate;
+
+
+    @ApiModelProperty("顺延后失效时间")
+    @TableField("should_postponed_effective_date")
+    private LocalDateTime shouldPostponedEffectiveDate;
+
+    @ApiModelProperty("创建日期")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+
+    @ApiModelProperty("附件路径")
+    @TableField("file_path_id")
+    private String filePathId;
+
+
+
+    @ApiModelProperty("部门编码")
+    @TableField("dept_id")
+    private String deptId;
+
+
+    @ApiModelProperty("用户编码")
+    @TableField("user_id")
+    private String userId;
+
+
+    @ApiModelProperty("外部类型")
+    @TableField("extern_type")
+    private String externType;
+
+    @ApiModelProperty("内部类型")
+    @TableField("internal_type")
+    private String internalType;
+
+    @ApiModelProperty("合同是否有效 0 有效 1 无效")
+    @TableField("contract_status")
+    private String contractStatus;
+
+
+    @ApiModelProperty("父级id")
+    @TableField("parent_id")
+    private String parentId;
+
+
+
+    @ApiModelProperty("供应商id")
+    @TableField(exist = false)
+    private List<String> supplierIdList;
+
+    @ApiModelProperty("附件路径idList")
+    @TableField(exist = false)
+    private List<String> filePathIdList;
+
+    @ApiModelProperty("供应商名称")
+    @TableField(exist = false)
+    private List<String> namesimpleList;
+
+
+    @ApiModelProperty("合同附件集合")
+    @TableField(exist = false)
+    private List<ContractFileEntity> contractFileEntityList;
+
+
+
+
+
+}

+ 75 - 0
src/main/java/com/ydtech/modules/fnc/entity/ContractFileEntity.java

@@ -0,0 +1,75 @@
+package com.ydtech.modules.fnc.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Getter
+@Setter
+@TableName("ins_contract_file")
+@ApiModel(value = "insContractFile对象", description = "合同附件关联表")
+public class ContractFileEntity implements Serializable {
+
+    @ApiModelProperty("主键")
+    @TableId("id")
+    private String id;
+
+    @ApiModelProperty("附件id")
+    @TableField("file_id")
+    private String fileId;
+
+    @ApiModelProperty("合同id")
+    @TableField("contract_id")
+    private String contractId;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("部门id")
+    @TableField("dept_id")
+    private String deptId;
+
+    @ApiModelProperty("用户id")
+    @TableField("user_id")
+    private String userId;
+
+    @ApiModelProperty("文件名称")
+    @TableField(exist = false)
+    private String fileName;
+
+
+    @ApiModelProperty("文件类型")
+    @TableField(exist = false)
+    private String fileType;
+
+
+    @ApiModelProperty("文件存储路劲")
+    @TableField(exist = false)
+    private String filePath;
+
+
+    @ApiModelProperty("文件访问路劲")
+    @TableField(exist = false)
+    private String url;
+
+
+
+    @ApiModelProperty("上传时间")
+    @TableField(exist = false)
+    private String updateTime;
+
+
+    @ApiModelProperty("上传用户")
+    @TableField(exist = false)
+    private String username;
+
+
+}

+ 47 - 0
src/main/java/com/ydtech/modules/fnc/entity/ContractSupplierEntity.java

@@ -0,0 +1,47 @@
+package com.ydtech.modules.fnc.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Getter
+@Setter
+@TableName("ins_contract_supplier")
+@ApiModel(value = "insContractSupplier对象", description = "合同供应商关联表")
+public class ContractSupplierEntity implements Serializable {
+
+    @ApiModelProperty("主键")
+    @TableId("id")
+    private String id;
+
+    @ApiModelProperty("供应商id")
+    @TableField("supplier_id")
+    private String supplierId;
+
+    @ApiModelProperty("合同id")
+    @TableField("contract_id")
+    private String contractId;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("部门id")
+    @TableField("dept_id")
+    private String deptId;
+
+    @ApiModelProperty("用户id")
+    @TableField("user_id")
+    private String userId;
+
+    @ApiModelProperty("供应商名称")
+    @TableField(exist = false)
+    private String namesimple;
+}

+ 20 - 0
src/main/java/com/ydtech/modules/fnc/service/contract/ContractFileService.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.fnc.service.contract;
+
+import com.ydtech.modules.fnc.entity.ContractFileEntity;
+
+import java.util.List;
+
+public interface ContractFileService {
+    /**
+     *  新增附件关联表
+     * @param filePathIdList
+     * @param id
+     */
+    void saveAndUpdate(List<String> filePathIdList, String id);
+
+    /**
+     * @param id
+     * @return  通过合同id 获取附件
+     */
+    List<ContractFileEntity> getByContractById(String id);
+}

+ 39 - 0
src/main/java/com/ydtech/modules/fnc/service/contract/ContractService.java

@@ -0,0 +1,39 @@
+package com.ydtech.modules.fnc.service.contract;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.fnc.dto.contract.ContractDto;
+import com.ydtech.modules.fnc.entity.ContractEntity;
+import com.ydtech.modules.fnc.vo.ContractVo;
+
+
+public interface ContractService extends IService<ContractEntity> {
+
+    /**
+     *
+     * @param contractDto
+     * @return  新增或 编辑合同
+     */
+    void saveAndUpdate(ContractDto contractDto);
+    /**
+     * @description:   分页查询
+     * @author: whp
+     **/
+    IPage<ContractEntity> queryPage(ContractVo contractVO);
+
+    void deleteById(String id);
+
+    /**
+     *
+     * @param id
+     * @return  回显接口
+     */
+    ContractEntity getSelectById(String id);
+    /**
+     *
+     * @param contractDto
+     * @return  合同协议新增
+     */
+    void copyContract(ContractDto contractDto);
+}

+ 20 - 0
src/main/java/com/ydtech/modules/fnc/service/contract/ContractSupplierService.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.fnc.service.contract;
+
+import com.ydtech.modules.fnc.dto.contract.ContractSupplierDto;
+import com.ydtech.modules.fnc.entity.ContractSupplierEntity;
+
+import java.util.List;
+
+public interface ContractSupplierService {
+    void saveAndUpdate(List<String> supplierIdList, String id);
+
+    /**
+     *
+     * @param id
+     * @return 通过合同id返回供应商
+     */
+    List<ContractSupplierEntity> getByContractById(String id);
+
+
+    List<ContractSupplierEntity> selecSupplierList(ContractSupplierDto contractSupplierDto);
+}

+ 44 - 0
src/main/java/com/ydtech/modules/fnc/service/contract/impl/ContractFileServiceImpl.java

@@ -0,0 +1,44 @@
+package com.ydtech.modules.fnc.service.contract.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fnc.dao.contract.ContractFileMapper;
+import com.ydtech.modules.fnc.entity.ContractFileEntity;
+import com.ydtech.modules.fnc.entity.ContractSupplierEntity;
+import com.ydtech.modules.fnc.service.contract.ContractFileService;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class ContractFileServiceImpl extends ServiceImpl<ContractFileMapper, ContractFileEntity> implements ContractFileService {
+    @Override
+    public void saveAndUpdate(List<String> filePathIdList, String id) {
+        baseMapper.deleteByContractId(id);
+        List<ContractFileEntity> inserList = new ArrayList<>();
+        String deptId = BaseController.getDeptId();
+        String userId = BaseController.getUserId();
+        for (String s : filePathIdList) {
+            ContractFileEntity contractFileEntity = new ContractFileEntity();
+            contractFileEntity.setFileId(s);
+            contractFileEntity.setContractId(id);
+            contractFileEntity.setCreateTime(LocalDateTime.now());
+            contractFileEntity.setUserId(userId);
+            contractFileEntity.setDeptId(deptId);
+            inserList.add(contractFileEntity);
+        }
+        this.saveBatch(inserList);
+    }
+
+    /**
+     *
+     * @param id
+     * @return  通过合同获取附件
+     */
+    @Override
+    public List<ContractFileEntity> getByContractById(String id) {
+        return baseMapper.selectByContractId(id);
+    }
+}

+ 53 - 0
src/main/java/com/ydtech/modules/fnc/service/contract/impl/ContractSupplierServiceImpl.java

@@ -0,0 +1,53 @@
+package com.ydtech.modules.fnc.service.contract.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fnc.dao.contract.ContractSupplierMapper;
+import com.ydtech.modules.fnc.dto.contract.ContractSupplierDto;
+import com.ydtech.modules.fnc.entity.ContractSupplierEntity;
+import com.ydtech.modules.fnc.service.contract.ContractSupplierService;
+import com.ydtech.utils.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class ContractSupplierServiceImpl extends ServiceImpl<ContractSupplierMapper, ContractSupplierEntity> implements ContractSupplierService {
+    /**
+     * 合同供应商关联新增
+     *
+     * @param supplierIdList
+     * @param id
+     */
+    @Override
+    @Transactional
+    public void saveAndUpdate(List<String> supplierIdList, String id) {
+        baseMapper.deleteBySupplierIds(supplierIdList,id);
+        List<ContractSupplierEntity> inserList = new ArrayList<>();
+        String deptId = BaseController.getDeptId();
+        String userId = BaseController.getUserId();
+        for (String s : supplierIdList) {
+            ContractSupplierEntity contractSupplierEntity = new ContractSupplierEntity();
+            contractSupplierEntity.setSupplierId(s);
+            contractSupplierEntity.setContractId(id);
+            contractSupplierEntity.setCreateTime(LocalDateTime.now());
+            contractSupplierEntity.setUserId(userId);
+            contractSupplierEntity.setDeptId(deptId);
+            inserList.add(contractSupplierEntity);
+        }
+        this.saveBatch(inserList);
+    }
+
+    @Override
+    public List<ContractSupplierEntity> getByContractById(String id) {
+        return baseMapper.selectByContractId(id);
+    }
+
+    @Override
+    public List<ContractSupplierEntity> selecSupplierList(ContractSupplierDto contractSupplierDto) {
+        return baseMapper.selecSupplierList(contractSupplierDto);
+    }
+}

+ 285 - 0
src/main/java/com/ydtech/modules/fnc/service/contract/impl/contractServiceImpl.java

@@ -0,0 +1,285 @@
+package com.ydtech.modules.fnc.service.contract.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.base.model.vo.PageVo;
+import com.ydtech.modules.fnc.dao.contract.ContractMapper;
+import com.ydtech.modules.fnc.dao.contract.ContractSupplierMapper;
+import com.ydtech.modules.fnc.dto.contract.ContractDto;
+import com.ydtech.modules.fnc.dto.contract.ContractSupplierDto;
+import com.ydtech.modules.fnc.entity.ContractEntity;
+import com.ydtech.modules.fnc.entity.ContractFileEntity;
+import com.ydtech.modules.fnc.entity.ContractSupplierEntity;
+import com.ydtech.modules.fnc.service.contract.ContractFileService;
+import com.ydtech.modules.fnc.service.contract.ContractService;
+import com.ydtech.modules.fnc.service.contract.ContractSupplierService;
+import com.ydtech.modules.fnc.vo.ContractVo;
+import com.ydtech.modules.inv.dao.InvAccountMapper;
+import com.ydtech.modules.inv.model.InvAccount;
+import com.ydtech.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEntity> implements ContractService {
+
+    @Autowired
+    private ContractMapper contractMapper;
+    @Autowired
+    private InvAccountMapper invAccountMapper;
+
+    @Autowired
+    private ContractSupplierMapper contractSupplierMapper;
+
+    @Autowired
+    private ContractSupplierService contractSupplierService;
+
+    @Autowired
+    private ContractFileService contractFileService;
+
+    /**
+     * @param contractDto
+     * @return 新增合同
+     */
+    @Override
+    @Transactional
+    public void saveAndUpdate(ContractDto contractDto) {
+        if (StringUtils.isEmpty(contractDto.getId())) {
+            ContractEntity contractEntity = new ContractEntity();
+            BeanUtils.copyProperties(contractDto, contractEntity);
+            String userId = BaseController.getUserId();
+            String deptId = BaseController.getDeptId();
+            contractEntity.setDeptId(deptId);
+            contractEntity.setUserId(userId);
+            contractEntity.setCreateTime(LocalDateTime.now());
+//          合同编码生成
+            String contractCode = this.generateCode(contractDto);
+            contractEntity.setContractCode(contractCode);
+//           添加关联表  供应商与合同
+            List<String> supplierIdList = contractDto.getSupplierIdList();
+            contractEntity.setContractStatus("0");
+            baseMapper.insert(contractEntity);
+            if (contractDto.getSupplierIdList() != null) {
+                contractSupplierService.saveAndUpdate(supplierIdList, contractEntity.getId());
+            }
+            if (contractDto.getFilePathIdList() != null) {
+                contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());
+            }
+        } else {
+            ContractEntity contractEntity = new ContractEntity();
+            BeanUtils.copyProperties(contractDto, contractEntity);
+            String contractCode = this.generateCode(contractDto);
+            contractEntity.setContractCode(contractCode);
+            baseMapper.updateById(contractEntity);
+            if (!contractDto.getSupplierIdList().isEmpty()) {
+                contractSupplierService.saveAndUpdate(contractDto.getSupplierIdList(), contractEntity.getId());
+            }
+
+            if (contractDto.getFilePathIdList() != null) {
+                contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());
+            }
+        }
+    }
+
+    /**
+     * @param contractDto
+     * @return 合同编码规则   甲方简称 首字母 大写 +  当前年份 + 000
+     * @throws BadHanyuPinyinOutputFormatCombination
+     */
+    private String generateCode(ContractDto contractDto) {
+        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
+        //          获取首字母大写
+        format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
+        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+        format.setVCharType(HanyuPinyinVCharType.WITH_V);
+        if (StringUtils.isEmpty(contractDto.getId())) {
+            StringBuilder stringBuffer = new StringBuilder();
+            //获取最大编码
+            HashMap<String, Object> maxCode = baseMapper.getMaxCode();
+            String Number = "";
+            if (maxCode == null) {
+                Number = "001";
+            } else {
+                Object contractCode = maxCode.get("contractCode");
+
+                int i = Integer.parseInt(contractCode.toString());
+
+                Number = String.format("%03d", i + 1);
+            }
+            /**
+             * 查询甲方简称
+             */
+            String simpleName = this.getSimpleName(contractDto.getExternalCompaniesId());
+            if (StringUtils.isEmpty(simpleName)) {
+                throw new SystemException("甲方简称为空不能新增 生成不了合同编号");
+            }
+
+            char[] chars = simpleName.toCharArray();
+            for (char aChar : chars) {
+                String[] pinyinArray = new String[0];
+                try {
+                    pinyinArray = PinyinHelper.toHanyuPinyinStringArray(aChar, format);
+                } catch (BadHanyuPinyinOutputFormatCombination e) {
+                    throw new RuntimeException(e);
+                }
+                if (pinyinArray != null) {
+                    stringBuffer.append(pinyinArray[0].charAt(0)); // 取首字母
+                    break;
+                }
+            }
+
+            LocalDate currentDate = LocalDate.now();
+            int currentYear = currentDate.getYear();
+            stringBuffer.append(currentYear).append(Number);
+            return stringBuffer.toString();
+        } else {
+            String firtLetter = "";
+            String contractCode = contractDto.getContractCode();
+            String simpleName = this.getSimpleName(contractDto.getExternalCompaniesId());
+            if (simpleName.isEmpty()) {
+                return contractCode;
+            }
+            char c = contractCode.toCharArray()[0];
+            char[] chars = simpleName.toCharArray();
+            for (char aChar : chars) {
+                String[] pinyinArray = new String[0];
+                try {
+                    pinyinArray = PinyinHelper.toHanyuPinyinStringArray(aChar, format);
+                } catch (BadHanyuPinyinOutputFormatCombination e) {
+                    throw new RuntimeException(e);
+                }
+                if (pinyinArray != null) {
+                    firtLetter = String.valueOf(pinyinArray[0].charAt(0)); // 取首字母
+                    break;
+                }
+            }
+            String contractCodeNew = contractCode.replaceFirst(String.valueOf(c), firtLetter);
+            return contractCodeNew;
+        }
+    }
+
+    private String getSimpleName(String externalCompaniesId) {
+        QueryWrapper<InvAccount> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("account_id", externalCompaniesId);
+        InvAccount invAccount = invAccountMapper.selectOne(queryWrapper);
+
+        return invAccount.getSimpleName();
+    }
+
+    @Override
+    public IPage<ContractEntity> queryPage(ContractVo contractVO) {
+
+        PageVo<ContractVo> pageVo = new PageVo<>();
+        Page page = new Page(contractVO.getPageNum(), contractVO.getPageSize());
+        pageVo.setPageNum(contractVO.getPageNum());
+        pageVo.setPageSize(contractVO.getPageSize());
+
+        if (contractVO.getSupplierIdList() != null && !contractVO.getSupplierIdList().isEmpty()) { //查关联表获取合同id
+            ContractSupplierDto contractSupplierDto = new ContractSupplierDto();
+            contractSupplierDto.setSupplierIdList(contractVO.getSupplierIdList());
+            List<ContractSupplierEntity> contractSupplierEntityList = contractSupplierService.selecSupplierList(contractSupplierDto);
+            List<String> contractIdList = contractSupplierEntityList.stream().map(ContractSupplierEntity::getContractId).collect(Collectors.toList());
+            contractVO.setContractIdList(contractIdList);
+
+        }
+
+        IPage<ContractEntity> queriedPage = contractMapper.queryPage(page, contractVO);
+        List<ContractEntity> records = queriedPage.getRecords();
+        if (!records.isEmpty()) {
+            for (ContractEntity record : records) {
+                String id = record.getId();
+                List<ContractSupplierEntity> contractSupplierEntityList = contractSupplierMapper.selectByContractId(id);
+                List<String> nameList = contractSupplierEntityList.stream().map(ContractSupplierEntity::getNamesimple).collect(Collectors.toList());
+                record.setNamesimpleList(nameList);
+            }
+        }
+        return queriedPage;
+    }
+
+    @Override
+    public void deleteById(String id) {
+        baseMapper.deleteById(id);
+    }
+
+    @Override
+    public ContractEntity getSelectById(String id) {
+        ContractEntity contractEntity = baseMapper.selectById(id);
+
+//      供应商
+        List<ContractSupplierEntity> contractSupplierEntityList = contractSupplierService.getByContractById(id);
+        if (contractSupplierEntityList != null && !contractSupplierEntityList.isEmpty()) {
+            List<String> supplierIdList = contractSupplierEntityList.stream().map(ContractSupplierEntity::getSupplierId).collect(Collectors.toList());
+            contractEntity.setSupplierIdList(supplierIdList);
+        }
+//    附件
+        List<ContractFileEntity> contractFileEntityList = contractFileService.getByContractById(id);
+        if (!contractFileEntityList.isEmpty()) {
+            contractEntity.setContractFileEntityList(contractFileEntityList);
+        }
+        return contractEntity;
+    }
+
+    /**
+     * @param contractDto
+     * @return 合同协议新增
+     */
+    @Override
+    public void copyContract(ContractDto contractDto) {
+//        备案编码
+        String conrtactCodeNew = this.contractCopyCode(contractDto.getContractCode(), contractDto.getId());
+        ContractEntity contractEntity = new ContractEntity();
+        BeanUtils.copyProperties(contractDto, contractEntity);
+        String userId = BaseController.getUserId();
+        String deptId = BaseController.getDeptId();
+        contractEntity.setDeptId(deptId);
+        contractEntity.setUserId(userId);
+        contractEntity.setCreateTime(LocalDateTime.now());
+//          合同编码生成
+        contractEntity.setContractCode(conrtactCodeNew);
+//           添加关联表  供应商与合同
+        List<String> supplierIdList = contractDto.getSupplierIdList();
+        contractEntity.setContractStatus("0");
+        contractEntity.setId(null);
+        contractEntity.setParentId(contractDto.getId());
+
+        baseMapper.insert(contractEntity);
+        if (contractDto.getSupplierIdList() != null) {
+            contractSupplierService.saveAndUpdate(supplierIdList, contractEntity.getId());
+        }
+        if (contractDto.getFilePathIdList() != null) {
+            contractFileService.saveAndUpdate(contractDto.getFilePathIdList(), contractEntity.getId());
+        }
+    }
+
+    private String contractCopyCode(String contractCode, String id) {
+        HashMap<String, Object> contractCodeCopy = baseMapper.copyContractCode(id);
+        if (contractCodeCopy == null) {
+            return contractCode + "-1";
+        } else {
+            int i = Integer.parseInt(contractCodeCopy.get("contractCode").toString());
+            i=i+1;
+            return contractCode+i;
+
+        }
+    }
+}

+ 108 - 0
src/main/java/com/ydtech/modules/fnc/vo/ContractVo.java

@@ -0,0 +1,108 @@
+package com.ydtech.modules.fnc.vo;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@ApiModel("合同查询vo")
+public class ContractVo implements Serializable {
+    @ApiModelProperty("主键")
+    private String id;
+
+    @ApiModelProperty("合同编码")
+    private String contractCode;
+
+    @ApiModelProperty("合同名称")
+    private String contractName;
+
+
+    @ApiModelProperty("内部公司名称")
+    private String internalCompanyName;
+
+
+    @ApiModelProperty("内部公司id")
+    private String internalCompanyId;
+
+
+    @ApiModelProperty("外部公司名称")
+    private String externalCompaniesName;
+
+    @ApiModelProperty("外部公司id")
+    private String externalCompaniesId;
+
+
+    @ApiModelProperty("供应商名称")
+    private String supplierName;
+
+
+    @ApiModelProperty("供应商id")
+    private String supplierId;
+
+
+    @ApiModelProperty("合同类型")
+    private String contractType;
+
+    @ApiModelProperty("是否开口合同 0 是 1 否")
+    private String isOpenContract;
+
+
+    @ApiModelProperty("是否顺延 0 是 1 否")
+    private String shouldPostponed;
+
+
+    @ApiModelProperty("到期提醒")
+    private String expirationReminder;
+
+
+    @ApiModelProperty("生效日期")
+    private LocalDateTime effectiveDate;
+
+
+    @ApiModelProperty("失效日期")
+    private LocalDateTime expiringDate;
+
+
+    @ApiModelProperty("顺延时间")
+    private LocalDateTime shouldPostponedDate;
+
+
+    @ApiModelProperty("顺延后失效时间")
+    private LocalDateTime shouldPostponedEffectiveDate;
+
+
+    @ApiModelProperty("附件路径")
+    private String filePathId;
+
+    @ApiModelProperty("部门编码")
+    private String deptId;
+
+    @ApiModelProperty("用户编码")
+    private String userId;
+
+    @ApiModelProperty(value = "每页页数")
+    private int pageSize;
+
+    @ApiModelProperty(value = "页数")
+    @Min(value = 1, message = "页数最小为1")
+    private int pageNum;
+
+    @ApiModelProperty("供应商id")
+    private List<String> supplierIdList;
+
+
+    @ApiModelProperty("合同idList")
+    private List<String> contractIdList;
+
+    @ApiModelProperty("合同是否有效 0 有效 1 无效")
+    private String contractStatus;
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/inv/controller/InvAccountController.java

@@ -15,6 +15,8 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 
 /**
  * @author jianlong
@@ -167,4 +169,20 @@ public class InvAccountController {
             return HttpResult.error("查询错误"+e.getMessage());
         }
     }
+
+    /**
+     *
+     * @param invAccountQueryVo
+     * @return  返回账户列表集合
+     */
+    @ApiOperation("查询账户卡列表")
+    @PostMapping("getInvAccountList")
+    public HttpResult<List<InvAccount>> getInvAccountList(@RequestBody InvAccountQueryVo invAccountQueryVo) {
+        try{
+            List<InvAccount>  result = invAccountService.getInvAccountList(invAccountQueryVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
 }

+ 7 - 0
src/main/java/com/ydtech/modules/inv/model/InvAccount.java

@@ -113,6 +113,13 @@ public class InvAccount implements Serializable {
     @ApiModelProperty(value = "外部账户标识(0内部账户 1外部账户)")
     private String outerFlag;
 
+    /**
+     * 账户简称
+     */
+    @ApiModelProperty(value = "账户简称")
+    @TableField(value = "simple_name")
+    private String simpleName;
+
     /**
      * 总开票额度
      */

+ 9 - 0
src/main/java/com/ydtech/modules/inv/service/InvAccountService.java

@@ -9,6 +9,8 @@ import com.ydtech.modules.inv.model.dto.InvAccountCardQueryDto;
 import com.ydtech.modules.inv.model.vo.InvAccountQueryVo;
 import com.ydtech.modules.order.entity.BasePageResult;
 
+import java.util.List;
+
 /**
 * @author Administrator
 * @description 针对表【ins_account(账户信息表)】的数据库操作Service
@@ -35,4 +37,11 @@ public interface InvAccountService extends IService<InvAccount> {
      *  @Description: 通过银行卡号和账户名查询内部账号
      */
     BasePageResult<InvAccountCard> queryPage(InvAccountCardQueryDto invAccountCardQueryDto);
+    /**
+     *
+     * @param invAccountQueryVo
+     * @return  返回账户列表集合
+     */
+    List<InvAccount> getInvAccountList(InvAccountQueryVo invAccountQueryVo);
+
 }

+ 5 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountServiceImpl.java

@@ -421,6 +421,11 @@ public class InvAccountServiceImpl extends ServiceImpl<InvAccountMapper, InvAcco
         return  new BasePageResult<>(invAccountCardQueryDto.getPageNum(), page.getSize(), result.getTotal(), page.getPages(),
                 result.getRecords());
     }
+
+    @Override
+    public List<InvAccount> getInvAccountList(InvAccountQueryVo invAccountQueryVo) {
+        return baseMapper.selectAccountsListPage(invAccountQueryVo);
+    }
 }
 
 

+ 41 - 0
src/main/resources/mapper/modules/fnc/contract/ContractFileMapper.xml

@@ -0,0 +1,41 @@
+<?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.ydtech.modules.fnc.dao.contract.ContractFileMapper">
+
+
+    <delete id="deleteByContractId">
+        delete from ins_contract_file
+        <where>
+            <if test="id !=null  and  id !=''">
+                and contract_id =#{id}
+            </if>
+        </where>
+
+
+    </delete>
+
+    <select id="selectByContractId" resultType="com.ydtech.modules.fnc.entity.ContractFileEntity">
+        select
+        icf.id as "id",
+        icf.file_id as "fileId",
+        icf.contract_id as "contractId",
+        icf.create_time as "createTime",
+        icf.dept_id as "deptId",
+        icf.user_id as "userId",
+        iuf.file_name as "fileName",
+        iuf.file_type as "fileType",
+        iuf.file_path as "filePath",
+        iuf.url as "url",
+        iuf.update_time as "updateTime",
+        iuf.username as "username"
+            from  ins_contract_file  icf
+        left join   ins_upload_files  iuf on iuf.id =icf.file_id
+        <where>
+            <if test="id !=null  and id !=''">
+                    contract_id =#{id}
+            </if>
+        </where>
+    </select>
+
+
+</mapper>

+ 69 - 0
src/main/resources/mapper/modules/fnc/contract/ContractMapper.xml

@@ -0,0 +1,69 @@
+<?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.ydtech.modules.fnc.dao.contract.ContractMapper">
+
+
+
+    <select id="queryPage" resultType="com.ydtech.modules.fnc.entity.ContractEntity">
+        select *  from
+            ins_contract  ic
+        <where>
+            <if test="vo.contractCode !=null  and  vo.contractCode !=''">
+                and ic.contract_code like concat('%',#{vo.contractCode},'%')
+            </if>
+
+            <if test="vo.contractIdList != null  and vo.contractIdList !='' and  vo.contractIdList.size()>0 ">
+                and ic.id IN
+                <foreach collection="vo.contractIdList" item="id" index="index" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+            </if>
+
+            <if test="vo.contractName !=null  and  vo.contractName !=''">
+                and ic.contract_name =#{vo.contractName}
+            </if>
+
+            <if test="vo.internalCompanyId !=null  and  vo.internalCompanyId !=''">
+                and ic.internal_company_id =#{vo.internalCompanyId}
+
+            </if>
+
+
+            <if test="vo.externalCompaniesId !=null  and  vo.externalCompaniesId !=''">
+                and ic.external_companies_id =#{vo.externalCompaniesId}
+            </if>
+
+            <if test="vo.supplierId !=null  and  vo.supplierId !=''">
+                and ic.supplier_id =#{vo.supplierId}
+            </if>
+
+             <if test="vo.contractType !=null  and  vo.contractType !=''">
+                and ic.contract_type =#{vo.contractType}
+            </if>
+
+            <if test="vo.contractStatus !=null  and  vo.contractStatus !=''  and vo.contractStatus !='all'">
+                and ic.contract_status =#{vo.contractStatus}
+            </if>
+
+
+        </where>
+    </select>
+
+    <select id="getMaxCode" resultType="java.util.HashMap">
+        SELECT MAX(CAST(RIGHT(REGEXP_REPLACE(contract_code, '[^0-9]', ''), 3) AS UNSIGNED)) AS "contractCode"
+        FROM ins_contract
+
+    </select>
+
+    <select id="copyContractCode" resultType="java.util.HashMap">
+        SELECT MAX(CAST(RIGHT(REGEXP_REPLACE(contract_code, '[^0-9]', ''), 1) AS UNSIGNED)) AS "contractCode"
+        FROM ins_contract
+        <where>
+            <if test="id !=null  and  id !=''">
+              and  parent_id =#{id}
+            </if>
+        </where>
+
+    </select>
+
+</mapper>

+ 66 - 0
src/main/resources/mapper/modules/fnc/contract/ContractSupplierMapper.xml

@@ -0,0 +1,66 @@
+<?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.ydtech.modules.fnc.dao.contract.ContractSupplierMapper">
+
+
+    <delete id="deleteBySupplierIds">
+        delete from ins_contract_supplier
+        <where>
+            <if test="supplierIdList != null and supplierIdList != '' and supplierIdList.size() > 0">
+                and supplier_id in
+                <foreach collection="supplierIdList" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="id !=null  and  id !=''">
+                and contract_id =#{id}
+            </if>
+        </where>
+
+
+    </delete>
+
+    <select id="selectByContractId" resultType="com.ydtech.modules.fnc.entity.ContractSupplierEntity">
+        select
+        ics.id as "id",
+        ics.supplier_id as "supplierId",
+        ics.contract_id as "contractId",
+        ics.create_time as "createTime",
+        ics.dept_id as "deptId",
+        ics.user_id as "userId",
+        eic.namesimple as "namesimple"
+        from ins_contract_supplier ics
+        left join esm_ins_company eic on eic.id =ics.supplier_id
+        <where>
+            <if test="id != null  and id !=''">
+                and ics.contract_id =#{id}
+            </if>
+        </where>
+    </select>
+
+    <select id="selecSupplierList" resultType="com.ydtech.modules.fnc.entity.ContractSupplierEntity">
+        select
+        ics.id as "id",
+        ics.supplier_id as "supplierId",
+        ics.contract_id as "contractId",
+        ics.create_time as "createTime",
+        ics.dept_id as "deptId",
+        ics.user_id as "userId",
+        eic.namesimple as "namesimple"
+        from ins_contract_supplier ics
+        left join esm_ins_company eic on eic.id =ics.supplier_id
+        <where>
+            <if test="id != null  and id !=''">
+                and ics.contract_id =#{id}
+            </if>
+            <if test="supplierIdList != null  and supplierIdList !='' and  supplierIdList.size()>0 ">
+                and ics.supplierId IN
+                <foreach collection="supplierIdList" item="id" index="index" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+
+    </select>
+
+</mapper>

+ 2 - 0
src/main/resources/mapper/modules/inv/InvAccountMapper.xml

@@ -21,6 +21,7 @@
         <result property="invoicingAmountExcess" column="invoicing_amount_excess" jdbcType="VARCHAR"/>
         <result property="sumInvoicingAmount" column="sum_invoicing_amount" jdbcType="VARCHAR"/>
         <result property="tentativeEstimates" column="tentative_estimates" jdbcType="VARCHAR"/>
+        <result property="simpleName" column="simple_name" jdbcType="VARCHAR"/>
         <collection property="invAccountCardList" ofType="com.ydtech.modules.inv.model.InvAccountCard"
                     resultMap="invAccountCardList"/>
     </resultMap>
@@ -67,6 +68,7 @@
         a.invoicing_amount,
         a.sum_invoicing_amount,
         a.tentative_estimates,
+        a.simple_name,
         ABS(sum(c.no_has_tax) - 5000000) as invoicing_amount_excess,
 
         b.bank_card_num,