Browse Source

1、支付回调修改

2、电子合同模块修改
3、其他信息修改
master
Aug 3 months ago
parent
commit
4b9553a408
39 changed files with 2018 additions and 255 deletions
  1. +2
    -2
      han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java
  2. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/controller/EmployContractController.java
  3. +59
    -30
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/entity/EmployContract.java
  4. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/mapper/EmployContractMapper.java
  5. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/service/IEmployContractService.java
  6. +1
    -1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/service/impl/EmployContractServiceImpl.java
  7. +55
    -59
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/vue/EmployContractList.vue
  8. +41
    -16
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/vue/modules/EmployContractForm.vue
  9. +92
    -69
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/vue3/EmployContract.data.ts
  10. +171
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/controller/EmployContractTemplateController.java
  11. +78
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/entity/EmployContractTemplate.java
  12. +17
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/mapper/EmployContractTemplateMapper.java
  13. +5
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/mapper/xml/EmployContractTemplateMapper.xml
  14. +14
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/service/IEmployContractTemplateService.java
  15. +19
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/service/impl/EmployContractTemplateServiceImpl.java
  16. +207
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue/EmployContractTemplateList.vue
  17. +134
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue/modules/EmployContractTemplateForm.vue
  18. +84
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue/modules/EmployContractTemplateModal.Style#Drawer.vue
  19. +60
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue/modules/EmployContractTemplateModal.vue
  20. +61
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue3/EmployContractTemplate.api.ts
  21. +83
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue3/EmployContractTemplate.data.ts
  22. +162
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue3/EmployContractTemplateList.vue
  23. +58
    -0
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue3/components/EmployContractTemplateModal.vue
  24. +7
    -2
      jeecg-boot-module-system/jeecg-boot-module-system.iml
  25. +19
    -0
      jeecg-boot-module-system/pom.xml
  26. +77
    -6
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/controller2/ContractController.java
  27. +2
    -2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/controller2/JobController.java
  28. +13
    -13
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/employController/EmployeeApiController.java
  29. +75
    -1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/ContractService.java
  30. +1
    -1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/JobService.java
  31. +4
    -4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/BossApiServiceImpl.java
  32. +2
    -1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/CheckServiceImpl.java
  33. +12
    -0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/CollectionServiceImpl.java
  34. +364
    -26
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/ContractServiceImpl.java
  35. +9
    -11
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/EmployeeApiServiceImpl.java
  36. +5
    -1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/JobServiceImpl.java
  37. +18
    -4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/ShareServiceImpl.java
  38. +3
    -2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/VipServiceImpl.java
  39. +1
    -1
      jeecg-boot-module-system/src/main/resources/application-dev.yml

+ 2
- 2
han-hai-module-pay/src/main/java/org/jeecg/modules/pay/MpWxPayService.java View File

