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("新增或修改") @ApiOperation("新增或修改")
@PostMapping("/save") @PostMapping("/save")
public ResultBean save(@RequestBody OaMendApplyDto dto){ public ResultBean<String> save(@RequestBody OaMendApplyDto dto){
ResultBean rb = ResultBean.fireFail(); return oaMendApplyService.saveOrUpdateDto(dto);
oaMendApplyService.saveOrUpdateDto(dto);
return rb.success();
} }
@ApiOperation("根据sid批量删除") @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 { public class OaFormDto {
private String sid; private String sid;
private String createBySid;
@ApiModelProperty("创建人") @ApiModelProperty("创建人")
private String createByName; private String createByName;
@ApiModelProperty("公司sid") @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.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Map;
/** /**
* @description: * @description:
* @author: dimengzhe * @author: dimengzhe
@ -17,4 +19,6 @@ public interface OaFormMapper extends BaseMapper<OaForm> {
OaFormDetailsVo fetchDetailsBySid(String sid); OaFormDetailsVo fetchDetailsBySid(String sid);
IPage<OaFormVo> selectPageVo(IPage<OaForm> page, @Param(Constants.WRAPPER) QueryWrapper<OaForm> qw); 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} ${ew.sqlSegment}
</where> </where>
</select> </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> </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.OaLeaveApply;
import com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyQuery; import com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyQuery;
import com.yxt.anrui.oa.biz.oaleaveapply.OaLeaveApplyVo; 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.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils; 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.context.annotation.Bean;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Map;
/** /**
* @description: * @description:
* @author: dimengzhe * @author: dimengzhe
@ -62,4 +65,8 @@ public class OaFormService extends MybatisBaseService<OaFormMapper, OaForm> {
delBySids(sids); delBySids(sids);
return rb.success(); 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.anrui.oa.biz.oaform.OaForm;
import com.yxt.common.core.domain.BaseEntity; import com.yxt.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date; import java.util.Date;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -53,32 +55,35 @@ import lombok.Data;
public class OaMendApply extends OaForm { public class OaMendApply extends OaForm {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String formSid; private String formSid;
@ApiModelProperty("单据编号") @ApiModelProperty("补卡时间")
private String billNo; // 单据编号 private String time;
/* @ApiModelProperty("单据编号")
private String billNo;
@ApiModelProperty("申请人") @ApiModelProperty("申请人")
private String createByName; // 申请人 private String createByName;
@ApiModelProperty("申请部门sid") @ApiModelProperty("申请部门sid")
private String deptSid; // 申请部门sid private String deptSid;
@ApiModelProperty("申请部门名称") @ApiModelProperty("申请部门名称")
private String deptName; // 申请部门名称 private String deptName;
@ApiModelProperty("补卡时间")
private String time; // 补卡时间
@ApiModelProperty("分公司sid") @ApiModelProperty("分公司sid")
private String useOrgSid; // 分公司sid private String useOrgSid;
@ApiModelProperty("分公司名称") @ApiModelProperty("分公司名称")
private String useOrgName; // 分公司名称 private String useOrgName;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ApiModelProperty("办结日期") @ApiModelProperty("办结日期")
private Date finishTime; // 办结日期 private Date finishTime;
@ApiModelProperty("实例id") @ApiModelProperty("实例id")
private String procInstId; // 实例id private String procInstId;
@ApiModelProperty("流程定义id") @ApiModelProperty("流程定义id")
private String procDefId; // 流程定义id private String procDefId;
@ApiModelProperty("任务id") @ApiModelProperty("任务id")
private String taskId; // 任务id private String taskId;
@ApiModelProperty("环节id") @ApiModelProperty("环节id")
private String nodeId; // 环节id private String nodeId;
@ApiModelProperty("流程状态") @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("单据编号") @ApiModelProperty("单据编号")
private String billNo; // 单据编号 private String billNo; // 单据编号
@ApiModelProperty("申请人") @ApiModelProperty("申请人")
private String createByName; // 申请人 private String createByName;
@ApiModelProperty("申请部门sid") @ApiModelProperty("申请部门sid")
private String deptSid; // 申请部门sid private String deptSid;
@ApiModelProperty("申请部门名称") @ApiModelProperty("申请部门名称")
private String deptName; // 申请部门名称 private String deptName;
@ApiModelProperty("补卡时间") @ApiModelProperty("补卡时间")
private String time; // 补卡时间 private String time;
@ApiModelProperty("分公司sid") @ApiModelProperty("分公司sid")
private String useOrgSid; // 分公司sid private String useOrgSid;
@ApiModelProperty("分公司名称") @ApiModelProperty("分公司名称")
private String useOrgName; // 分公司名称 private String useOrgName;
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@ApiModelProperty("办结日期") @ApiModelProperty("办结日期")
private Date finishTime; private Date finishTime;
@ApiModelProperty("实例id") @ApiModelProperty("实例id")
private String procInstId; // 实例id private String procInstId;
@ApiModelProperty("流程定义id") @ApiModelProperty("流程定义id")
private String procDefId; // 流程定义id private String procDefId;
@ApiModelProperty("任务id") @ApiModelProperty("任务id")
private String taskId; // 任务id private String taskId;
@ApiModelProperty("环节id") @ApiModelProperty("环节id")
private String nodeId; // 环节id private String nodeId;
@ApiModelProperty("流程状态") @ApiModelProperty("流程状态")
private String nodeState; // 流程状态 private String nodeState;
@ApiModelProperty("图片") @ApiModelProperty("图片")
private List<String> files = new ArrayList<>(); 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.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.oa.biz.oaappendix.OaAppendix; import com.yxt.anrui.oa.biz.oaappendix.OaAppendix;
import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService; 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.biz.oamendapply.flowable.*;
import com.yxt.anrui.oa.feign.base.Rule; import com.yxt.anrui.oa.feign.base.Rule;
import com.yxt.anrui.oa.feign.file.OaFileEnum; 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.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*; import java.util.*;
import java.util.concurrent.*; import java.util.concurrent.*;
@ -90,6 +94,8 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
private FileUploadComponent fileUploadComponent; private FileUploadComponent fileUploadComponent;
@Autowired @Autowired
private OaAppendixService oaAppendixService; private OaAppendixService oaAppendixService;
@Autowired
private OaFormService oaFormService;
public PagerVo<OaMendApplyVo> listPageVo(PagerQuery<OaMendApplyQuery> pq) { public PagerVo<OaMendApplyVo> listPageVo(PagerQuery<OaMendApplyQuery> pq) {
OaMendApplyQuery query = pq.getParams(); OaMendApplyQuery query = pq.getParams();
@ -100,7 +106,7 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
return p; return p;
} }
public String saveOrUpdateDto(OaMendApplyDto dto){ public String saveOrUpdateDtoOld(OaMendApplyDto dto) {
String dtoSid = dto.getSid(); String dtoSid = dto.getSid();
List<String> files = dto.getFiles(); List<String> files = dto.getFiles();
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData(); String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(dto.getOrgPath()).getData();
@ -152,6 +158,113 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
return dtoSid; 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) { public String insertByDto(OaMendApplyDto dto) {
OaMendApply entity = new OaMendApply(); OaMendApply entity = new OaMendApply();
BeanUtil.copyProperties(dto, entity, "id", "sid"); BeanUtil.copyProperties(dto, entity, "id", "sid");
@ -198,7 +311,7 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
return rb.setMsg("操作失败!提交的数据不一致"); return rb.setMsg("操作失败!提交的数据不一致");
} }
//新增修改保存 //新增修改保存
String businessSid = saveOrUpdateDto(dto); String businessSid = saveOrUpdateDto(dto).getData();
oaMendApply = fetchBySid(businessSid); oaMendApply = fetchBySid(businessSid);
//创建BusinessVariables实体对象 //创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables(); BusinessVariables bv = new BusinessVariables();
@ -227,8 +340,12 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv); ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData(); UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo)); updateFlowFiled(BeanUtil.beanToMap(ufVo));
//更新oaform中的流程数据
ufVo.setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(ufVo));
//极光推送 //极光推送
oaMendApply = fetchBySid(businessSid); oaMendApply = fetchBySid(businessSid);
//==================================添加线程 //==================================添加线程
try { try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder() ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
@ -318,6 +435,9 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
} }
UpdateFlowFieldVo ufVo = resultBean.getData(); UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
//更新oaform中的流程数据
ufVo.setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(ufVo));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) { if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
} else { } else {
@ -428,6 +548,9 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
Map<String, Object> map = BeanUtil.beanToMap(ufVo); Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数 //更新业务中的流程相关的参数
updateFlowFiled(map); updateFlowFiled(map);
//更新oaform中的流程数据
ufVo.setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(ufVo));
//极光推送 //极光推送
oaMendApply = fetchBySid(businessSid); oaMendApply = fetchBySid(businessSid);
//==================================添加线程 //==================================添加线程
@ -487,6 +610,9 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
return rb.setMsg(resultBean.getMsg()); return rb.setMsg(resultBean.getMsg());
} }
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData())); updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
//更新oaform中的流程数据
resultBean.getData().setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(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()); Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map); updateFlowFiled(map);
//更新oaform中的流程数据
resultBean.getData().setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData()); return rb.success().setData(resultBean.getData());
} else { } else {
if (businessTaskId.equals(query.getTaskId())) { if (businessTaskId.equals(query.getTaskId())) {
@ -527,6 +656,9 @@ public class OaMendApplyService extends MybatisBaseService<OaMendApplyMapper, Oa
} }
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData()); Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map); updateFlowFiled(map);
//更新oaform中的流程数据
resultBean.getData().setSid(oaMendApply.getFormSid());
oaFormService.updateFlow(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData()); return rb.success().setData(resultBean.getData());
} }
} }

Loading…
Cancel
Save