Browse Source

采购退货单申请流程接口、选择原单接口开发

master
God 1 year ago
parent
commit
6e86bc70fb
  1. 10
      yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchaseBillRest.java
  2. 58
      yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchasebackBillRest.java
  3. 3
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBill.java
  4. 3
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDetailsVo.java
  5. 3
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDto.java
  6. 4
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.java
  7. 26
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.xml
  8. 311
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillService.java
  9. 37
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillCompleteDto.java
  10. 26
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillDelegateQuery.java
  11. 25
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeQuery.java
  12. 26
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeVo.java
  13. 48
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillTaskQuery.java
  14. 25
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/SubmitPmsPurchasebackBillDto.java
  15. 2
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.java
  16. 28
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.xml
  17. 50
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillService.java
  18. 61
      yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseChoiceBillVo.java
  19. 1
      yxt-pms-biz/src/main/java/com/yxt/pms/feign/flowable/flow/ProcDefEnum.java

10
yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchaseBillRest.java

@ -66,8 +66,6 @@ public class PmsPurchaseBillRest {
@Autowired
private PmsPurchaseBillService pmsPurchaseBillService;
@Autowired
private HttpServletResponse response;
@ApiOperation("根据条件分页查询数据的列表")
@PostMapping("/listPage")
@ -77,6 +75,14 @@ public class PmsPurchaseBillRest {
return rb.success().setData(pv);
}
@ApiOperation("选择原单")
@PostMapping("/choiceBillListPage")
public ResultBean<PagerVo<PmsPurchaseChoiceBillVo>> choiceBillListPage(@RequestBody PagerQuery<PmsPurchaseBillQuery> pq){
ResultBean rb = ResultBean.fireFail();
PagerVo<PmsPurchaseChoiceBillVo> pv = pmsPurchaseBillService.choiceBillListPage(pq);
return rb.success().setData(pv);
}
@ApiOperation("新增或修改")
@PostMapping("/save")
public ResultBean<String> save(@RequestBody PmsPurchaseBillDto dto){

58
yxt-pms-biz/src/main/java/com/yxt/pms/apiadmin/pms/PmsPurchasebackBillRest.java

@ -25,17 +25,24 @@
*********************************************************/
package com.yxt.pms.apiadmin.pms;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.pms.biz.pms.pmspurchasebackbill.*;
import com.yxt.pms.biz.pms.pmspurchasebackbill.flowable.*;
import com.yxt.pms.biz.pms.pmspurchasebill.flowable.*;
import com.yxt.pms.feign.flowable.flow.BusinessVariables;
import com.yxt.pms.feign.flowable.flow.ProcDefEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
@ -94,4 +101,55 @@ public class PmsPurchasebackBillRest {
PmsPurchasebackBillDetailsVo vo = pmsPurchasebackBillService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
@ApiOperation("提交审批流程")
@PostMapping("/submit")
public ResultBean submit(@RequestBody @Valid SubmitPmsPurchasebackBillDto dto) {
return pmsPurchasebackBillService.submit(dto);
}
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
public ResultBean complete(@Valid @RequestBody PmsPurchasebackBillCompleteDto query) {
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId());
return pmsPurchasebackBillService.complete(bv);
}
@ApiOperation(value = "获取上一个环节")
@GetMapping(value = "/getPreviousNodesForReject")
public ResultBean<List<PmsPurchasebackBillNodeVo>> getPreviousNodesForReject(@Valid @SpringQueryMap PmsPurchasebackBillNodeQuery query) {
return pmsPurchasebackBillService.getPreviousNodesForReject(query);
}
@ApiOperation(value = "获取下一个环节")
@GetMapping(value = "/getNextNodesForSubmit")
public ResultBean<List<PmsPurchasebackBillNodeVo>> getNextNodesForSubmit(@Valid @SpringQueryMap PmsPurchasebackBillNodeQuery query) {
return pmsPurchasebackBillService.getNextNodesForSubmit(query);
}
@ApiOperation(value = "驳回任务")
@PostMapping(value = "/reject")
public ResultBean reject(@Valid @RequestBody PmsPurchasebackBillTaskQuery query) {
return pmsPurchasebackBillService.reject(query);
}
@ApiOperation(value = "撤回流程")
@PostMapping(value = "/revokeProcess")
public ResultBean revokeProcess(@Valid @RequestBody PmsPurchasebackBillTaskQuery query) {
return pmsPurchasebackBillService.revokeProcess(query);
}
@ApiOperation(value = "终止任务")
@PostMapping(value = "/breakProcess")
public ResultBean breakProcess(@Valid @RequestBody PmsPurchasebackBillTaskQuery query) {
return pmsPurchasebackBillService.breakProcess(query);
}
@ApiOperation(value = "加签")
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody PmsPurchasebackBillDelegateQuery query) {
return pmsPurchasebackBillService.delegate(query);
}
}