@ -98,12 +98,12 @@ public class MpWxPayService {
request.setDetail(productName); //商品详情
request.setTotalFee(price); //总金额|分计
request.setSpbillCreateIp(clientIp); //终端IP
request.setNotifyUrl(wxPay.notifyUrl);//设置回调路径
request.setNotifyUrl("https://admin.teyizhao.com/employ-api/employ/vip/payNotify");//设置回调路径
request.setProductId(productId); //商品id
request.setOpenid(openId); //JSAPI OPENID
if (dev){
request.setTotalFee(price);
request.setNotifyUrl(wxPay.notifyUrlDev);
request.setNotifyUrl("https://admin.teyizhao.com/employ-api/employ/vip/payNotify");
}
try {
Object order = wxPayService.createOrder(request);


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/controller/EmployContractController.java View File

@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 电子合同表
* @Author: jeecg-boot
* @Date: 2024-12-21
* @Date: 2025-02-07
* @Version: V1.0
*/
@Api(tags="电子合同表")


+ 59
- 30
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/entity/EmployContract.java View File

@ -5,6 +5,7 @@ import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@ -20,7 +21,7 @@ import lombok.experimental.Accessors;
/**
* @Description: 电子合同表
* @Author: jeecg-boot
* @Date: 2024-12-21
* @Date: 2025-02-07
* @Version: V1.0
*/
@Data
@ -47,40 +48,68 @@ public class EmployContract implements Serializable {
/**更新日期*/
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**合同文件*/
@Excel(name = "合同文件", width = 15)
@ApiModelProperty(value = "合同文件")
private java.lang.String fileContract;
/**公司签署*/
@Excel(name = "公司签署", width = 15, dicCode = "contract_status")
/**标题*/
@Excel(name = "标题", width = 15)
@ApiModelProperty(value = "标题")
private java.lang.String title;
/**合同模板文件pdf*/
@Excel(name = "合同模板文件pdf", width = 15)
@ApiModelProperty(value = "合同模板文件pdf")
private java.lang.String template;
/**合同文件pdf*/
@Excel(name = "合同文件pdf", width = 15)
@ApiModelProperty(value = "合同文件pdf")
private java.lang.String contract;
/**求职者(乙方)签署状态*/
@Excel(name = "求职者(乙方)签署状态", width = 15, dicCode = "contract_status")
@Dict(dicCode = "contract_status")
@ApiModelProperty(value = "公司签署")
private java.lang.String signCompany;
/**求职者签署*/
@Excel(name = "求职者签署", width = 15, dicCode = "contract_status")
@ApiModelProperty(value = "求职者(乙方)签署状态")
private java.lang.Integer employeeStatus;
/**求职者(乙方)签字坐标*/
@Excel(name = "求职者(乙方)签字坐标", width = 15)
@ApiModelProperty(value = "求职者(乙方)签字坐标")
private java.lang.String employeePosition;
/**求职者(乙方)签字页码*/
@Excel(name = "求职者(乙方)签字页码", width = 15)
@ApiModelProperty(value = "求职者(乙方)签字页码")
private java.lang.Integer employeePage;
/**求职者(乙方)签名图片*/
@Excel(name = "求职者(乙方)签名图片", width = 15)
@ApiModelProperty(value = "求职者(乙方)签名图片")
private java.lang.String employeeImage;
/**招聘者(甲方)签署状态*/
@Excel(name = "招聘者(甲方)签署状态", width = 15, dicCode = "contract_status")
@Dict(dicCode = "contract_status")
@ApiModelProperty(value = "求职者签署")
private java.lang.String signPerson;
/**合同标题*/
@Excel(name = "合同标题", width = 15)
@ApiModelProperty(value = "合同标题")
private java.lang.String title;
/**合同甲方名称*/
@Excel(name = "合同甲方名称", width = 15)
@ApiModelProperty(value = "合同甲方名称")
private java.lang.String nameA;
/**合同乙方名称*/
@Excel(name = "合同乙方名称", width = 15)
@ApiModelProperty(value = "合同乙方名称")
private java.lang.String nameB;
@ApiModelProperty(value = "招聘者(甲方)签署状态")
private java.lang.Integer bossStatus;
/**招聘者(甲方)签字坐标*/
@Excel(name = "招聘者(甲方)签字坐标", width = 15)
@ApiModelProperty(value = "招聘者(甲方)签字坐标")
private java.lang.String bossPosition;
/**招聘者(甲方)签字页码*/
@Excel(name = "招聘者(甲方)签字页码", width = 15)
@ApiModelProperty(value = "招聘者(甲方)签字页码")
private java.lang.Integer bossPage;
/**招聘者(甲方)签名图片*/
@Excel(name = "招聘者(甲方)签名图片", width = 15)
@ApiModelProperty(value = "招聘者(甲方)签名图片")
private java.lang.String bossImage;
/**关联求职者id*/
@Excel(name = "关联求职者id", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")
@Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")
@ApiModelProperty(value = "关联求职者id")
private java.lang.String employeeId;
/**关联招聘者id*/
@Excel(name = "关联招聘者id", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")
@Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")
@ApiModelProperty(value = "关联招聘者id")
private java.lang.String bossId;
/**关联求职者id*/
@Excel(name = "关联求职者id", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")
@Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id")
@ApiModelProperty(value = "关联求职者id")
private java.lang.String personId;
//招聘者公司信息
@TableField(exist = false)
String companyName;
//求职者实名
@TableField(exist = false)
String employeeName;
}

+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/mapper/EmployContractMapper.java View File

@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 电子合同表
* @Author: jeecg-boot
* @Date: 2024-12-21
* @Date: 2025-02-07
* @Version: V1.0
*/
public interface EmployContractMapper extends BaseMapper<EmployContract> {


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/service/IEmployContractService.java View File

@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 电子合同表
* @Author: jeecg-boot
* @Date: 2024-12-21
* @Date: 2025-02-07
* @Version: V1.0
*/
public interface IEmployContractService extends IService<EmployContract> {


+ 1
- 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/service/impl/EmployContractServiceImpl.java View File

@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 电子合同表
* @Author: jeecg-boot
* @Date: 2024-12-21
* @Date: 2025-02-07
* @Version: V1.0
*/
@Service


+ 55
- 59
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/vue/EmployContractList.vue View File

@ -4,43 +4,6 @@
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="公司签署">
<j-dict-select-tag placeholder="请选择公司签署" v-model="queryParam.signCompany" dictCode="contract_status"/>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="求职者签署">
<j-dict-select-tag placeholder="请选择求职者签署" v-model="queryParam.signPerson" dictCode="contract_status"/>
</a-form-item>
</a-col>
<template v-if="toggleSearchStatus">
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="合同标题">
<a-input placeholder="请输入合同标题" v-model="queryParam.title"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="合同甲方名称">
<a-input placeholder="请输入合同甲方名称" v-model="queryParam.nameA"></a-input>
</a-form-item>
</a-col>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="合同乙方名称">
<a-input placeholder="请输入合同乙方名称" v-model="queryParam.nameB"></a-input>
</a-form-item>
</a-col>
</template>
<a-col :xl="6" :lg="7" :md="8" :sm="24">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
<a @click="handleToggleSearch" style="margin-left: 8px">
{{ toggleSearchStatus ? '收起' : '展开' }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
</span>
</a-col>
</a-row>
</a-form>
</div>
@ -160,45 +123,73 @@
}
},
{
title:'合同文件',
title:'标题',
align:"center",
dataIndex: 'fileContract',
dataIndex: 'title'
},
{
title:'合同模板文件pdf',
align:"center",
dataIndex: 'template',
scopedSlots: {customRender: 'fileSlot'}
},
{
title:'公司签署',
title:'合同文件pdf',
align:"center",
dataIndex: 'signCompany_dictText'
dataIndex: 'contract',
scopedSlots: {customRender: 'fileSlot'}
},
{
title:'求职者签署',
title:'求职者(乙方)签署状态',
align:"center",
dataIndex: 'signPerson_dictText'
dataIndex: 'employeeStatus_dictText'
},
{
title:'合同标题',
title:'求职者(乙方)签字坐标',
align:"center",
dataIndex: 'title'
dataIndex: 'employeePosition'
},
{
title:'合同甲方名称',
title:'求职者(乙方)签字页码',
align:"center",
dataIndex: 'nameA'
dataIndex: 'employeePage'
},
{
title:'合同乙方名称',
title:'求职者(乙方)签名图片',
align:"center",
dataIndex: 'nameB'
dataIndex: 'employeeImage',
scopedSlots: {customRender: 'imgSlot'}
},
{
title:'关联招聘者id',
title:'招聘者(甲方)签署状态',
align:"center",
dataIndex: 'bossId_dictText'
dataIndex: 'bossStatus_dictText'
},
{
title:'招聘者(甲方)签字坐标',
align:"center",
dataIndex: 'bossPosition'
},
{
title:'招聘者(甲方)签字页码',
align:"center",
dataIndex: 'bossPage'
},
{
title:'招聘者(甲方)签名图片',
align:"center",
dataIndex: 'bossImage',
scopedSlots: {customRender: 'imgSlot'}
},
{
title:'关联求职者id',
align:"center",
dataIndex: 'personId_dictText'
dataIndex: 'employeeId_dictText'
},
{
title:'关联招聘者id',
align:"center",
dataIndex: 'bossId_dictText'
},
{
title: '操作',
@ -234,14 +225,19 @@
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'fileContract',text:'合同文件',dictCode:''})
fieldList.push({type:'string',value:'signCompany',text:'公司签署',dictCode:'contract_status'})
fieldList.push({type:'string',value:'signPerson',text:'求职者签署',dictCode:'contract_status'})
fieldList.push({type:'string',value:'title',text:'合同标题',dictCode:''})
fieldList.push({type:'string',value:'nameA',text:'合同甲方名称',dictCode:''})
fieldList.push({type:'string',value:'nameB',text:'合同乙方名称',dictCode:''})
fieldList.push({type:'string',value:'title',text:'标题',dictCode:''})
fieldList.push({type:'Text',value:'template',text:'合同模板文件pdf',dictCode:''})
fieldList.push({type:'Text',value:'contract',text:'合同文件pdf',dictCode:''})
fieldList.push({type:'int',value:'employeeStatus',text:'求职者(乙方)签署状态',dictCode:'contract_status'})
fieldList.push({type:'Text',value:'employeePosition',text:'求职者(乙方)签字坐标',dictCode:''})
fieldList.push({type:'int',value:'employeePage',text:'求职者(乙方)签字页码',dictCode:''})
fieldList.push({type:'Text',value:'employeeImage',text:'求职者(乙方)签名图片',dictCode:''})
fieldList.push({type:'int',value:'bossStatus',text:'招聘者(甲方)签署状态',dictCode:'contract_status'})
fieldList.push({type:'Text',value:'bossPosition',text:'招聘者(甲方)签字坐标',dictCode:''})
fieldList.push({type:'int',value:'bossPage',text:'招聘者(甲方)签字页码',dictCode:''})
fieldList.push({type:'Text',value:'bossImage',text:'招聘者(甲方)签名图片',dictCode:''})
fieldList.push({type:'string',value:'employeeId',text:'关联求职者id',dictCode:"han_hai_member,nick_name,id"})
fieldList.push({type:'string',value:'bossId',text:'关联招聘者id',dictCode:"han_hai_member,nick_name,id"})
fieldList.push({type:'string',value:'personId',text:'关联求职者id',dictCode:"han_hai_member,nick_name,id"})
this.superFieldList = fieldList
}
}


+ 41
- 16
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/vue/modules/EmployContractForm.vue View File

@ -4,43 +4,68 @@
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="合同文件" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="fileContract">
<j-upload v-model="model.fileContract" ></j-upload>
<a-form-model-item label="标题" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="title">
<a-input v-model="model.title" placeholder="请输入标题" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="公司签署" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="signCompany">
<j-dict-select-tag type="list" v-model="model.signCompany" dictCode="contract_status" placeholder="请选择公司签署" />
<a-form-model-item label="合同模板文件pdf" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="template">
<j-upload v-model="model.template" ></j-upload>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="求职者签署" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="signPerson">
<j-dict-select-tag type="list" v-model="model.signPerson" dictCode="contract_status" placeholder="请选择求职者签署" />
<a-form-model-item label="合同文件pdf" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contract">
<j-upload v-model="model.contract" ></j-upload>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="合同标题" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="title">
<a-input v-model="model.title" placeholder="请输入合同标题" ></a-input>
<a-form-model-item label="求职者(乙方)签署状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeeStatus">
<j-dict-select-tag type="list" v-model="model.employeeStatus" dictCode="contract_status" placeholder="请选择求职者(乙方)签署状态" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="合同甲方名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="nameA">
<a-input v-model="model.nameA" placeholder="请输入合同甲方名称" ></a-input>
<a-form-model-item label="求职者(乙方)签字坐标" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeePosition">
<a-input v-model="model.employeePosition" placeholder="请输入求职者(乙方)签字坐标" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="合同乙方名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="nameB">
<a-input v-model="model.nameB" placeholder="请输入合同乙方名称" ></a-input>
<a-form-model-item label="求职者(乙方)签字页码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeePage">
<a-input-number v-model="model.employeePage" placeholder="请输入求职者(乙方)签字页码" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="关联招聘者id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bossId">
<j-dict-select-tag type="list" v-model="model.bossId" dictCode="han_hai_member,nick_name,id" placeholder="请选择关联招聘者id" />
<a-form-model-item label="求职者(乙方)签名图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeeImage">
<j-image-upload isMultiple v-model="model.employeeImage" ></j-image-upload>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="招聘者(甲方)签署状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bossStatus">
<j-dict-select-tag type="list" v-model="model.bossStatus" dictCode="contract_status" placeholder="请选择招聘者(甲方)签署状态" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="关联求职者id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="personId">
<j-dict-select-tag type="list" v-model="model.personId" dictCode="han_hai_member,nick_name,id" placeholder="请选择关联求职者id" />
<a-form-model-item label="招聘者(甲方)签字坐标" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bossPosition">
<a-input v-model="model.bossPosition" placeholder="请输入招聘者(甲方)签字坐标" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="招聘者(甲方)签字页码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bossPage">
<a-input-number v-model="model.bossPage" placeholder="请输入招聘者(甲方)签字页码" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="招聘者(甲方)签名图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bossImage">
<j-image-upload isMultiple v-model="model.bossImage" ></j-image-upload>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="关联求职者id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeeId">
<j-dict-select-tag type="list" v-model="model.employeeId" dictCode="han_hai_member,nick_name,id" placeholder="请选择关联求职者id" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="关联招聘者id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bossId">
<j-dict-select-tag type="list" v-model="model.bossId" dictCode="han_hai_member,nick_name,id" placeholder="请选择关联招聘者id" />
</a-form-model-item>
</a-col>
</a-row>


+ 92
- 69
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContract/vue3/EmployContract.data.ts View File

@ -5,137 +5,160 @@ import { render } from '/@/utils/common/renderUtils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '合同文件',
title: '标题',
align:"center",
dataIndex: 'fileContract',
dataIndex: 'title'
},
{
title: '合同模板文件pdf',
align:"center",
dataIndex: 'template',
slots: { customRender: 'fileSlot' },
},
{
title: '公司签署',
title: '合同文件pdf',
align:"center",
dataIndex: 'signCompany_dictText'
dataIndex: 'contract',
slots: { customRender: 'fileSlot' },
},
{
title: '求职者签署',
title: '求职者(乙方)签署状态',
align:"center",
dataIndex: 'signPerson_dictText'
dataIndex: 'employeeStatus_dictText'
},
{
title: '合同标题',
title: '求职者(乙方)签字坐标',
align:"center",
dataIndex: 'title'
dataIndex: 'employeePosition'
},
{
title: '合同甲方名称',
title: '求职者(乙方)签字页码',
align:"center",
dataIndex: 'nameA'
dataIndex: 'employeePage'
},
{
title: '合同乙方名称',
title: '求职者(乙方)签名图片',
align:"center",
dataIndex: 'nameB'
dataIndex: 'employeeImage',
customRender:render.renderAvatar,
},
{
title: '关联招聘者id',
title: '招聘者(甲方)签署状态',
align:"center",
dataIndex: 'bossId_dictText'
dataIndex: 'bossStatus_dictText'
},
{
title: '招聘者(甲方)签字坐标',
align:"center",
dataIndex: 'bossPosition'
},
{
title: '招聘者(甲方)签字页码',
align:"center",
dataIndex: 'bossPage'
},
{
title: '招聘者(甲方)签名图片',
align:"center",
dataIndex: 'bossImage',
customRender:render.renderAvatar,
},
{
title: '关联求职者id',
align:"center",
dataIndex: 'personId_dictText'
dataIndex: 'employeeId_dictText'
},
{
title: '关联招聘者id',
align:"center",
dataIndex: 'bossId_dictText'
},
];
//查询数据
export const searchFormSchema: FormSchema[] = [
{
label: "公司签署",
field: "signCompany",
component: 'JDictSelectTag',
componentProps:{
dictCode:"contract_status"
},
colProps: {span: 6},
},
{
label: "求职者签署",
field: "signPerson",
component: 'JDictSelectTag',
componentProps:{
dictCode:"contract_status"
},
colProps: {span: 6},
},
{
label: "合同标题",
field: "title",
component: 'Input',
colProps: {span: 6},
},
{
label: "合同甲方名称",
field: "nameA",
component: 'Input',
colProps: {span: 6},
},
{
label: "合同乙方名称",
field: "nameB",
component: 'Input',
colProps: {span: 6},
},
];
//表单数据
export const formSchema: FormSchema[] = [
{
label: '合同文件',
field: 'fileContract',
label: '标题',
field: 'title',
component: 'Input',
},
{
label: '合同模板文件pdf',
field: 'template',
component: 'JUpload',
componentProps:{
},
},
{
label: '合同文件pdf',
field: 'contract',
component: 'JUpload',
componentProps:{
},
},
{
label: '公司签署',
field: 'signCompany',
label: '求职者(乙方)签署状态',
field: 'employeeStatus',
component: 'JDictSelectTag',
componentProps:{
dictCode:"contract_status"
},
},
{
label: '求职者签署',
field: 'signPerson',
label: '求职者(乙方)签字坐标',
field: 'employeePosition',
component: 'Input',
},
{
label: '求职者(乙方)签字页码',
field: 'employeePage',
component: 'InputNumber',
},
{
label: '求职者(乙方)签名图片',
field: 'employeeImage',
component: 'JImageUpload',
componentProps:{
},
},
{
label: '招聘者(甲方)签署状态',
field: 'bossStatus',
component: 'JDictSelectTag',
componentProps:{
dictCode:"contract_status"
},
},
{
label: '合同标题',
field: 'title',
label: '招聘者(甲方)签字坐标',
field: 'bossPosition',
component: 'Input',
},
{
label: '合同甲方名称',
field: 'nameA',
component: 'Input',
label: '招聘者(甲方)签字页码',
field: 'bossPage',
component: 'InputNumber',
},
{
label: '合同乙方名称',
field: 'nameB',
component: 'Input',
label: '招聘者(甲方)签名图片',
field: 'bossImage',
component: 'JImageUpload',
componentProps:{
},
},
{
label: '关联招聘者id',
field: 'bossId',
label: '关联求职者id',
field: 'employeeId',
component: 'JDictSelectTag',
componentProps:{
dictCode:"han_hai_member,nick_name,id"
},
},
{
label: '关联求职者id',
field: 'personId',
label: '关联招聘者id',
field: 'bossId',
component: 'JDictSelectTag',
componentProps:{
dictCode:"han_hai_member,nick_name,id"


+ 171
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/controller/EmployContractTemplateController.java View File

@ -0,0 +1,171 @@
package org.jeecg.modules.employContractTemplate.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.employContractTemplate.entity.EmployContractTemplate;
import org.jeecg.modules.employContractTemplate.service.IEmployContractTemplateService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
/**
* @Description: 电子合同模板表
* @Author: jeecg-boot
* @Date: 2025-02-07
* @Version: V1.0
*/
@Api(tags="电子合同模板表")
@RestController
@RequestMapping("/employContractTemplate/employContractTemplate")
@Slf4j
public class EmployContractTemplateController extends JeecgController<EmployContractTemplate, IEmployContractTemplateService> {
@Autowired
private IEmployContractTemplateService employContractTemplateService;
/**
* 分页列表查询
*
* @param employContractTemplate
* @param pageNo
* @param pageSize
* @param req
* @return
*/
//@AutoLog(value = "电子合同模板表-分页列表查询")
@ApiOperation(value="电子合同模板表-分页列表查询", notes="电子合同模板表-分页列表查询")
@GetMapping(value = "/list")
public Result<IPage<EmployContractTemplate>> queryPageList(EmployContractTemplate employContractTemplate,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
QueryWrapper<EmployContractTemplate> queryWrapper = QueryGenerator.initQueryWrapper(employContractTemplate, req.getParameterMap());
Page<EmployContractTemplate> page = new Page<EmployContractTemplate>(pageNo, pageSize);
IPage<EmployContractTemplate> pageList = employContractTemplateService.page(page, queryWrapper);
return Result.OK(pageList);
}
/**
* 添加
*
* @param employContractTemplate
* @return
*/
@AutoLog(value = "电子合同模板表-添加")
@ApiOperation(value="电子合同模板表-添加", notes="电子合同模板表-添加")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody EmployContractTemplate employContractTemplate) {
employContractTemplateService.save(employContractTemplate);
return Result.OK("添加成功!");
}
/**
* 编辑
*
* @param employContractTemplate
* @return
*/
@AutoLog(value = "电子合同模板表-编辑")
@ApiOperation(value="电子合同模板表-编辑", notes="电子合同模板表-编辑")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody EmployContractTemplate employContractTemplate) {
employContractTemplateService.updateById(employContractTemplate);
return Result.OK("编辑成功!");
}
/**
* 通过id删除
*
* @param id
* @return
*/
@AutoLog(value = "电子合同模板表-通过id删除")
@ApiOperation(value="电子合同模板表-通过id删除", notes="电子合同模板表-通过id删除")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
employContractTemplateService.removeById(id);
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param ids
* @return
*/
@AutoLog(value = "电子合同模板表-批量删除")
@ApiOperation(value="电子合同模板表-批量删除", notes="电子合同模板表-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.employContractTemplateService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
//@AutoLog(value = "电子合同模板表-通过id查询")
@ApiOperation(value="电子合同模板表-通过id查询", notes="电子合同模板表-通过id查询")
@GetMapping(value = "/queryById")
public Result<EmployContractTemplate> queryById(@RequestParam(name="id",required=true) String id) {
EmployContractTemplate employContractTemplate = employContractTemplateService.getById(id);
if(employContractTemplate==null) {
return Result.error("未找到对应数据");
}
return Result.OK(employContractTemplate);
}
/**
* 导出excel
*
* @param request
* @param employContractTemplate
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, EmployContractTemplate employContractTemplate) {
return super.exportXls(request, employContractTemplate, EmployContractTemplate.class, "电子合同模板表");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, EmployContractTemplate.class);
}
}

+ 78
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/entity/EmployContractTemplate.java View File

@ -0,0 +1,78 @@
package org.jeecg.modules.employContractTemplate.entity;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Description: 电子合同模板表
* @Author: jeecg-boot
* @Date: 2025-02-07
* @Version: V1.0
*/
@Data
@TableName("employ_contract_template")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="employ_contract_template对象", description="电子合同模板表")
public class EmployContractTemplate implements Serializable {
private static final long serialVersionUID = 1L;
/**主键*/
@TableId(type = IdType.ASSIGN_ID)
@ApiModelProperty(value = "主键")
private java.lang.String id;
/**创建人*/
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建日期*/
@ApiModelProperty(value = "创建日期")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新日期*/
@ApiModelProperty(value = "更新日期")
private java.util.Date updateTime;
/**标题*/
@Excel(name = "标题", width = 15)
@ApiModelProperty(value = "标题")
private java.lang.String title;
/**合同模板文件pdf*/
@Excel(name = "合同模板文件pdf", width = 15)
@ApiModelProperty(value = "合同模板文件pdf")
private java.lang.String template;
/**求职者(乙方)签字坐标*/
@Excel(name = "求职者(乙方)签字坐标", width = 15)
@ApiModelProperty(value = "求职者(乙方)签字坐标")
private java.lang.String employeePosition;
/**求职者(乙方)签字页码*/
@Excel(name = "求职者(乙方)签字页码", width = 15)
@ApiModelProperty(value = "求职者(乙方)签字页码")
private java.lang.Integer employeePage;
/**招聘者(甲方)签字位置*/
@Excel(name = "招聘者(甲方)签字位置", width = 15)
@ApiModelProperty(value = "招聘者(甲方)签字位置")
private java.lang.String bossPosition;
/**招聘者(甲方)签字页码*/
@Excel(name = "招聘者(甲方)签字页码", width = 15)
@ApiModelProperty(value = "招聘者(甲方)签字页码")
private java.lang.Integer bossPage;
/**关联招聘者id*/
@Excel(name = "关联招聘者id", width = 15)
@ApiModelProperty(value = "关联招聘者id")
private java.lang.String userId;
}

+ 17
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/mapper/EmployContractTemplateMapper.java View File

@ -0,0 +1,17 @@
package org.jeecg.modules.employContractTemplate.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.employContractTemplate.entity.EmployContractTemplate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 电子合同模板表
* @Author: jeecg-boot
* @Date: 2025-02-07
* @Version: V1.0
*/
public interface EmployContractTemplateMapper extends BaseMapper<EmployContractTemplate> {
}

+ 5
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/mapper/xml/EmployContractTemplateMapper.xml View File

@ -0,0 +1,5 @@
<?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="org.jeecg.modules.employContractTemplate.mapper.EmployContractTemplateMapper">
</mapper>

+ 14
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/service/IEmployContractTemplateService.java View File

@ -0,0 +1,14 @@
package org.jeecg.modules.employContractTemplate.service;
import org.jeecg.modules.employContractTemplate.entity.EmployContractTemplate;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* @Description: 电子合同模板表
* @Author: jeecg-boot
* @Date: 2025-02-07
* @Version: V1.0
*/
public interface IEmployContractTemplateService extends IService<EmployContractTemplate> {
}

+ 19
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/service/impl/EmployContractTemplateServiceImpl.java View File

@ -0,0 +1,19 @@
package org.jeecg.modules.employContractTemplate.service.impl;
import org.jeecg.modules.employContractTemplate.entity.EmployContractTemplate;
import org.jeecg.modules.employContractTemplate.mapper.EmployContractTemplateMapper;
import org.jeecg.modules.employContractTemplate.service.IEmployContractTemplateService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
/**
* @Description: 电子合同模板表
* @Author: jeecg-boot
* @Date: 2025-02-07
* @Version: V1.0
*/
@Service
public class EmployContractTemplateServiceImpl extends ServiceImpl<EmployContractTemplateMapper, EmployContractTemplate> implements IEmployContractTemplateService {
}

+ 207
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue/EmployContractTemplateList.vue View File

@ -0,0 +1,207 @@
<template>
<a-card :bordered="false">
<!-- 查询区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div class="table-operator">
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<a-button type="primary" icon="download" @click="handleExportXls('电子合同模板表')">导出</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入</a-button>
</a-upload>
<!-- 高级查询区域 -->
<j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
<a-dropdown v-if="selectedRowKeys.length > 0">
<a-menu slot="overlay">
<a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
</a-menu>
<a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
<i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>
<a style="margin-left: 24px" @click="onClearSelected">清空</a>
</div>
<a-table
ref="table"
size="middle"
:scroll="{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange">
<template slot="htmlSlot" slot-scope="text">
<div v-html="text"></div>
</template>
<template slot="imgSlot" slot-scope="text,record">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
<img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
</template>
<template slot="fileSlot" slot-scope="text">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button
v-else
:ghost="true"
type="primary"
icon="download"
size="small"
@click="downloadFile(text)">
下载
</a-button>
</template>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">编辑</a>
<a-divider type="vertical" />
<a-dropdown>
<a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
<a-menu slot="overlay">
<a-menu-item>
<a @click="handleDetail(record)">详情</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<employ-contract-template-modal ref="modalForm" @ok="modalFormOk"></employ-contract-template-modal>
</a-card>
</template>
<script>
import '@/assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import EmployContractTemplateModal from './modules/EmployContractTemplateModal'
export default {
name: 'EmployContractTemplateList',
mixins:[JeecgListMixin, mixinDevice],
components: {
EmployContractTemplateModal
},
data () {
return {
description: '电子合同模板表管理页面',
//
columns: [
{
title: '#',
dataIndex: '',
key:'rowIndex',
width:60,
align:"center",
customRender:function (t,r,index) {
return parseInt(index)+1;
}
},
{
title:'标题',
align:"center",
dataIndex: 'title'
},
{
title:'合同模板文件pdf',
align:"center",
dataIndex: 'template'
},
{
title:'求职者(乙方)签字坐标',
align:"center",
dataIndex: 'employeePosition'
},
{
title:'求职者(乙方)签字页码',
align:"center",
dataIndex: 'employeePage'
},
{
title:'招聘者(甲方)签字位置',
align:"center",
dataIndex: 'bossPosition'
},
{
title:'招聘者(甲方)签字页码',
align:"center",
dataIndex: 'bossPage'
},
{
title:'关联招聘者id',
align:"center",
dataIndex: 'userId'
},
{
title: '操作',
dataIndex: 'action',
align:"center",
fixed:"right",
width:147,
scopedSlots: { customRender: 'action' }
}
],
url: {
list: "/employContractTemplate/employContractTemplate/list",
delete: "/employContractTemplate/employContractTemplate/delete",
deleteBatch: "/employContractTemplate/employContractTemplate/deleteBatch",
exportXlsUrl: "/employContractTemplate/employContractTemplate/exportXls",
importExcelUrl: "employContractTemplate/employContractTemplate/importExcel",
},
dictOptions:{},
superFieldList:[],
}
},
created() {
this.getSuperFieldList();
},
computed: {
importExcelUrl: function(){
return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
},
},
methods: {
initDictConfig(){
},
getSuperFieldList(){
let fieldList=[];
fieldList.push({type:'string',value:'title',text:'标题',dictCode:''})
fieldList.push({type:'Text',value:'template',text:'合同模板文件pdf',dictCode:''})
fieldList.push({type:'Text',value:'employeePosition',text:'求职者(乙方)签字坐标',dictCode:''})
fieldList.push({type:'int',value:'employeePage',text:'求职者(乙方)签字页码',dictCode:''})
fieldList.push({type:'Text',value:'bossPosition',text:'招聘者(甲方)签字位置',dictCode:''})
fieldList.push({type:'int',value:'bossPage',text:'招聘者(甲方)签字页码',dictCode:''})
fieldList.push({type:'string',value:'userId',text:'关联招聘者id',dictCode:''})
this.superFieldList = fieldList
}
}
}
</script>
<style scoped>
@import '~@assets/less/common.less';
</style>

+ 134
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue/modules/EmployContractTemplateForm.vue View File

@ -0,0 +1,134 @@
<template>
<a-spin :spinning="confirmLoading">
<j-form-container :disabled="formDisabled">
<a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
<a-row>
<a-col :span="24">
<a-form-model-item label="标题" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="title">
<a-input v-model="model.title" placeholder="请输入标题" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="合同模板文件pdf" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="template">
<a-input v-model="model.template" placeholder="请输入合同模板文件pdf" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="求职者(乙方)签字坐标" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeePosition">
<a-input v-model="model.employeePosition" placeholder="请输入求职者(乙方)签字坐标" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="求职者(乙方)签字页码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="employeePage">
<a-input-number v-model="model.employeePage" placeholder="请输入求职者(乙方)签字页码" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="招聘者(甲方)签字位置" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bossPosition">
<a-input v-model="model.bossPosition" placeholder="请输入招聘者(甲方)签字位置" ></a-input>
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="招聘者(甲方)签字页码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="bossPage">
<a-input-number v-model="model.bossPage" placeholder="请输入招聘者(甲方)签字页码" style="width: 100%" />
</a-form-model-item>
</a-col>
<a-col :span="24">
<a-form-model-item label="关联招聘者id" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="userId">
<a-input v-model="model.userId" placeholder="请输入关联招聘者id" ></a-input>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</template>
<script>
import { httpAction, getAction } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
export default {
name: 'EmployContractTemplateForm',
components: {
},
props: {
//
disabled: {
type: Boolean,
default: false,
required: false
}
},
data () {
return {
model:{
},
labelCol: {
xs: { span: 24 },
sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,
validatorRules: {
},
url: {
add: "/employContractTemplate/employContractTemplate/add",
edit: "/employContractTemplate/employContractTemplate/edit",
queryById: "/employContractTemplate/employContractTemplate/queryById"
}
}
},
computed: {
formDisabled(){
return this.disabled
},
},
created () {
//model
this.modelDefault = JSON.parse(JSON.stringify(this.model));
},
methods: {
add () {
this.edit(this.modelDefault);
},
edit (record) {
this.model = Object.assign({}, record);
this.visible = true;
},
submitForm () {
const that = this;
//
this.$refs.form.validate(valid => {
if (valid) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
},
}
}
</script>

+ 84
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue/modules/EmployContractTemplateModal.Style#Drawer.vue View File

@ -0,0 +1,84 @@
<template>
<a-drawer
:title="title"
:width="width"
placement="right"
:closable="false"
@close="close"
destroyOnClose
:visible="visible">
<employ-contract-template-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></employ-contract-template-form>
<div class="drawer-footer">
<a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
<a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
</div>
</a-drawer>
</template>
<script>
import EmployContractTemplateForm from './EmployContractTemplateForm'
export default {
name: 'EmployContractTemplateModal',
components: {
EmployContractTemplateForm
},
data () {
return {
title:"操作",
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
});
},
close () {
this.$emit('close');
this.visible = false;
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
handleCancel () {
this.close()
}
}
}
</script>
<style lang="less" scoped>
/** Button按钮间距 */
.ant-btn {
margin-left: 30px;
margin-bottom: 30px;
float: right;
}
.drawer-footer{
position: absolute;
bottom: -8px;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
</style>

+ 60
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue/modules/EmployContractTemplateModal.vue View File

@ -0,0 +1,60 @@
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@ok="handleOk"
:okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<employ-contract-template-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></employ-contract-template-form>
</j-modal>
</template>
<script>
import EmployContractTemplateForm from './EmployContractTemplateForm'
export default {
name: 'EmployContractTemplateModal',
components: {
EmployContractTemplateForm
},
data () {
return {
title:'',
width:800,
visible: false,
disableSubmit: false
}
},
methods: {
add () {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.add();
})
},
edit (record) {
this.visible=true
this.$nextTick(()=>{
this.$refs.realForm.edit(record);
})
},
close () {
this.$emit('close');
this.visible = false;
},
handleOk () {
this.$refs.realForm.submitForm();
},
submitCallback(){
this.$emit('ok');
this.visible = false;
},
handleCancel () {
this.close()
}
}
}
</script>

+ 61
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue3/EmployContractTemplate.api.ts View File

@ -0,0 +1,61 @@
import {defHttp} from '/@/utils/http/axios';
import {Modal} from 'ant-design-vue';
enum Api {
list = '/employContractTemplate/employContractTemplate/list',
save='/employContractTemplate/employContractTemplate/add',
edit='/employContractTemplate/employContractTemplate/edit',
deleteOne = '/employContractTemplate/employContractTemplate/delete',
deleteBatch = '/employContractTemplate/employContractTemplate/deleteBatch',
importExcel = '/employContractTemplate/employContractTemplate/importExcel',
exportXls = '/employContractTemplate/employContractTemplate/exportXls',
}
/**
* api
* @param params
*/
export const getExportUrl = Api.exportXls;
/**
* api
*/
export const getImportUrl = Api.importExcel;
/**
*
* @param params
*/
export const list = (params) =>
defHttp.get({url: Api.list, params});
/**
*
*/
export const deleteOne = (params,handleSuccess) => {
return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => {
handleSuccess();
});
}
/**
*
* @param params
*/
export const batchDelete = (params, handleSuccess) => {
Modal.confirm({
title: '确认删除',
content: '是否删除选中数据',
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => {
handleSuccess();
});
}
});
}
/**
*
* @param params
*/
export const saveOrUpdate = (params, isUpdate) => {
let url = isUpdate ? Api.edit : Api.save;
return defHttp.post({url: url, params});
}

+ 83
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue3/EmployContractTemplate.data.ts View File

@ -0,0 +1,83 @@
import {BasicColumn} from '/@/components/Table';
import {FormSchema} from '/@/components/Table';
import { rules} from '/@/utils/helper/validator';
import { render } from '/@/utils/common/renderUtils';
//列表数据
export const columns: BasicColumn[] = [
{
title: '标题',
align:"center",
dataIndex: 'title'
},
{
title: '合同模板文件pdf',
align:"center",
dataIndex: 'template'
},
{
title: '求职者(乙方)签字坐标',
align:"center",
dataIndex: 'employeePosition'
},
{
title: '求职者(乙方)签字页码',
align:"center",
dataIndex: 'employeePage'
},
{
title: '招聘者(甲方)签字位置',
align:"center",
dataIndex: 'bossPosition'
},
{
title: '招聘者(甲方)签字页码',
align:"center",
dataIndex: 'bossPage'
},
{
title: '关联招聘者id',
align:"center",
dataIndex: 'userId'
},
];
//查询数据
export const searchFormSchema: FormSchema[] = [
];
//表单数据
export const formSchema: FormSchema[] = [
{
label: '标题',
field: 'title',
component: 'Input',
},
{
label: '合同模板文件pdf',
field: 'template',
component: 'Input',
},
{
label: '求职者(乙方)签字坐标',
field: 'employeePosition',
component: 'Input',
},
{
label: '求职者(乙方)签字页码',
field: 'employeePage',
component: 'InputNumber',
},
{
label: '招聘者(甲方)签字位置',
field: 'bossPosition',
component: 'Input',
},
{
label: '招聘者(甲方)签字页码',
field: 'bossPage',
component: 'InputNumber',
},
{
label: '关联招聘者id',
field: 'userId',
component: 'Input',
},
];

+ 162
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue3/EmployContractTemplateList.vue View File

@ -0,0 +1,162 @@
<template>
<div>
<!--引用表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection">
<!--插槽:table标题-->
<template #tableTitle>
<a-button type="primary" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增</a-button>
<a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
<j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="onImportXls">导入</j-upload-button>
<a-dropdown v-if="checkedKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button>批量操作
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)"/>
</template>
<!--字段回显插槽-->
<template #htmlSlot="{text}">
<div v-html="text"></div>
</template>
<template #fileSlot="{text}">
<span v-if="!text" style="font-size: 12px;font-style: italic;">无文件</span>
<a-button v-else :ghost="true" type="primary" preIcon="ant-design:download-outlined" size="small" @click="downloadFile(text)">下载</a-button>
</template>
</BasicTable>
<!-- 表单区域 -->
<EmployContractTemplateModal @register="registerModal" @success="handleSuccess"></EmployContractTemplateModal>
</div>
</template>
<script lang="ts" name="employContractTemplate-employContractTemplate" setup>
import {ref, computed, unref} from 'vue';
import {BasicTable, useTable, TableAction} from '/@/components/Table';
import {useModal} from '/@/components/Modal';
import { useListPage } from '/@/hooks/system/useListPage'
import EmployContractTemplateModal from './components/EmployContractTemplateModal.vue'
import {columns, searchFormSchema} from './employContractTemplate.data';
import {list, deleteOne, batchDelete, getImportUrl,getExportUrl} from './employContractTemplate.api';
const checkedKeys = ref<Array<string | number>>([]);
//model
const [registerModal, {openModal}] = useModal();
//table
const { prefixCls,tableContext,onExportXls,onImportXls } = useListPage({
tableProps:{
title: '电子合同模板表',
api: list,
columns,
canResize:false,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
autoSubmitOnEnter:true,
showAdvancedButton:true,
fieldMapToTime: [
],
},
actionColumn: {
width: 120,
},
},
exportConfig: {
name:"电子合同模板表",
url: getExportUrl,
},
importConfig: {
url: getImportUrl
},
})
const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
/**
* 新增事件
*/
function handleAdd() {
openModal(true, {
isUpdate: false,
showFooter: true,
});
}
/**
* 编辑事件
*/
function handleEdit(record: Recordable) {
openModal(true, {
record,
isUpdate: true,
showFooter: true,
});
}
/**
* 详情
*/
function handleDetail(record: Recordable) {
openModal(true, {
record,
isUpdate: true,
showFooter: false,
});
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteOne({id: record.id}, reload);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await batchDelete({ids: checkedKeys.value}, reload);
}
/**
* 成功回调
*/
function handleSuccess() {
reload();
}
/**
* 操作栏
*/
function getTableAction(record){
return [
{
label: '编辑',
onClick: handleEdit.bind(null, record),
}
]
}
/**
* 下拉操作栏
*/
function getDropDownAction(record){
return [
{
label: '详情',
onClick: handleDetail.bind(null, record),
}, {
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
}
}
]
}
</script>
<style scoped>
</style>

