Browse Source

oaMendApply申请新增修改为与oaform表单关联的方法,重构新增修改方法

master
dimengzhe 5 months ago
parent
commit
c444ee35aa
  1. 6
      yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaMendApplyRest.java
  2. 2
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormDto.java
  3. 4
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.java
  4. 16
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.xml
  5. 7
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java
  6. 35
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApply.java
  7. 22
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyDto.java
  8. 136
      yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyService.java

6
yxt-oa/src/main/java/com/yxt/anrui/oa/api/OaMendApplyRest.java

@ -74,10 +74,8 @@ public class OaMendApplyRest {
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean save(@RequestBody OaMendApplyDto dto){
ResultBean rb = ResultBean.fireFail();
oaMendApplyService.saveOrUpdateDto(dto);
return rb.success();
public ResultBean<String> save(@RequestBody OaMendApplyDto dto){
return oaMendApplyService.saveOrUpdateDto(dto);
}
@ApiOperation("根据sid批量删除")

2
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormDto.java

@ -15,7 +15,7 @@ import java.util.Date;
public class OaFormDto {
private String sid;
private String createBySid;
@ApiModelProperty("创建人")
private String createByName;
@ApiModelProperty("公司sid")

4
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.java

@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
@ -17,4 +19,6 @@ public interface OaFormMapper extends BaseMapper<OaForm> {
OaFormDetailsVo fetchDetailsBySid(String sid);
IPage<OaFormVo> selectPageVo(IPage<OaForm> page, @Param(Constants.WRAPPER) QueryWrapper<OaForm> qw);
int updateFlowFiled(Map<String, Object> map);
}

16
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormMapper.xml

@ -15,4 +15,20 @@
${ew.sqlSegment}
</where>
</select>
<update id="updateFlowFiled">
UPDATE oa_form
SET nodeState=#{nodeState}
, nodeId=#{taskDefKey}
<if test="procDefId != null and procDefId != ''">
, procDefId=#{procDefId}
</if>
<if test="procInsId != null and procInsId != ''">
, procInstId=#{procInsId}
</if>
<if test="taskId != null and taskId != ''">
, taskId=#{taskId}
</if>
WHERE sid = #{sid}
</update>
</mapper>

7
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java

@ -7,6 +7,7 @@ import com.yxt.anrui.oa.biz.oahireapply.OaHireApplyDetailsVo;
import com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApply;
import com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyQuery;
import com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyVo;
import com.yxt.anrui.oa.feign.flowable.flow.UpdateFlowFieldVo;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils;
@ -16,6 +17,8 @@ import com.yxt.common.core.vo.PagerVo;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @description:
* @author: dimengzhe
@ -62,4 +65,8 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
delBySids(sids);
return rb.success();
}
public int updateFlow(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
}

35
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApply.java

@ -29,7 +29,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.anrui.oa.biz.oaform.OaForm;
import com.yxt.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -53,32 +55,35 @@ import lombok.Data;
public class OaMendApply extends OaForm {
private static final long serialVersionUID = 1L;
private String formSid;
@ApiModelProperty("单据编号")
private String billNo; // 单据编号
@ApiModelProperty("补卡时间")
private String time;
/* @ApiModelProperty("单据编号")
private String billNo;
@ApiModelProperty("申请人")
private String createByName; // 申请人
private String createByName;
@ApiModelProperty("申请部门sid")
private String deptSid; // 申请部门sid
private String deptSid;
@ApiModelProperty("申请部门名称")
private String deptName; // 申请部门名称
@ApiModelProperty("补卡时间")
private String time; // 补卡时间
private String deptName;
@ApiModelProperty("分公司sid")
private String useOrgSid; // 分公司sid
private String useOrgSid;
@ApiModelProperty("分公司名称")
private String useOrgName; // 分公司名称
private String useOrgName;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("办结日期")
private Date finishTime; // 办结日期
private Date finishTime;
@ApiModelProperty("实例id")
private String procInstId; // 实例id
private String procInstId;
@ApiModelProperty("流程定义id")
private String procDefId; // 流程定义id
private String procDefId;
@ApiModelProperty("任务id")
private String taskId; // 任务id
private String taskId;
@ApiModelProperty("环节id")
private String nodeId; // 环节id
private String nodeId;
@ApiModelProperty("流程状态")
private String nodeState; // 流程状态
private String nodeState;*/
}

22
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyDto.java

@ -64,30 +64,30 @@ public class OaMendApplyDto implements Dto {
@ApiModelProperty("单据编号")
private String billNo; // 单据编号
@ApiModelProperty("申请人")
private String createByName; // 申请人
private String createByName;
@ApiModelProperty("申请部门sid")
private String deptSid; // 申请部门sid
private String deptSid;
@ApiModelProperty("申请部门名称")
private String deptName; // 申请部门名称
private String deptName;
@ApiModelProperty("补卡时间")
private String time; // 补卡时间
private String time;
@ApiModelProperty("分公司sid")
private String useOrgSid; // 分公司sid
private String useOrgSid;
@ApiModelProperty("分公司名称")
private String useOrgName; // 分公司名称
private String useOrgName;
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@ApiModelProperty("办结日期")
private Date finishTime;
@ApiModelProperty("实例id")
private String procInstId; // 实例id
private String procInstId;
@ApiModelProperty("流程定义id")
private String procDefId; // 流程定义id
private String procDefId;
@ApiModelProperty("任务id")
private String taskId; // 任务id
private String taskId;
@ApiModelProperty("环节id")
private String nodeId; // 环节id
private String nodeId;
@ApiModelProperty("流程状态")
private String nodeState; // 流程状态
private String nodeState;
@ApiModelProperty("图片")
private List<String> files = new ArrayList<>();
}

136
yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oamendapply/OaMendApplyService.java

@ -33,6 +33,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.oa.biz.oaappendix.OaAppendix;
import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService;
import com.yxt.anrui.oa.biz.oaform.OaForm;
import com.yxt.anrui.oa.biz.oaform.OaFormDto;
import com.yxt.anrui.oa.biz.oaform.OaFormService;
import com.yxt.anrui.oa.biz.oamendapply.flowable.*;
import com.yxt.anrui.oa.feign.base.Rule;
import com.yxt.anrui.oa.feign.file.OaFileEnum;
@ -64,6 +67,7 @@ import com.yxt.common.core.vo.PagerVo;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.concurrent.*;
@ -90,6 +94,8 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
private FileUploadComponent fileUploadComponent;
@Autowired
private OaAppendixService oaAppendixService;
@Autowired
private OaFormService oaFormService;
public PagerVo<OaMendApplyVo> listPageVo(PagerQuery<OaMendApplyQuery> pq) {
OaMendApplyQuery query = pq.getParams();
@ -100,7 +106,7 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
return p;
}
public String saveOrUpdateDto(OaMendApplyDto dto){
public String saveOrUpdateDtoOld(OaMendApplyDto dto) {
String dtoSid = dto.getSid();
List<String> files = dto.getFiles();
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData();
@ -152,6 +158,113 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
return dtoSid;
}
@Transactional
public ResultBean<String> saveOrUpdateDto(OaMendApplyDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
String sid = dto.getSid();
List<String> files = dto.getFiles();
if (StringUtils.isBlank(sid)) {
// 新建操作
OaMendApply entity = new OaMendApply();
// 获取组织和部门信息
setOrgAndDeptInfo(dto);
// 生成单据编号
String billNo = generateBillNo(dto);
dto.setBillNo(billNo);
// 复制 DTO 数据到实体
BeanUtil.copyProperties(dto, entity, "sid");
entity.setCreateBySid(dto.getUserSid());
// 获取用户信息
SysUserVo sysUserVo = sysUserFeign.fetchBySid(dto.getUserSid()).getData();
entity.setCreateByName(sysUserVo.getName());
// 创建 OA 表单
OaFormDto oaFormDto = createOaForm(dto, sysUserVo);
ResultBean<String> resultBean = oaFormService.saveOrUpdateForm(oaFormDto);
if (!resultBean.getSuccess()) {
return rb;
}
entity.setFormSid(resultBean.getData());
baseMapper.insert(entity);
// 处理附件
saveFiles(sid, files);
} else {
// 更新操作
OaMendApply entity = fetchBySid(sid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.updateById(entity);
}
return rb.success().setData(sid);
}
// 获取组织和部门信息
private void setOrgAndDeptInfo(OaMendApplyDto dto) {
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData();
SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(useOrgSid).getData();
dto.setUseOrgSid(useOrgSid);
dto.setUseOrgName(organizationVo.getName());
String deptName = "";
String deptSid = "";
List<String> split = Arrays.asList(dto.getOrgPath().split("/"));
if (split.size() > 1) {
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(split.size() - 2)).getData();
SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
deptName = sysOrganization1.getName();
deptSid = sysOrganization1.getSid();
} else {
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
deptName = sysOrganization.getName();
deptSid = sysOrganization.getSid();
}
dto.setDeptSid(deptSid);
dto.setDeptName(deptName);
}
// 生成单据编号
private String generateBillNo(OaMendApplyDto dto) {
String billNo = "QJSQ" + dto.getUseOrgSid() + DateUtil.format(DateUtil.date(), "yyyyMM");
String i = baseMapper.selectNum(billNo);
if (StringUtils.isNotBlank(i)) {
return Rule.getBillNo(billNo, Integer.valueOf(i).intValue());
}
return Rule.getBillNo(billNo, 0);
}
// 创建 OA 表单
private OaFormDto createOaForm(OaMendApplyDto dto, SysUserVo sysUserVo) {
OaFormDto oaFormDto = new OaFormDto();
BeanUtil.copyProperties(dto, oaFormDto, "sid");
oaFormDto.setNodeState("待提交");
oaFormDto.setCreateBySid(dto.getUserSid());
oaFormDto.setCreateByName(sysUserVo.getName());
return oaFormDto;
}
// 保存文件
private void saveFiles(String sid, List<String> files) {
for (String file : files) {
String filePath = file.replace(fileUploadComponent.getUrlPrefix(), "");
OaAppendix oaAppendix = new OaAppendix();
oaAppendix.setLinkSid(sid);
oaAppendix.setAttachType(OaFileEnum.OAMENDAPPLY.getAttachType());
oaAppendix.setFilePath(filePath);
oaAppendixService.save(oaAppendix);
}
}
public String insertByDto(OaMendApplyDto dto) {
OaMendApply entity = new OaMendApply();
BeanUtil.copyProperties(dto, entity, "id", "sid");
@ -198,7 +311,7 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
return rb.setMsg("操作失败!提交的数据不一致");
}
//新增修改保存
String businessSid = saveOrUpdateDto(dto);
String businessSid = saveOrUpdateDto(dto).getData();
oaMendApply = fetchBySid(businessSid);
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
@ -227,8 +340,12 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
//更新oaform中的流程数据
ufVo.setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(ufVo));
//极光推送
oaMendApply = fetchBySid(businessSid);
//==================================添加线程
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
@ -318,6 +435,9 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
}
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
//更新oaform中的流程数据
ufVo.setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(ufVo));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
} else {
@ -428,6 +548,9 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//更新oaform中的流程数据
ufVo.setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(ufVo));
//极光推送
oaMendApply = fetchBySid(businessSid);
//==================================添加线程
@ -487,6 +610,9 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
//更新oaform中的流程数据
resultBean.getData().setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
@ -516,6 +642,9 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
//更新oaform中的流程数据
resultBean.getData().setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
@ -527,6 +656,9 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
//更新oaform中的流程数据
resultBean.getData().setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}

Loading…
Cancel
Save