3
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBill.java

@ -77,6 +77,9 @@ public class PmsPurchasebackBill extends BaseEntity {
@ApiModelProperty("单据状态")
private String documentState;
@ApiModelProperty("已付金额")
private BigDecimal paidAmount;
@ApiModelProperty("申请部门sid")
private String deptSid;
@ApiModelProperty("申请部门名称")

3
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDetailsVo.java

@ -81,6 +81,9 @@ public class PmsPurchasebackBillDetailsVo implements Vo {
@ApiModelProperty("转入预付款")
private BigDecimal toPrepayment; // 转入预付款
@ApiModelProperty("已付金额")
private BigDecimal paidAmount;
@ApiModelProperty("申请部门sid")
private String deptSid;
@ApiModelProperty("申请部门名称")

3
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillDto.java

@ -80,6 +80,9 @@ public class PmsPurchasebackBillDto implements Dto {
@ApiModelProperty("转入预付款")
private BigDecimal toPrepayment; // 转入预付款
@ApiModelProperty("已付金额")
private BigDecimal paidAmount;
@ApiModelProperty("申请部门sid")
private String deptSid;
@ApiModelProperty("申请部门名称")

4
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.java

@ -35,6 +35,7 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/**
* Project: yxt-pms(采购) <br/>
@ -54,4 +55,7 @@ public interface PmsPurchasebackBillMapper extends BaseMapper<PmsPurchasebackBil
IPage<PmsPurchasebackBillVo> selectPageVo(IPage<PmsPurchasebackBill> page, @Param(Constants.WRAPPER) Wrapper<PmsPurchasebackBill> qw);
String selectNum(String billNo);
int updateFlowFiled(Map<String, Object> map);
}

26
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillMapper.xml

@ -26,4 +26,30 @@
ON ppb.`sid` = ppbd.`billSid`
<where> ${ew.sqlSegment} </where>
</select>
<select id="selectNum" resultType="java.lang.String">
select RIGHT (billNo, 4)
from pms_purchaseback_bill
where billNo LIKE concat(#{billNo}, '%')
order by billNo desc
limit 1
</select>
<update id="updateFlowFiled">
UPDATE pms_purchaseback_bill
SET nodeState=#{nodeState}, nodeId=#{taskDefKey}
<if test="nodeState == '已办结' or nodeState == '终止'">
, finishTime = NOW()
</if>
<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>

311
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/PmsPurchasebackBillService.java

@ -26,19 +26,30 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.common.core.result.ResultBean;
import com.yxt.pms.biz.pms.pmspurchasebackbill.flowable.*;
import com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailDetailsVo;
import com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailDto;
import com.yxt.pms.biz.pms.pmspurchasebackdetail.PmsPurchasebackDetailService;
import com.yxt.pms.biz.pms.pmspurchasebill.PmsPurchaseBill;
import com.yxt.pms.biz.pms.pmspurchasebill.flowable.*;
import com.yxt.pms.biz.pms.pmspurchasebilldetail.PmsPurchaseBillDetailService;
import com.yxt.pms.biz.pms.pmspurchasebillinvoice.PmsPurchaseBillInvoiceService;
import com.yxt.pms.biz.pms.pmspurchasepay.PmsPurchasePayService;
import com.yxt.pms.feign.flowable.flow.FlowableFeign;
import com.yxt.pms.feign.flowable.flow.*;
import com.yxt.pms.feign.flowable.flow2.FlowDelegateQuery;
import com.yxt.pms.feign.flowable.flow2.FlowFeign;
import com.yxt.pms.feign.flowable.flowtask.FlowTaskFeign;
import com.yxt.pms.feign.flowable.flowtask.FlowTaskVo;
import com.yxt.pms.feign.flowable.flowtask.LatestTaskVo;
import com.yxt.pms.feign.message.MessageFeign;
import com.yxt.pms.feign.message.MessageFlowVo;
import com.yxt.pms.feign.message.MessageFlowableQuery;
import com.yxt.pms.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.pms.feign.portal.sysorganization.SysOrganizationVo;
import com.yxt.pms.feign.portal.sysstafforg.SysStaffOrgFeign;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
@ -49,8 +60,8 @@ import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
* Project: yxt-pms(采购) <br/>
@ -185,4 +196,298 @@ public class PmsPurchasebackBillService extends MybatisBaseService<PmsPurchaseba
pmsPurchasebackDetailService.delByMainSid(sid);
}
}
public ResultBean submit(SubmitPmsPurchasebackBillDto dto) {
ResultBean rb = ResultBean.fireFail();
PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(dto.getSid());
int r = submitBusinessData(dto, pmsPurchasebackBill);
if (r == 3) {
return rb.setMsg("该申请不存在");
}
if (r == 0) {
return rb.setMsg("操作失败!提交的数据不一致");
}
//新增修改保存
String businessSid = saveOrUpdateDto(dto);
pmsPurchasebackBill = fetchBySid(businessSid);
//创建BusinessVariables实体对象
BusinessVariables bv = new BusinessVariables();
//流程中的参数赋值、若有网关,则赋值网关中判断的字段。
Map<String, Object> variables = new HashMap<>();
//用户的部门全路径sid
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(pmsPurchasebackBill.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath());
//业务sid
bv.setBusinessSid(businessSid);
//用户sid
bv.setUserSid(pmsPurchasebackBill.getCreateBySid());
//若app移动端有此功能,则传递appMap参数
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
//需和移动端沟通业务sid保存的属性具体值:appMap中sid不是固定的。移动端提供具体字段。
variables.put("app", appMap);
//流程定义id
bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId());
bv.setFormVariables(variables);
if (r == 1) {
ResultBean<UpdateFlowFieldVo> voResultBean = flowFeign.startProcess(bv);
UpdateFlowFieldVo ufVo = voResultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(ufVo));
//极光推送
pmsPurchasebackBill = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("采购退货单申请");
messageFlowableQuery.setMsgContent(pmsPurchasebackBill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("采购退货单申请");
messageFeign.pushMessage(messageFlowableQuery);
return voResultBean;
}
if (r == 2) {
// ToDo:驳回到发起人后再次提交
if (StringUtils.isBlank(dto.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
bv.setTaskId(pmsPurchasebackBill.getTaskId());
bv.setTaskDefKey(pmsPurchasebackBill.getNodeId());
bv.setComment(StringUtils.isNotBlank(dto.getComment()) ? dto.getComment() : "重新提交");
bv.setInstanceId(dto.getInstanceId());
return complete(bv);
}
return rb;
}
private synchronized int submitBusinessData(SubmitPmsPurchasebackBillDto dto, PmsPurchasebackBill pmsPurchasebackBill) {
int r = 0;
if (StringUtils.isBlank(dto.getSid())) {
r = 1;
} else {
if (pmsPurchasebackBill != null) {
String businessTaskId = pmsPurchasebackBill.getTaskId();
if (StringUtils.isBlank(businessTaskId) && StringUtils.isBlank(dto.getTaskId())) {
//新提交
r = 1;
} else if (StringUtils.isNotBlank(businessTaskId) && businessTaskId.equals(dto.getTaskId())) {
//二次提交//只有数据一致的时候才能进行下一步
r = 2;
}
} else {
r = 3;
}
}
return r;
}
private int updateFlowFiled(Map<String, Object> map) {
return baseMapper.updateFlowFiled(map);
}
public ResultBean complete(BusinessVariables bv) {
ResultBean rb = ResultBean.fireFail();
String businessSid = bv.getBusinessSid();
PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(businessSid);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
FlowProcessMapQuery flowProcessMapQuery = new FlowProcessMapQuery();
if (StringUtils.isBlank(pmsPurchasebackBill.getProcDefId())) {
flowProcessMapQuery.setProDefKey(bv.getModelId());
} else {
flowProcessMapQuery.setProDefKey(pmsPurchasebackBill.getProcDefId());
}
flowProcessMapQuery.setVariables(variables);
variables = flowableFeign.getMap(flowProcessMapQuery).getData();
//=======================================
bv.setFormVariables(variables);
SysOrganizationVo deptVo = sysOrganizationFeign.fetchBySid(pmsPurchasebackBill.getDeptSid()).getData();
bv.setOrgSidPath(deptVo.getOrgSidPath());
if (bv.getTaskId().equals(pmsPurchasebackBill.getTaskId())) {
ResultBean<UpdateFlowFieldVo> resultBean = flowFeign.handleProsess(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
if ("Event_end".equals(resultBean.getData().getTaskDefKey())) {
} else {
//极光推送
pmsPurchasebackBill = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
ufVo.setProcDefId(pmsPurchasebackBill.getProcDefId());
ufVo.setProcInsId(pmsPurchasebackBill.getProcInstId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("采购退货单申请");
messageFlowableQuery.setMsgContent(pmsPurchasebackBill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
messageFlowableQuery.setMsgTitle("采购退货单申请");
messageFeign.pushMessage(messageFlowableQuery);
}
return rb.success().setData(resultBean.getData());
} else {
return rb.setMsg("操作失败!提交的数据不一致");
}
}
public ResultBean<List<PmsPurchasebackBillNodeVo>> getPreviousNodesForReject(PmsPurchasebackBillNodeQuery query) {
ResultBean<List<PmsPurchasebackBillNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<PmsPurchasebackBillNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), PmsPurchasebackBillNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean<List<PmsPurchasebackBillNodeVo>> getNextNodesForSubmit(PmsPurchasebackBillNodeQuery query) {
ResultBean<List<PmsPurchasebackBillNodeVo>> rb = ResultBean.fireFail();
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId(ProcDefEnum.PMSPURCHASEBACKBILL.getProDefId());
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给getNodeVo
List<PmsPurchasebackBillNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), PmsPurchasebackBillNodeVo.class)).collect(Collectors.toList());
return rb.success().setData(voList);
}
public ResultBean reject(PmsPurchasebackBillTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
String businessSid = query.getBusinessSid();
PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(businessSid);
if (pmsPurchasebackBill == null) {
return rb.setMsg("该申请不存在");
}
String businessTaskId = pmsPurchasebackBill.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
UpdateFlowFieldVo ufVo = resultBean.getData();
Map<String, Object> map = BeanUtil.beanToMap(ufVo);
//更新业务中的流程相关的参数
updateFlowFiled(map);
//极光推送
pmsPurchasebackBill = fetchBySid(businessSid);
MessageFlowableQuery messageFlowableQuery = new MessageFlowableQuery();
MessageFlowVo messageFlowVo = new MessageFlowVo();
BeanUtil.copyProperties(ufVo, messageFlowVo);
String procId = pmsPurchasebackBill.getProcInstId();
ufVo.setProcInsId(procId);
ufVo.setProcDefId(pmsPurchasebackBill.getProcDefId());
messageFlowableQuery.setUfVo(messageFlowVo);
messageFlowableQuery.setAppMap(appMap);
messageFlowableQuery.setBusinessSid(businessSid);
messageFlowableQuery.setModuleName("采购退货单申请");
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(procId);
String nextNodeUserSids = listResultBean.getData().get(0).getASSIGNEE_();
List<String> receiveSidList = Arrays.asList(nextNodeUserSids.split(","));
if (receiveSidList.size() == 1 && receiveSidList.get(0).equals(pmsPurchasebackBill.getCreateBySid())) {
messageFlowableQuery.setMsgContent("您提交的" + messageFlowableQuery.getModuleName() + "已被驳回,请重新提交");
} else {
messageFlowableQuery.setMsgContent(pmsPurchasebackBill.getCreateByName() + "提交的" + messageFlowableQuery.getModuleName() + ",请审批");
}
messageFlowableQuery.setMsgTitle("采购退货单申请");
messageFeign.pushMessage(messageFlowableQuery);
return rb.success();
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean revokeProcess(PmsPurchasebackBillTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(query.getBusinessSid());
String businessTaskId = pmsPurchasebackBill.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
updateFlowFiled(BeanUtil.beanToMap(resultBean.getData()));
return rb.success().setData(resultBean.getData());
}
}
return rb.setMsg("操作失败,提交的数据不一致!");
}
public ResultBean breakProcess(PmsPurchasebackBillTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
if (StringUtils.isBlank(query.getInstanceId())) {
return rb.setMsg("参数错误:instanceId");
}
if (StringUtils.isBlank(query.getUserSid())) {
return rb.setMsg("参数错误:userSid");
}
if (StringUtils.isBlank(query.getComment())) {
return rb.setMsg("请填写意见");
}
PmsPurchasebackBill pmsPurchasebackBill = fetchBySid(query.getBusinessSid());
String businessTaskId = pmsPurchasebackBill.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (query.getUserSid().equals(pmsPurchasebackBill.getCreateBySid())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
} else {
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}
public ResultBean delegate(PmsPurchasebackBillDelegateQuery query) {
ResultBean rb = ResultBean.fireFail();
FlowDelegateQuery delegateQuery = new FlowDelegateQuery();
BeanUtil.copyProperties(query, delegateQuery);
flowFeign.delegate(delegateQuery);
return rb.success();
}
}

37
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillCompleteDto.java

@ -0,0 +1,37 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 14:57
* @Description
*/
@Data
public class PmsPurchasebackBillCompleteDto implements Dto {
private static final long serialVersionUID = 6378752532534735663L;
@ApiModelProperty(value = "用户sid")
private String userSid;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id(PC)")
private String instanceId;
@ApiModelProperty(value = "流程id(移动)")
private String procInsId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
private String orgPath;
}

26
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillDelegateQuery.java

@ -0,0 +1,26 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Administrator
* @description
* @date 2023/9/28 9:28
*/
@Data
public class PmsPurchasebackBillDelegateQuery {
@ApiModelProperty
private String userSid;
@ApiModelProperty("流程实例id")
// @JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

25
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeQuery.java

@ -0,0 +1,25 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:04
* @Description
*/
@Data
public class PmsPurchasebackBillNodeQuery implements Query {
private static final long serialVersionUID = 9117613683840483366L;
@ApiModelProperty(value = "环节定义id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "0 上一环节 1下一环节")
private Integer next;
}

26
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillNodeVo.java

@ -0,0 +1,26 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:03
* @Description
*/
@Data
public class PmsPurchasebackBillNodeVo implements Vo {
private static final long serialVersionUID = -833419512294877848L;
@ApiModelProperty(value = "节点名称")
private String name;
@ApiModelProperty(value = "节点id")
private String id;
@ApiModelProperty(value = "审批组")
private List<String> candidateGroups;
@ApiModelProperty(value = "是否是最后环节")
private String endTask;
}

48
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/PmsPurchasebackBillTaskQuery.java

@ -0,0 +1,48 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/9/6 15:06
* @Description
*/
@Data
public class PmsPurchasebackBillTaskQuery implements Query {
private static final long serialVersionUID = 1288615499873178778L;
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id(PC)")
private String instanceId;
@ApiModelProperty("流程实例Id(移动)")
private String procInsId;
}

25
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebackbill/flowable/SubmitPmsPurchasebackBillDto.java

@ -0,0 +1,25 @@
package com.yxt.pms.biz.pms.pmspurchasebackbill.flowable;
import com.yxt.pms.biz.pms.pmspurchasebackbill.PmsPurchasebackBillDto;
import com.yxt.pms.biz.pms.pmspurchasebill.PmsPurchaseBillDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author liuguohui
* @version 1.0
* @description
* @date 2022/04/13
*/
@ApiModel("提交")
@Data
public class SubmitPmsPurchasebackBillDto extends PmsPurchasebackBillDto {
@ApiModelProperty("意见")
private String comment;
@ApiModelProperty("流程实例id")
private String instanceId;
@ApiModelProperty("任务id")
private String taskId;
}

2
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.java

@ -56,6 +56,8 @@ public interface PmsPurchaseBillMapper extends BaseMapper<PmsPurchaseBill> {
IPage<PmsPurchaseBillVo> selectPageVo(IPage<PmsPurchaseBill> page, @Param(Constants.WRAPPER) Wrapper<PmsPurchaseBill> qw);
IPage<PmsPurchaseChoiceBillVo> choiceBillListPage(IPage<PmsPurchaseBill> page, @Param(Constants.WRAPPER) QueryWrapper<PmsPurchaseBill> qw);
String selectNum(String billNo);
int updateFlowFiled(Map<String, Object> map);

28
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillMapper.xml

@ -30,6 +30,34 @@
<where> ${ew.sqlSegment} </where>
</select>
<select id="choiceBillListPage" resultType="com.yxt.pms.biz.pms.pmspurchasebill.PmsPurchaseChoiceBillVo">
SELECT
ppb.`sid`,
ppb.billNo,
ppb.`createTime`,
ppb.`purchaserName`,
ppb.`purchaseTypeValue`,
ppb.`purchaseReasonValue`,
ppb.`payTypeValue`,
ppb.`supplierName`,
IF(ppbi.`isInvoicing` = 1, '是','否') AS isInvoicing,
ppbi.billType,
ppbi.taxRate,
ppb.`remarks`,
SUM(ppbd.`amount`) AS amountCount,
ppb.freight,
ppb.discountAmount,
ppb.errorAmount,
ppb.`payableAmount`
FROM
pms_purchase_bill ppb
LEFT JOIN pms_purchase_bill_invoice ppbi
ON ppbi.`billSid` = ppb.`sid`
LEFT JOIN pms_purchase_bill_detail ppbd
ON ppbd.`billSid` = ppb.`sid`
<where> ${ew.sqlSegment} </where>
</select>
<select id="selectNum" resultType="java.lang.String">
select RIGHT (billNo, 4)
from pms_purchase_bill

50
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseBillService.java

@ -156,6 +156,56 @@ public class PmsPurchaseBillService extends MybatisBaseService<PmsPurchaseBillMa
return p;
}
public PagerVo<PmsPurchaseChoiceBillVo> choiceBillListPage(PagerQuery<PmsPurchaseBillQuery> pq) {
PmsPurchaseBillQuery query = pq.getParams();
QueryWrapper<PmsPurchaseBill> qw = new QueryWrapper<>();
String orgPath = query.getOrgPath();
String createOrgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
qw.eq("ppb.createOrgSid", createOrgSid);
if (StringUtils.isNotBlank(query.getCreateOrgName())) {
qw.like("ppb.createOrgName", query.getCreateOrgName());
}
if (StringUtils.isNotBlank(query.getDeptName())) {
qw.like("ppb.deptName", query.getDeptName());
}
if (StringUtils.isNotBlank(query.getCreateByName())) {
qw.like("ppb.createByName", query.getCreateByName());
}
if (StringUtils.isNotBlank(query.getBillNo())) {
qw.like("ppb.billNo", query.getBillNo());
}
if (StringUtils.isNotBlank(query.getPurchaseTypeValue())) {
qw.like("ppb.purchaseTypeValue", query.getPurchaseTypeValue());
}
if (StringUtils.isNotBlank(query.getPurchaseReasonValue())) {
qw.like("ppb.purchaseReasonValue", query.getPurchaseReasonValue());
}
if (StringUtils.isNotBlank(query.getPayTypeValue())) {
qw.like("ppb.payTypeValue", query.getPayTypeValue());
}
if (StringUtils.isNotBlank(query.getSupplierName())) {
qw.like("ppb.supplierName", query.getSupplierName());
}
if (StringUtils.isNotBlank(query.getIsInvoicing())) {
qw.eq("ppbi.isInvoicing", query.getIsInvoicing());
}
String createStartTime = query.getCreateStartTime();
String createEndTime = query.getCreateEndTime();
qw.apply(StringUtils.isNotEmpty(createStartTime), "date_format (ppb.createTime,'%Y-%m-%d') >= date_format('" + createStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(createEndTime), "date_format (ppb.createTime,'%Y-%m-%d') <= date_format('" + createEndTime + "','%Y-%m-%d')"
);
String finishStartTime = query.getFinishStartTime();
String finishEndTime = query.getFinishEndTime();
qw.apply(StringUtils.isNotEmpty(finishStartTime), "date_format (ppb.finishTime,'%Y-%m-%d') >= date_format('" + finishStartTime + "','%Y-%m-%d')").
apply(StringUtils.isNotEmpty(finishEndTime), "date_format (ppb.finishTime,'%Y-%m-%d') <= date_format('" + finishEndTime + "','%Y-%m-%d')"
);
qw.groupBy("ppb.sid");
IPage<PmsPurchaseBill> page = PagerUtil.queryToPage(pq);
IPage<PmsPurchaseChoiceBillVo> pagging = baseMapper.choiceBillListPage(page, qw);
PagerVo<PmsPurchaseChoiceBillVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public String saveOrUpdateDto(PmsPurchaseBillDto dto) {
String dtoSid = dto.getSid();
PmsPurchasePayDto purchasePay = dto.getPurchasePay();

61
yxt-pms-biz/src/main/java/com/yxt/pms/biz/pms/pmspurchasebill/PmsPurchaseChoiceBillVo.java

@ -54,45 +54,38 @@ public class PmsPurchaseChoiceBillVo implements Vo {
private String sid; // sid
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("单据编号")
private String billNo;
@ApiModelProperty("供应商名称")
private String supplierName;
@ApiModelProperty("供应商联系电话")
private String supplierPhone;
@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
@ApiModelProperty("单据日期")
private Date createTime;
@ApiModelProperty("采购员姓名")
private String purchaserName;
@ApiModelProperty("库管员姓名")
private String storekeeperName;
@ApiModelProperty("结算标志")
private String settleState;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("结算时间")
private Date settleTime;
@ApiModelProperty("票据类型value(不含税、增值税、普通税、已含增值税)")
private String billTypeValue;
@ApiModelProperty("采购类型Value(厂家采购、外采、其他)")
private String purchaseTypeValue;
@ApiModelProperty("采购原因(储备/客户订单/在修车辆)")
private String purchaseReasonValue;
@ApiModelProperty("付款方式value(预付款/月结/单笔付款)")
private String payTypeValue;
@ApiModelProperty("供应商名称")
private String supplierName;
@ApiModelProperty("是否需要开发票(是1,否0)")
private String isInvoicing;
@ApiModelProperty("票据类型(不含税、增值税、普通税、已含增值税)")
private String billType;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("发票号码")
private String invoiceCode;
@ApiModelProperty("发票信息")
private String invoiceInfo;
@ApiModelProperty("采购数量")
private BigDecimal count;
@ApiModelProperty("单台进货价")
private BigDecimal cost;
@ApiModelProperty("总体进货价")
private BigDecimal costCount;
@ApiModelProperty("税额")
private BigDecimal taxAmount;
@ApiModelProperty("含税价")
private BigDecimal taxPrice; // 含税价
@ApiModelProperty("采购金额")
private BigDecimal amount; // 采购金额
@ApiModelProperty("销售单价")
private BigDecimal salesPrice;
@ApiModelProperty("采购金额合计")
private BigDecimal amountCount;
@ApiModelProperty("运费")
private BigDecimal freight;
@ApiModelProperty("优惠金额")
private BigDecimal discountAmount;
@ApiModelProperty("误差调整金额")
private BigDecimal errorAmount;
@ApiModelProperty("应付金额(=采购金额+运费-优惠金额)")
private BigDecimal payableAmount;
}

1
yxt-pms-biz/src/main/java/com/yxt/pms/feign/flowable/flow/ProcDefEnum.java

@ -8,6 +8,7 @@ public enum ProcDefEnum {
/***************************正式流程id***********************************/
PMSPURCHASEBILL("采购单申请", "process_cx2htjth:1:11280004"),
PMSPURCHASEBACKBILL("采购退货单申请", "process_cx2htjth:1:11280004"),
;

Loading…
Cancel
Save