+ 58
- 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/employContractTemplate/vue3/components/EmployContractTemplateModal.vue View File

@ -0,0 +1,58 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" :title="title" @ok="handleSubmit">
<BasicForm @register="registerForm"/>
</BasicModal>
</template>
<script lang="ts" setup>
import {ref, computed, unref} from 'vue';
import {BasicModal, useModalInner} from '/@/components/Modal';
import {BasicForm, useForm} from '/@/components/Form/index';
import {formSchema} from '../employContractTemplate.data';
import {saveOrUpdate} from '../employContractTemplate.api';
// Emits
const emit = defineEmits(['register','success']);
const isUpdate = ref(true);
//
const [registerForm, {setProps,resetFields, setFieldsValue, validate}] = useForm({
labelWidth: 150,
schemas: formSchema,
showActionButtonGroup: false,
});
//
const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => {
//
await resetFields();
setModalProps({confirmLoading: false,showCancelBtn:!!data?.showFooter,showOkBtn:!!data?.showFooter});
isUpdate.value = !!data?.isUpdate;
if (unref(isUpdate)) {
//
await setFieldsValue({
...data.record,
});
}
//
setProps({ disabled: !data?.showFooter })
});
//
const title = computed(() => (!unref(isUpdate) ? '新增' : '编辑'));
//
async function handleSubmit(v) {
try {
let values = await validate();
setModalProps({confirmLoading: true});
//
await saveOrUpdate(values, isUpdate.value);
//
closeModal();
//
emit('success');
} finally {
setModalProps({confirmLoading: false});
}
}
</script>
<style lang="less" scoped>
</style>

+ 7
- 2
jeecg-boot-module-system/jeecg-boot-module-system.iml View File

@ -286,10 +286,15 @@
<orderEntry type="library" name="Maven: org.jodd:jodd-upload:3.7.1" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.12.0" level="project" />
<orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.59" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-miniapp:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.github.binarywang:weixin-java-mp:3.5.0" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itext-asian:5.2.0" level="project" />
<orderEntry type="library" name="Maven: org.icepdf.os:icepdf-core:6.1.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.54" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-ext-jdk15on:1.54" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcpkix-jdk15on:1.54" level="project" />
<orderEntry type="library" name="Maven: javax.media:jai-core:1.1.3" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.6.6" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.6.6" level="project" />


+ 19
- 0
jeecg-boot-module-system/pom.xml View File

@ -74,6 +74,25 @@
<scope>compile</scope>
</dependency>
<!--pdf添加水印、文字、图片、印章-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<!--pdf转图片-->
<dependency>
<groupId>org.icepdf.os</groupId>
<artifactId>icepdf-core</artifactId>
<version>6.1.2</version>
</dependency>
</dependencies>
<build>


+ 77
- 6
jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/controller2/ContractController.java View File

@ -7,6 +7,7 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.apiBean.PageBean;
import org.jeecg.modules.apiService.ContractService;
import org.jeecg.modules.employContract.entity.EmployContract;
import org.jeecg.modules.employContractTemplate.entity.EmployContractTemplate;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@ -27,17 +28,87 @@ public class ContractController {
/******************************************************************************************************************/
//我的服务-电子合同
@ApiOperation(value="电子合同-获取电子合同列表", notes="role(用户类型): 0-个人 1-企业")
@ApiOperation(value="电子合同-列表", notes="role(用户类型): 0-个人 1-企业")
@RequestMapping(value = "/queryContractList", method = {RequestMethod.GET})
public Result<?> queryContractBossList(@RequestHeader("X-Access-Token")String token, String role, EmployContract employContract, PageBean pageBean){
public Result<?> queryContractList(@RequestHeader("X-Access-Token")String token, String role, EmployContract employContract, PageBean pageBean){
return contractService.queryContractList(token, role, employContract, pageBean);
}
//我的服务-电子合同
@ApiOperation(value="电子合同-根据id查询电子合同详情", notes="电子合同-根据id查询电子合同详情")
@RequestMapping(value = "/queryContracById", method = {RequestMethod.GET})
public Result<?> queryContracById(@RequestHeader("X-Access-Token") String token, String contractId){
return contractService.queryContracById(token, contractId);
@ApiOperation(value="电子合同-详情", notes="电子合同-详情")
@RequestMapping(value = "/queryContractById", method = {RequestMethod.GET})
public Result<?> queryContractById(@RequestHeader("X-Access-Token") String token, String contractId){
return contractService.queryContractById(token, contractId);
}
//我的服务-电子合同
@ApiOperation(value="电子合同-添加", notes="电子合同-添加")
@RequestMapping(value = "/addContract", method = {RequestMethod.POST})
public Result<?> addContract(@RequestHeader("X-Access-Token") String token, EmployContract contract){
return contractService.addContract(token, contract);
}
//我的服务-电子合同
@ApiOperation(value="电子合同-修改", notes="电子合同-修改")
@RequestMapping(value = "/updateContract", method = {RequestMethod.POST})
public Result<?> updateContract(@RequestHeader("X-Access-Token") String token, EmployContract contract){
return contractService.updateContract(token, contract);
}
//我的服务-电子合同
@ApiOperation(value="电子合同-删除", notes="电子合同-删除")
@RequestMapping(value = "/deleteContract", method = {RequestMethod.POST})
public Result<?> deleteContract(@RequestHeader("X-Access-Token") String token, String contractId){
return contractService.deleteContract(token, contractId);
}
//我的服务-电子合同
@ApiOperation(value="电子合同模板-列表", notes="电子合同模板-列表")
@RequestMapping(value = "/queryContractTemplateList", method = {RequestMethod.GET})
public Result<?> queryContractTemplateList(@RequestHeader("X-Access-Token")String token, PageBean pageBean){
return contractService.queryContractTemplateList(token, pageBean);
}
//我的服务-电子合同
@ApiOperation(value="电子合同模板-详情", notes="电子合同模板-详情")
@RequestMapping(value = "/queryContractTemplateById", method = {RequestMethod.GET})
public Result<?> queryContractTemplateById(@RequestHeader("X-Access-Token") String token, String contractTemplateId){
return contractService.queryContractTemplateById(token, contractTemplateId);
}
//我的服务-电子合同
@ApiOperation(value="电子合同模板-添加", notes="电子合同模板-添加")
@RequestMapping(value = "/addContractTemplate", method = {RequestMethod.POST})
public Result<?> addContractTemplate(@RequestHeader("X-Access-Token") String token, EmployContractTemplate contractTemplate){
return contractService.addContractTemplate(token, contractTemplate);
}
//我的服务-电子合同
@ApiOperation(value="电子合同模板-修改", notes="电子合同模板-修改")
@RequestMapping(value = "/updateContractTemplate", method = {RequestMethod.POST})
public Result<?> updateContractTemplate(@RequestHeader("X-Access-Token") String token, EmployContractTemplate contractTemplate){
return contractService.updateContractTemplate(token, contractTemplate);
}
//我的服务-电子合同
@ApiOperation(value="电子合同模板-删除", notes="电子合同模板-删除")
@RequestMapping(value = "/deleteContractTemplate", method = {RequestMethod.POST})
public Result<?> deleteContractTemplate(@RequestHeader("X-Access-Token") String token, String contractTemplateId){
return contractService.deleteContractTemplate(token, contractTemplateId);
}
//我的服务-电子合同
@ApiOperation(value="工具-pdf转图片base64", notes="工具-pdf转图片base64")
@RequestMapping(value = "/pdf2imagebase64", method = {RequestMethod.GET})
public Result<?> pdf2imagebase64(String pdfPath){
return contractService.pdf2imagebase64(pdfPath);
}
//我的服务-电子合同
@ApiOperation(value="工具-图片转pdf", notes="多个图片用;分隔")
@RequestMapping(value = "/image2pdf", method = {RequestMethod.GET})
public Result<?> image2pdf(String images){
return contractService.image2pdf(images);
}
}

+ 2
- 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/controller2/JobController.java View File

@ -28,8 +28,8 @@ public class JobController {
//查看工作列表
@ApiOperation(value="工作信息-查询工作信息列表", notes="工作信息-查询工作信息列表")
@RequestMapping(value = "/queryJobList", method = {RequestMethod.GET})
public Result<?> queryJobList(EmployJob employJob, PageBean pageBean){
return jobService.queryJobList(employJob, pageBean);
public Result<?> queryJobList(EmployJob employJob, String userId, PageBean pageBean){
return jobService.queryJobList(employJob, userId, pageBean);
}
//工作信息-根据Id查看工作详情


+ 13
- 13
jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/employController/EmployeeApiController.java View File

@ -143,18 +143,18 @@ public class EmployeeApiController {
return employeeApiService.queryResumeByUserId(token, pageBean);
}
//我的服务-电子合同
@ApiOperation(value="电子合同-获取电子合同列表", notes="电子合同-获取电子合同列表")
@RequestMapping(value = "/queryContractList", method = {RequestMethod.GET})
public Result<?> queryContractList(@RequestHeader("X-Access-Token") String token, EmployContract employContract, PageBean pageBean){
return employeeApiService.queryContractList(token, employContract, pageBean);
}
//我的服务-电子合同
@ApiOperation(value="电子合同-根据id查询电子合同详情", notes="电子合同-根据id查询电子合同详情")
@RequestMapping(value = "/queryContracById", method = {RequestMethod.GET})
public Result<?> queryContracById(@RequestHeader("X-Access-Token") String token, String contractId){
return employeeApiService.queryContracById(token, contractId);
}
// //我的服务-电子合同
// @ApiOperation(value="电子合同-获取电子合同列表", notes="电子合同-获取电子合同列表")
// @RequestMapping(value = "/queryContractList", method = {RequestMethod.GET})
// public Result<?> queryContractList(@RequestHeader("X-Access-Token") String token, EmployContract employContract, PageBean pageBean){
// return employeeApiService.queryContractList(token, employContract, pageBean);
// }
//
// //我的服务-电子合同
// @ApiOperation(value="电子合同-根据id查询电子合同详情", notes="电子合同-根据id查询电子合同详情")
// @RequestMapping(value = "/queryContracById", method = {RequestMethod.GET})
// public Result<?> queryContracById(@RequestHeader("X-Access-Token") String token, String contractId){
// return employeeApiService.queryContracById(token, contractId);
// }
}

+ 75
- 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/ContractService.java View File

@ -1,8 +1,12 @@
package org.jeecg.modules.apiService;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.apiBean.PageBean;
import org.jeecg.modules.employContract.entity.EmployContract;
import org.jeecg.modules.employContractTemplate.entity.EmployContractTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
public interface ContractService {
@ -22,6 +26,76 @@ public interface ContractService {
* @param contractId
* @return
*/
public Result<?> queryContracById(String token, String contractId);
public Result<?> queryContractById(String token, String contractId);
/**
* 添加电子合同信息
* @param token
* @param contract
* @return
*/
public Result<?> addContract(String token, EmployContract contract);
/**
* 修改电子合同信息
* @param token
* @param contract
* @return
*/
public Result<?> updateContract(String token, EmployContract contract);
/**
* 修改电子合同信息
* @param token
* @param contractId
* @return
*/
public Result<?> deleteContract(String token, String contractId);
/**
* 电子合同模板-获取电子合同模板列表
* @param token
* @param pageBean
* @return
*/
public Result<?> queryContractTemplateList(String token, PageBean pageBean);
/**
* 电子合同模板-获取电子合同模板详情
* @param token
* @param contractTemplateId
* @return
*/
public Result<?> queryContractTemplateById(String token, String contractTemplateId);
/**
* 添加电子合同模板信息
* @param token
* @param contractTemplate
* @return
*/
public Result<?> addContractTemplate(String token, EmployContractTemplate contractTemplate);
/**
* 修改电子合同模板信息
* @param token
* @param contractTemplate
* @return
*/
public Result<?> updateContractTemplate(String token, EmployContractTemplate contractTemplate);
/**
* 删除电子合同模板信息
* @param token
* @param contractTemplateId
* @return
*/
public Result<?> deleteContractTemplate(String token, String contractTemplateId);
//工具-pdf转图片base64
public Result<?> pdf2imagebase64(String pdfPath);
//工具-图片转pdf(多个图片用;分隔)
public Result<?> image2pdf(String images);
}

+ 1
- 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/JobService.java View File

@ -13,7 +13,7 @@ public interface JobService {
* @param pageBean
* @return
*/
public Result<?> queryJobList(EmployJob employJob, PageBean pageBean);
public Result<?> queryJobList(EmployJob employJob, String userId, PageBean pageBean);
/**
* 根据id查看工作详情


+ 4
- 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/BossApiServiceImpl.java View File

@ -396,11 +396,11 @@ public class BossApiServiceImpl implements BossApiService {
.eq(EmployContract::getBossId, hanHaiMember.getId());
//组装查询条件
if(null != employContract.getSignCompany()){
query.like(EmployContract::getSignCompany, employContract.getSignCompany());
if(null != employContract.getBossStatus()){
query.like(EmployContract::getBossStatus, employContract.getBossStatus());
}
if(null != employContract.getSignPerson()){
query.like(EmployContract::getSignPerson, employContract.getSignPerson());
if(null != employContract.getEmployeeStatus()){
query.like(EmployContract::getEmployeeStatus, employContract.getEmployeeStatus());
}
//获取电子合同信息


+ 2
- 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/CheckServiceImpl.java View File

@ -125,7 +125,8 @@ public class CheckServiceImpl implements CheckService {
@Override
public Result<?> queryWatchMeBoss(String token, PageBean pageBean) {
//权限验证
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
//HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
HanHaiMember hanHaiMember = hanHaiMemberService.getById("1870164829569347586");
try{
//查询我发布的工作列表


+ 12
- 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/CollectionServiceImpl.java View File

@ -5,6 +5,8 @@ import org.jeecg.common.api.vo.Result;
import org.jeecg.config.shiro.ShiroRealm;
import org.jeecg.modules.apiBean.PageBean;
import org.jeecg.modules.apiService.CollectionService;
import org.jeecg.modules.employAuthenticationPerson.entity.EmployAuthenticationPerson;
import org.jeecg.modules.employAuthenticationPerson.service.IEmployAuthenticationPersonService;
import org.jeecg.modules.employCollectionJob.entity.EmployCollectionJob;
import org.jeecg.modules.employCollectionJob.service.IEmployCollectionJobService;
import org.jeecg.modules.employCollectionResume.entity.EmployCollectionResume;
@ -58,6 +60,10 @@ public class CollectionServiceImpl implements CollectionService {
//简历收藏表
@Resource
private IEmployCollectionResumeService employCollectionResumeService;
//用户实名信息表
@Resource
private IEmployAuthenticationPersonService employAuthenticationPersonService;
/******************************************************************************************************************/
//我的收藏-收藏工作信息
@ -154,6 +160,12 @@ public class CollectionServiceImpl implements CollectionService {
//获取用户信息
HanHaiMember member = hanHaiMemberService.getById(resume.getUserId());
resume.setHanHaiMember(member);
//获取用户实名信息
EmployAuthenticationPerson ahthenticationPerson = employAuthenticationPersonService
.lambdaQuery()
.eq(EmployAuthenticationPerson::getUserId, resume.getUserId())
.one();
resume.setEmployAuthenticationPerson(ahthenticationPerson);
//获取工作性质信息
EmployNature nature = employNatureService.getById(resume.getNatureId());
resume.setNatureId_dictText(nature.getName());


+ 364
- 26
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/ContractServiceImpl.java View File

@ -2,6 +2,12 @@ package org.jeecg.modules.apiService.impl;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import org.icepdf.core.util.GraphicsRenderingHints;
import org.jeecg.common.api.vo.Result;
import org.jeecg.config.shiro.ShiroRealm;
import org.jeecg.modules.apiBean.PageBean;
@ -12,12 +18,21 @@ import org.jeecg.modules.employAuthenticationPerson.entity.EmployAuthenticationP
import org.jeecg.modules.employAuthenticationPerson.service.IEmployAuthenticationPersonService;
import org.jeecg.modules.employContract.entity.EmployContract;
import org.jeecg.modules.employContract.service.IEmployContractService;
import org.jeecg.modules.employContractTemplate.entity.EmployContractTemplate;
import org.jeecg.modules.employContractTemplate.service.IEmployContractTemplateService;
import org.jeecg.modules.employResume.entity.EmployResume;
import org.jeecg.modules.employResume.service.IEmployResumeService;
import org.jeecg.modules.hanHaiMember.entity.HanHaiMember;
import org.springframework.stereotype.Service;
import sun.misc.BASE64Encoder;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
@Service
public class ContractServiceImpl implements ContractService {
@ -27,6 +42,9 @@ public class ContractServiceImpl implements ContractService {
@Resource
private ShiroRealm shiroRealm;
//电子合同模板表
@Resource
private IEmployContractTemplateService employContractTemplateService;
//电子合同表
@Resource
@ -61,23 +79,39 @@ public class ContractServiceImpl implements ContractService {
//组装查询条件
if("0".equals(role)){
//用户为个人
query.eq(EmployContract::getPersonId, hanHaiMember.getId());
query.eq(EmployContract::getEmployeeId, hanHaiMember.getId());
}else if("1".equals(role)){
//用户为企业
query.eq(EmployContract::getBossId, hanHaiMember.getId());
}else {
return Result.error("角色类型输入错误,电子合同列表查询失败");
}
if(null != employContract.getSignCompany()){
query.eq(EmployContract::getSignCompany, employContract.getSignCompany());
if(null != employContract.getBossStatus()){
query.eq(EmployContract::getBossStatus, employContract.getBossStatus());
}
if(null != employContract.getSignPerson()){
query.eq(EmployContract::getSignPerson, employContract.getSignPerson());
if(null != employContract.getEmployeeStatus()){
query.eq(EmployContract::getEmployeeStatus, employContract.getEmployeeStatus());
}
//获取电子合同信息
Page<EmployContract> pageList = query.page(page);
//电子合同补充公司名称
for (EmployContract record : pageList.getRecords()) {
EmployAhthenticationCompany company = ahthenticationCompanyService
.lambdaQuery()
.eq(EmployAhthenticationCompany::getUserId, record.getBossId())
.one();
record.setCompanyName(company.getCompanyName());
//补充招聘者实名信息
EmployAuthenticationPerson person = authenticationPersonService
.lambdaQuery()
.eq(EmployAuthenticationPerson::getUserId, record.getEmployeeId())
.one();
record.setEmployeeName(person.getName());
}
return Result.OK("电子合同列表", pageList);
}catch (Exception e){
e.printStackTrace();
@ -88,7 +122,7 @@ public class ContractServiceImpl implements ContractService {
//电子合同-获取电子合同详情
@Override
public Result<?> queryContracById(String token, String contractId) {
public Result<?> queryContractById(String token, String contractId) {
//权限验证
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
@ -98,6 +132,20 @@ public class ContractServiceImpl implements ContractService {
.eq(EmployContract::getId, contractId)
.one();
//补充公司名称
EmployAhthenticationCompany company = ahthenticationCompanyService
.lambdaQuery()
.eq(EmployAhthenticationCompany::getUserId, one.getBossId())
.one();
one.setCompanyName(company.getCompanyName());
//补充招聘者实名信息
EmployAuthenticationPerson person = authenticationPersonService
.lambdaQuery()
.eq(EmployAuthenticationPerson::getUserId, one.getEmployeeId())
.one();
one.setEmployeeName(person.getName());
return Result.OK("电子合同详情", one);
}catch (Exception e){
e.printStackTrace();
@ -106,48 +154,338 @@ public class ContractServiceImpl implements ContractService {
}
//添加电子合同信息
public Result<?> addContract(String token, String resumeId) {
@Override
public Result<?> addContract(String token, EmployContract contract) {
//权限验证
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
//返回信息
String message = "电子合同添加失败!";
//电子合同对象
EmployContract contract = new EmployContract();
try{
//获取招聘者id
//执行合同添加操作
contract.setBossId(hanHaiMember.getId());
boolean result = employContractService.save(contract);
if(result){
return Result.OK("电子合同添加成功");
}else {
return Result.error("电子合同添加失败");
}
//获取招聘者实名公司名称
EmployAhthenticationCompany company = ahthenticationCompanyService
}catch (Exception e){
e.printStackTrace();
return Result.error("电子合同添加失败");
}
}
//修改电子合同信息
@Override
public Result<?> updateContract(String token, EmployContract contract) {
//权限验证
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
//返回信息
String message = "电子合同修改失败!";
try{
//执行合同添加操作
boolean result = employContractService.updateById(contract);
if(result){
return Result.OK("电子合同修改成功");
}else {
return Result.error("电子合同修改失败");
}
}catch (Exception e){
e.printStackTrace();
return Result.error("电子合同修改失败");
}
}
//修改电子合同信息
@Override
public Result<?> deleteContract(String token, String contractId) {
//权限验证
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
//返回信息
String message = "电子合同删除失败!";
try{
//执行合同添加操作
boolean result = employContractService.removeById(contractId);
if(result){
return Result.OK("电子合同删除成功");
}else {
return Result.error("电子合同删除失败");
}
}catch (Exception e){
e.printStackTrace();
return Result.error("电子合同删除失败");
}
}
/*********************************************电子合同模板***********************************************************/
//电子合同模板-获取电子合同模板列表
@Override
public Result<?> queryContractTemplateList(String token, PageBean pageBean) {
//权限验证
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
try{
//分页
Page<EmployContractTemplate> page = new Page<EmployContractTemplate>(pageBean.getPageNo(), pageBean.getPageSize());
LambdaQueryChainWrapper<EmployContractTemplate> query = employContractTemplateService
.lambdaQuery()
.eq(EmployAhthenticationCompany::getUserId, hanHaiMember.getId())
.one();
contract.setNameA(company.getCompanyName());
.eq(EmployContractTemplate::getUserId, hanHaiMember.getId());
//获取求职者id
EmployResume resume = employResumeService.getById(resumeId);
contract.setPersonId(resume.getUserId());
//组装查询条件
query.eq(EmployContractTemplate::getUserId, hanHaiMember.getId());
//获取实名用户姓名
EmployAuthenticationPerson person = authenticationPersonService
//获取电子合同信息
Page<EmployContractTemplate> pageList = query.page(page);
return Result.OK("电子合同列表", pageList);
}catch (Exception e){
e.printStackTrace();
return Result.error("电子合同列表查询失败");
}
}
//电子合同模板-获取电子合同模板详情
@Override
public Result<?> queryContractTemplateById(String token, String contractTemplateId) {
//权限验证
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
try{
EmployContractTemplate one = employContractTemplateService
.lambdaQuery()
.eq(EmployAuthenticationPerson::getUserId, resume.getUserId())
.eq(EmployContractTemplate::getId, contractTemplateId)
.one();
contract.setNameB(person.getName());
return Result.OK("电子合同模板详情", one);
}catch (Exception e){
e.printStackTrace();
return Result.error("电子合同模板详情查询失败");
}
}
//添加电子合同模板信息
public Result<?> addContractTemplate(String token, EmployContractTemplate template) {
//权限验证
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
//返回信息
String message = "电子合同模板添加失败!";
try{
//执行合同添加操作
boolean result = employContractService.save(contract);
template.setUserId(hanHaiMember.getId());
boolean result = employContractTemplateService.save(template);
if(result){
return Result.OK("电子合同添加成功");
return Result.OK("电子合同模板添加成功");
}else {
return Result.error("电子合同添加失败");
return Result.error("电子合同模板添加失败");
}
}catch (Exception e){
e.printStackTrace();
return Result.error("电子合同添加失败");
return Result.error("电子合同模板添加失败");
}
}
//修改电子合同模板信息
public Result<?> updateContractTemplate(String token, EmployContractTemplate template) {
//权限验证
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
//返回信息
String message = "电子合同模板修改失败!";
try{
//执行合同添加操作
boolean result = employContractTemplateService.updateById(template);
if(result){
return Result.OK("电子合同模板修改成功");
}else {
return Result.error("电子合同模板修改失败");
}
}catch (Exception e){
e.printStackTrace();
return Result.error("电子合同模板修改失败");
}
}
//删除电子合同模板信息
@Override
public Result<?> deleteContractTemplate(String token, String templateId) {
//权限验证
HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token);
//返回信息
String message = "电子合同模板删除失败!";
try{
//执行合同添加操作
boolean result = employContractTemplateService.removeById(templateId);
if(result){
return Result.OK("电子合同模板删除成功");
}else {
return Result.error("电子合同模板删除失败");
}
}catch (Exception e){
e.printStackTrace();
return Result.error("电子合同模板删除失败");
}
}
/*********************************************图片与pdf互转*********************************************************/
//pdf转图片base64(一张pdf转成多个base64图片)
@Override
public Result<?> pdf2imagebase64(String pdfPath){
//String pdfPath = "F:\\upload\\test_1736767131255.pdf";//pdf文件路径
//获取当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date now = new Date();
String formattedDate = sdf.format(now);
System.out.println(formattedDate);
String imagePath = "F:\\temp\\";//图片文件路径
String fileName = formattedDate +"image_";//图片文件名字
//文件流对象
InputStream in = null;
List<String> pathList = new ArrayList<>();//图片路径列表
List<String> codeList = new ArrayList<>();//base64列表
Map<String, Object> map = new HashMap<>();
try{
org.icepdf.core.pobjects.Document document = new org.icepdf.core.pobjects.Document();
document.setFile(pdfPath);
float scale = 2.5f;//缩放比例
float rotation = 0f;//旋转角度
//pdf转图片
for (int i = 0; i < document.getNumberOfPages(); i++) {
BufferedImage image = (BufferedImage)
document.getPageImage(i, GraphicsRenderingHints.SCREEN, org.icepdf.core.pobjects.Page.BOUNDARY_CROPBOX, rotation, scale);
RenderedImage rendImage = image;
File fileDir = new File(imagePath);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
String imgName = fileName + i + ".png";//图片名称
String filePath = imagePath + imgName;//图片文件路径
File file = new File(filePath);
ImageIO.write(rendImage, "png", file);
image.flush();
pathList.add(filePath);
}
document.dispose();//关闭流
//图片转base64
for (String path : pathList) {
String imgFile = path;// 待处理的图片
byte[] data = null;
String encode = null; // 返回Base64编码过的字节数组字符串
BASE64Encoder encoder = new BASE64Encoder();// 对字节数组Base64编码
// 读取图片字节数组
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
encode = encoder.encode(data);
codeList.add(encode);
}
return Result.OK("pdf转图片base64成功", codeList);
}catch (Exception e){
e.printStackTrace();
return Result.error("pdf转图片base64失败", codeList);
}finally {
try{
if(null != in){
in.close();//关闭文件流
}
}catch (Exception e){
e.printStackTrace();
return Result.error("pdf转图片base64失败", codeList);
}
}
}
//图片转pdf
public Result<?> image2pdf(String images){
//获取当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date now = new Date();
String formattedDate = sdf.format(now);
System.out.println(formattedDate);
//String images = "F:\\temp\\image_0.png;F:\\temp\\image_1.png;F:\\temp\\image_2.png";//图片文件地址
String pdfPath = "F:\\temp\\"+formattedDate+".pdf"; // 输出pdf文件路径
String[] imageList = images.split(";");
try{
ArrayList<String> imageUrllist = new ArrayList<String>(); //图片list集合
for (int i=0; i<imageList.length; i++) {
imageUrllist.add(imageList[i]);
}
File file = Pdf(imageUrllist, pdfPath);//生成pdf
file.createNewFile();
return Result.OK("图片转pdf成功", pdfPath);
}catch (Exception e){
e.printStackTrace();
return Result.error("图片转pdf失败", pdfPath);
}
}
//生成pdf
public static File Pdf(ArrayList<String> imageUrllist, String mOutputPdfFileName) {
Document doc = new Document(PageSize.A4, 0, 0, 0, 0); //new一个pdf文档
try {
PdfWriter.getInstance(doc, new FileOutputStream(mOutputPdfFileName)); //pdf写入
doc.open();//打开文档
for (int i = 0; i < imageUrllist.size(); i++) { //循环图片List将图片加入到pdf中
doc.newPage(); //在pdf创建一页
Image png1 = Image.getInstance(imageUrllist.get(i)); //通过文件路径获取image
float heigth = png1.getHeight();
float width = png1.getWidth();
int percent = getPercent2(heigth, width);
png1.setAlignment(Image.MIDDLE);
png1.scalePercent(percent + 3);// 表示是原来图像的比例;
doc.add(png1);
}
doc.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
File mOutputPdfFile = new File(mOutputPdfFileName); //输出流
if (!mOutputPdfFile.exists()) {
mOutputPdfFile.deleteOnExit();
return null;
}
return mOutputPdfFile; //反回文件输出流
}
public static int getPercent2(float h, float w) {
int p = 0;
float p2 = 0.0f;
p2 = 530 / w * 100;
p = Math.round(p2);
return p;
}
}

+ 9
- 11
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/EmployeeApiServiceImpl.java View File

@ -564,16 +564,15 @@ public class EmployeeApiServiceImpl implements EmployeeApiService {
//分页
Page<EmployContract> page = new Page<EmployContract>(pageBean.getPageNo(), pageBean.getPageSize());
LambdaQueryChainWrapper<EmployContract> query = employContractService
.lambdaQuery()
.eq(EmployContract::getPersonId, hanHaiMember.getId());
//组装查询条件
if(null != employContract.getSignCompany()){
query.like(EmployContract::getSignCompany, employContract.getSignCompany());
}
if(null != employContract.getSignPerson()){
query.like(EmployContract::getSignPerson, employContract.getSignPerson());
}
.lambdaQuery();
//
// //组装查询条件
// if(null != employContract.getSignCompany()){
// query.like(EmployContract::getSignCompany, employContract.getSignCompany());
// }
// if(null != employContract.getSignPerson()){
// query.like(EmployContract::getSignPerson, employContract.getSignPerson());
// }
//获取电子合同信息
Page<EmployContract> pageList = query.page(page);
@ -596,7 +595,6 @@ public class EmployeeApiServiceImpl implements EmployeeApiService {
EmployContract one = employContractService
.lambdaQuery()
.eq(EmployContract::getId, contractId)
.eq(EmployContract::getPersonId, hanHaiMember.getId())
.one();
return Result.OK("电子合同详情", one);


+ 5
- 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/JobServiceImpl.java View File

@ -69,7 +69,7 @@ public class JobServiceImpl implements JobService {
//查询工作信息列表
@Override
public Result<?> queryJobList(EmployJob employJob, PageBean pageBean) {
public Result<?> queryJobList(EmployJob employJob, String userId, PageBean pageBean) {
//返回信息
String message = "获取工作信息列表失败!";
//工作信息列表
@ -103,6 +103,10 @@ public class JobServiceImpl implements JobService {
//工作岗位名称
query.like(EmployJob::getTitle, employJob.getTitle());
}
if(null != userId){
//工作岗位发布人id
query.like(EmployJob::getUserId, userId);
}
//按时间倒序
query.orderByDesc(EmployJob::getCreateTime);


+ 18
- 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/ShareServiceImpl.java View File

@ -14,6 +14,8 @@ import org.jeecg.modules.apiService.ShareService;
import org.jeecg.modules.employConfig.entity.EmployConfig;
import org.jeecg.modules.employConfig.service.IEmployConfigService;
import org.jeecg.modules.hanHaiMember.entity.HanHaiMember;
import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
@ -36,16 +38,28 @@ public class ShareServiceImpl implements ShareService {
@Resource
private ShiroRealm shiroRealm;
//配置信息
@Resource
private IHanHaiMemberService hanHaiMemberService;
//配置信息
@Resource
private IEmployConfigService employConfigService;
private String appid = "wxe631bce44d54667e";//小程序appid
private String secret = "2f19c405ea9bb523f350b5a9fd01b878";//小程序密钥
private String endpoint = "oss-cn-guangzhou.aliyuncs.com";
private String accessKey = "LTAI5tPfZo39q2r9Sr5mW84u";
private String secretKey = "XxExGallsV4O9nERHpVsQg2XtPCU7r";
private String bucketName = "augcl";
@Value("${jeecg.oss.endpoint}")
private String endpoint;
@Value("${jeecg.oss.accessKey}")
private String accessKey;
@Value("${jeecg.oss.secretKey}")
private String secretKey;
@Value("${jeecg.oss.bucketName}")
private String bucketName;
// private String endpoint = "oss-cn-beijing.aliyuncs.com";
// private String accessKey = "LTAI5t5nV2Pw67wVC9ZvtFSb";
// private String secretKey = "perarQgbRK9TPNNb2G97EojoJ6kb9H";
// private String bucketName = "teyizhaoimg";
/*************************************************************************************/
//获取个人推荐二维码


+ 3
- 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/VipServiceImpl.java View File

@ -51,6 +51,7 @@ public class VipServiceImpl implements VipService {
EmployVipRecord vipRecord = new EmployVipRecord();
String payNo = IdWorker.getIdStr();//生成订单号
vipRecord.setPayNo(payNo);//订单号
vipRecord.setId(payNo);//订单号
vipRecord.setUserId(hanHaiMember.getId());//关联用户id
vipRecord.setVipTypeId(vipTypeId);//会员类型id
@ -72,9 +73,9 @@ public class VipServiceImpl implements VipService {
Object appOrder = mpWxPayService.createOrder(
"购买"+ productName ,
"127.0.0.1",
payNo,
vipRecord.getId(),
i1,
payNo,
vipRecord.getId(),
hanHaiMember.getAppletOpenid(),
vipRecord.toString());


+ 1
- 1
jeecg-boot-module-system/src/main/resources/application-dev.yml View File

@ -196,7 +196,7 @@ jeecg :
secretKey: perarQgbRK9TPNNb2G97EojoJ6kb9H
endpoint: oss-cn-beijing.aliyuncs.com
bucketName: teyizhaoimg
staticDomain: https://img.teyizhao.com
staticDomain: https://img.teyizhao.com/
# ElasticSearch 6设置
elasticsearch:
cluster-name: jeecg-ES


Loading…
Cancel
Save