Browse Source

Merge remote-tracking branch 'origin/milestone-20251016-现金管理' into milestone-20251016-现金管理

lihuilin1015备份
lijianlin 2 months ago
parent
commit
76886ac7b6
  1. 2
      src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java
  2. 92
      src/main/java/com/example/demo/controller/cash/CashRefundController.java
  3. 2
      src/main/java/com/example/demo/controller/coin/RefundController.java
  4. 22
      src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java
  5. 19
      src/main/java/com/example/demo/service/cash/RefundService.java
  6. 2
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
  7. 44
      src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java
  8. 4
      src/main/resources/application-prod.yml
  9. 167
      src/main/resources/mapper/CashRefundMapper.xml
  10. 132
      src/main/resources/processes/work.bpmn20.xml

2
src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java

@ -82,7 +82,7 @@ public class MysqlServiceImpl implements MysqlService {
id, gtype, jwcode, free, core_jb, buy_jb, cz_time, cz_user, cz_bz, operation_platform, goods_name
FROM
hwhcGold.dbo.user_gold_records
WHERE cz_time > ?
WHERE cz_time >= ?
ORDER BY
cz_time ASC
OFFSET ? ROWS FETCH NEXT ? ROWS ONLY;

92
src/main/java/com/example/demo/controller/cash/CashRefundController.java

@ -0,0 +1,92 @@
package com.example.demo.controller.cash;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.coin.MarketService;
import com.example.demo.serviceImpl.cash.CashRefundServiceImpl;
import com.github.pagehelper.PageInfo;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.Arrays;
import java.util.List;
/**
* @program: GOLD
* @ClassName RefundController
* @description:
* @author: huangqizhen
* @create: 202509-26 14:15
* @Version 1.0
**/
@RestController
@RequestMapping("/Money")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class CashRefundController {
@Autowired
private CashRefundServiceImpl cashRefundServiceImpl;
@Autowired
MarketService marketService;
@PostMapping("/select")
public Result select(@RequestBody Page page) throws Exception {
// 获取当前请求对象
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
// 解析 token 获取用户信息
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> userMarkets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
List<String> markets = marketService.getMarketIds(userMarkets);
// 校验分页参数
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
}
// 获取传入的市场列表
List<String> requestedMarkets = page.getGoldDetail() != null ? page.getGoldDetail().getMarkets() : null;
// 权限校验逻辑
if (markets.contains("9") || markets.contains("9999")) {
// 特权市场9 9999跳过权限校验直接放行传入的 markets
// 如果业务需要也可以在这里做空值处理
if (page.getGoldDetail() != null) {
// 保持 requestedMarkets 不变原样接受
// 可选如果 requestedMarkets null可设为默认值或保持 null
}
} else {
// 普通用户必须校验权限
if (requestedMarkets == null || requestedMarkets.isEmpty()) {
page.getGoldDetail().setMarkets(requestedMarkets);
}
if (!markets.containsAll(requestedMarkets)) {
return Result.error("无权限!请求的市场不在授权范围内。");
}
// 校验通过保持 requestedMarkets 不变
}
return Result.success(cashRefundServiceImpl.select(page.getPageNum(),page.getPageSize(),page.getCashCollection()));
}
@PostMapping("/add")
public Result add(@RequestBody CashCollection cashCollection){
return Result.success(cashRefundServiceImpl.add(cashCollection));
}
@PostMapping("/update")
public Result update(@RequestBody CashCollection cashCollection){
return Result.success(cashRefundServiceImpl.update(cashCollection));
}
}

2
src/main/java/com/example/demo/controller/coin/RefundController.java

@ -136,7 +136,7 @@ public class RefundController {
return refundService.add(refundUser);
} catch (Exception e) {
e.printStackTrace();
return Result.error("请检查数据的格式");
return Result.error(e.getMessage());
}
}
public Result selcet(@RequestBody Page page) {

22
src/main/java/com/example/demo/mapper/cash/CashRefundMapper.java

@ -0,0 +1,22 @@
package com.example.demo.mapper.cash;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.coin.RefundUser;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @program: GOLD
* @ClassName RefundController
* @description:
* @author: huangqizhen
* @create: 202509-28 10:37
* @Version 1.0
**/
@Mapper
public interface CashRefundMapper {
List<CashCollection> select(CashCollection cashCollection);
int update(CashCollection cashCollection);
int insert(CashCollection cashCollection);
}

19
src/main/java/com/example/demo/service/cash/RefundService.java

@ -0,0 +1,19 @@
package com.example.demo.service.cash;
import com.example.demo.domain.vo.cash.CashCollection;
import com.github.pagehelper.PageInfo;
/**
* @program: GOLD
* @ClassName RefundService
* @description:
* @author: huangqizhen
* @create: 202509-26 14:17
* @Version 1.0
**/
public interface RefundService {
PageInfo<CashCollection> select(Integer pageNum, Integer pageSize,CashCollection cashCollection);
int add(CashCollection cashCollection);
int update(CashCollection cashCollection);
}

2
src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

@ -3,8 +3,6 @@ package com.example.demo.serviceImpl.cash;
import com.example.demo.domain.entity.CashRecord;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.mapper.cash.CashCollectionMapper;
import com.example.demo.mapper.coin.MarketMapper;
import com.example.demo.service.cash.CashCollectionService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

44
src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java

@ -0,0 +1,44 @@
package com.example.demo.serviceImpl.cash;
import com.example.demo.domain.vo.cash.CashCollection;
import com.example.demo.mapper.cash.CashRefundMapper;
import com.example.demo.service.cash.RefundService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @program: GOLD
* @ClassName CashRefundServiceImpl
* @description:
* @author: huangqizhen
* @create: 202509-28 15:02
* @Version 1.0
**/
@Service
public class CashRefundServiceImpl implements RefundService {
@Autowired
private CashRefundMapper cashRefundMapper;
@Override
public PageInfo<CashCollection> select(Integer pageNum, Integer pageSize,CashCollection cashCollection) {
PageHelper.startPage(pageNum, pageSize);
// System.out.println(goldDetail.getMarkets());
List<CashCollection> list = cashRefundMapper.select(cashCollection);
return new PageInfo<>(list);
}
@Override
public int add(CashCollection cashCollection) {
return cashRefundMapper.insert(cashCollection);
}
@Override
public int update(CashCollection cashCollection) {
return cashRefundMapper.update(cashCollection);
}
}

4
src/main/resources/application-prod.yml

@ -4,7 +4,7 @@ spring:
fail-on-unknown-properties: false
datasource:
mysql1:
jdbc-url: jdbc:mysql://localhost:3306/hwgold?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&allowMultiQueries=true&rewriteBatchedStatements=true
jdbc-url: jdbc:mysql://54.255.212.181:3306/hwgold?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&allowMultiQueries=true&rewriteBatchedStatements=true
username: hwgold
password: aDiw7MERSATdfGta
driver-class-name: com.mysql.cj.jdbc.Driver
@ -45,7 +45,7 @@ spring:
pool-name: mysql5HikariCP
maximum-pool-size: 10
sqlserver1:
jdbc-url: jdbc:sqlserver://10.19.183.6:1433;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true;
jdbc-url: jdbc:sqlserver://52.76.43.43:1433;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true;
username: gjb_test
password: qweuio!@#$2
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver

167
src/main/resources/mapper/CashRefundMapper.xml

@ -0,0 +1,167 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.cash.CashRefundMapper">
<insert id="insert">
INSERT INTO cash_record (
order_type,
jwcode,
name,
market,
activity,
order_code,
bank_code,
goods_name,
goods_num,
payment_currency,
payment_amount,
received_currency,
received_amount,
handling_charge,
received_market,
pay_type,
pay_time,
received_time,
status,
submitter_id,
voucher,
remark,
refund_reason,
refund_model,
executor,
refund_channels,
refund_currency,
refund_amount,
refund_time,
refund_remark,
refund_voucher,
create_time,
update_time
) VALUES (
#{orderType},
#{jwcode},
#{name},
#{market},
#{activity},
#{orderCode},
#{bankCode},
#{goodsName},
#{goodsNum},
#{paymentCurrency},
#{paymentAmount},
#{receivedCurrency},
#{receivedAmount},
#{handlingCharge},
#{receivedMarket},
#{payType},
#{payTime},
#{receivedTime},
#{submitterId},
#{voucher},
#{remark},
#{status},
#{refundReason},
#{refundModel},
#{executor},
#{refundChannels},
#{refundCurrency},
#{refundAmount},
#{refundTime},
#{refundRemark},
#{refundVoucher},
#{createTime},
#{updateTime},
);
</insert>
<update id="update">
update cash_record
<set>
<if test="status!=null">
status = #{status},
</if>
</set>
<if test="status != null">
status = #{status},
</if>
<if test="rejectReason!=null">
reject_reason = #{rejectReason},
</if>
<if test="refundReason != null">
refund_reason = #{refundReason},
</if>
<if test="refundCurrency != null">
refund_currency = #{refundCurrency},
</if>
<if test="refundAmount != null">
refund_amount = #{refundAmount},
</if>
<if test="refundRemark != null">
refund_remark = #{refundRemark},
</if>
</update>
<select id="select" resultType="com.example.demo.domain.vo.cash.CashCollection">
select
id,
order_type,
jwcode,
name,
market,
activity,
order_code,
bank_code,
goods_name,
goods_num,
payment_currency,
payment_amount,
received_currency,
received_amount,
handling_charge,
received_market,
pay_type,
pay_time,
received_time,
status,
submitter_id,
voucher,
remark,
reject_reason,
create_time,
update_time
from cash_record
<where>
<if test="status != null">
status = #{status}
</if>
<if test="orderCode != null">
and order_code = #{orderCode}
</if>
<if test="name != null and name.size > 0">
and name = #{name}
</if>
<if test="jwcode != null">
and jwcode = #{jwcode}
</if>
<if test="market!= null and market.size > 0">
AND user.market IN
<foreach collection="market" item="market" open="(" separator="," close=")">
#{market}
</foreach>
</if>
<if test="goodsName != null and goodName.size>0">
and goods_name = #{goodsName}
</if>
<if test="refundCurrency != null and refundCurrency.size>0">
and refund_currency = #{refundCurrency}
</if>
<if test="payType != null">
and pay_type = #{payType}
</if>
<if test="startTime != null and endTime != null">
and `refund_time` BETWEEN #{startTime} AND #{endTime}
</if>
</where>
</select>
</mapper>

132
src/main/resources/processes/work.bpmn20.xml

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
<process id="work" name="work" isExecutable="true">
<startEvent id="sid-f8ab3e40-3236-4e2c-8c2e-42c8b0673350" name="start"/>
<userTask id="sid-bf6d438a-c124-4d0b-9616-7a8917fe31be" name="当地财务审核">
<extensionElements>
<flowable:executionListener class="Class 1"/>
</extensionElements>
</userTask>
<sequenceFlow id="sid-21dc60a2-3215-441d-a332-9fcc18f3554a" sourceRef="sid-f8ab3e40-3236-4e2c-8c2e-42c8b0673350" targetRef="sid-bf6d438a-c124-4d0b-9616-7a8917fe31be"/>
<userTask id="sid-468a34ae-6742-442d-968a-4a64da1c4d42" name="地区负责人审核"/>
<exclusiveGateway id="sid-2fee5126-0cab-454d-83b8-7e1590ca672b"/>
<sequenceFlow id="sid-d99251a8-f290-4c61-88f3-67c4fdb3936f" sourceRef="sid-bf6d438a-c124-4d0b-9616-7a8917fe31be" targetRef="sid-2fee5126-0cab-454d-83b8-7e1590ca672b"/>
<endEvent id="sid-dd93e6d7-7685-442e-923b-1914223d8fab">
<terminateEventDefinition/>
</endEvent>
<sequenceFlow id="sid-383a4ef0-2fc2-415a-b8cf-bab0bcca8273" sourceRef="sid-2fee5126-0cab-454d-83b8-7e1590ca672b" targetRef="sid-dd93e6d7-7685-442e-923b-1914223d8fab" name="财务驳回">
<conditionExpression xsi:type="tFormalExpression">${status=='12'}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="sid-89dc161a-9f8b-4c81-be12-c9d517118d4f" sourceRef="sid-2fee5126-0cab-454d-83b8-7e1590ca672b" targetRef="sid-468a34ae-6742-442d-968a-4a64da1c4d42" name="当地财务审核通过">
<conditionExpression xsi:type="tFormalExpression">${status=='20'}</conditionExpression>
</sequenceFlow>
<exclusiveGateway id="sid-2e8f3dde-f7dd-42e6-9578-188489000af4"/>
<sequenceFlow id="sid-4e6091b1-dac2-4af9-a10b-4102962f699d" sourceRef="sid-468a34ae-6742-442d-968a-4a64da1c4d42" targetRef="sid-2e8f3dde-f7dd-42e6-9578-188489000af4"/>
<endEvent id="sid-c7acb14b-e462-4e1a-bdf6-6b05c96b11f9">
<terminateEventDefinition/>
</endEvent>
<sequenceFlow id="sid-c99e2377-dfb1-4a07-a6fd-487fd03f45c3" sourceRef="sid-2e8f3dde-f7dd-42e6-9578-188489000af4" targetRef="sid-c7acb14b-e462-4e1a-bdf6-6b05c96b11f9" name="负责人驳回">
<conditionExpression xsi:type="tFormalExpression">${status=='22'}</conditionExpression>
</sequenceFlow>
<userTask id="sid-22acc750-e0a9-49d1-80e2-2d8b19ec0a9f" name="总部财务审批"/>
<sequenceFlow id="sid-9c0b8ad2-8f5f-418f-913c-9b2be1ea139e" sourceRef="sid-2e8f3dde-f7dd-42e6-9578-188489000af4" targetRef="sid-22acc750-e0a9-49d1-80e2-2d8b19ec0a9f" name="地区负责人审核通过">
<conditionExpression xsi:type="tFormalExpression">${status=='30'}</conditionExpression>
</sequenceFlow>
<exclusiveGateway id="sid-82edb572-12d0-457e-a5b0-c416803c42ef"/>
<sequenceFlow id="sid-557630ce-b991-400e-a800-1d09fa2999d9" sourceRef="sid-22acc750-e0a9-49d1-80e2-2d8b19ec0a9f" targetRef="sid-82edb572-12d0-457e-a5b0-c416803c42ef"/>
<endEvent id="sid-44496c97-4cae-4011-8af2-6923f8016a3f">
<terminateEventDefinition/>
</endEvent>
<sequenceFlow id="sid-034cda19-b5a4-4505-9880-7bc947c6a1c1" sourceRef="sid-82edb572-12d0-457e-a5b0-c416803c42ef" targetRef="sid-44496c97-4cae-4011-8af2-6923f8016a3f" name="总部财务审批">
<conditionExpression xsi:type="tFormalExpression"/>
</sequenceFlow>
<endEvent id="sid-6df885e4-d40a-4a6c-bff0-bc8604eb186a">
<terminateEventDefinition/>
<extensionElements>
<flowable:executionListener class="Class 1" event="end">
<flowable:field name="Name 1"/>
</flowable:executionListener>
</extensionElements>
</endEvent>
<sequenceFlow id="sid-dc24872f-5c8e-43fa-8348-6ea038d3dda9" sourceRef="sid-82edb572-12d0-457e-a5b0-c416803c42ef" targetRef="sid-6df885e4-d40a-4a6c-bff0-bc8604eb186a" name="总部财务审批通过">
<conditionExpression xsi:type="tFormalExpression">${status=='40'}</conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_work">
<bpmndi:BPMNPlane bpmnElement="work" id="BPMNPlane_work">
<bpmndi:BPMNShape id="shape-822c5fe2-36b7-4467-826c-0f1dd8fc80fe" bpmnElement="sid-f8ab3e40-3236-4e2c-8c2e-42c8b0673350">
<omgdc:Bounds x="-70.0" y="40.0" width="30.0" height="30.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="shape-084334ea-0095-4ca2-9c70-620a2e5ffeb7" bpmnElement="sid-bf6d438a-c124-4d0b-9616-7a8917fe31be">
<omgdc:Bounds x="5.0" y="10.0" width="100.0" height="80.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-19e173f1-0fd2-43ca-995f-d1d03097318c" bpmnElement="sid-21dc60a2-3215-441d-a332-9fcc18f3554a">
<omgdi:waypoint x="-40.0" y="47.5"/>
<omgdi:waypoint x="5.0" y="50.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="shape-84d30d41-e66a-496e-8ce7-2d3d6a384345" bpmnElement="sid-468a34ae-6742-442d-968a-4a64da1c4d42">
<omgdc:Bounds x="205.0" y="10.0" width="100.0" height="80.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="shape-9b68e4fd-ea80-4b09-b9f3-fd734bb4321f" bpmnElement="sid-2fee5126-0cab-454d-83b8-7e1590ca672b">
<omgdc:Bounds x="130.0" y="30.0" width="40.0" height="40.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-921c6dc0-4707-417f-af15-c3339f530411" bpmnElement="sid-d99251a8-f290-4c61-88f3-67c4fdb3936f">
<omgdi:waypoint x="105.0" y="50.0"/>
<omgdi:waypoint x="130.0" y="50.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="shape-bac9b355-7d7d-4779-9c3f-814f6023fecb" bpmnElement="sid-dd93e6d7-7685-442e-923b-1914223d8fab">
<omgdc:Bounds x="135.0" y="100.0" width="30.0" height="30.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-5bafc0c0-2bfc-4aca-bf40-4057253a8ec7" bpmnElement="sid-383a4ef0-2fc2-415a-b8cf-bab0bcca8273">
<omgdi:waypoint x="150.0" y="70.0"/>
<omgdi:waypoint x="150.0" y="100.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="edge-45ad2c75-2cb6-4d16-9fbe-461d31f91ea8" bpmnElement="sid-89dc161a-9f8b-4c81-be12-c9d517118d4f">
<omgdi:waypoint x="170.0" y="50.0"/>
<omgdi:waypoint x="205.0" y="50.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="shape-517c52d0-04dd-472f-b807-df6a9d843e99" bpmnElement="sid-2e8f3dde-f7dd-42e6-9578-188489000af4">
<omgdc:Bounds x="355.0" y="30.0" width="40.0" height="40.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-8a30bd1d-80d1-4ae8-a3ed-81c72c55213f" bpmnElement="sid-4e6091b1-dac2-4af9-a10b-4102962f699d">
<omgdi:waypoint x="305.0" y="50.0"/>
<omgdi:waypoint x="355.0" y="50.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="shape-a44faab4-bac1-43e7-bf22-c173b971e3b7" bpmnElement="sid-c7acb14b-e462-4e1a-bdf6-6b05c96b11f9">
<omgdc:Bounds x="360.0" y="100.0" width="30.0" height="30.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-26a40ce5-e66e-45d9-9dad-8f5fa6633c07" bpmnElement="sid-c99e2377-dfb1-4a07-a6fd-487fd03f45c3">
<omgdi:waypoint x="375.0" y="70.0"/>
<omgdi:waypoint x="375.0" y="100.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="shape-6f86a7c0-32a7-4511-baa7-52f11ce57a21" bpmnElement="sid-22acc750-e0a9-49d1-80e2-2d8b19ec0a9f">
<omgdc:Bounds x="440.0" y="10.0" width="100.0" height="80.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-1aa7f3d5-b79c-44de-aba3-eb086e8a5274" bpmnElement="sid-9c0b8ad2-8f5f-418f-913c-9b2be1ea139e">
<omgdi:waypoint x="395.0" y="50.0"/>
<omgdi:waypoint x="440.0" y="50.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="shape-bc18feae-7519-4693-b30c-ec647a3c985c" bpmnElement="sid-82edb572-12d0-457e-a5b0-c416803c42ef">
<omgdc:Bounds x="580.0" y="30.0" width="40.0" height="40.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-afe759c8-9b35-4771-a711-01be0bd46230" bpmnElement="sid-557630ce-b991-400e-a800-1d09fa2999d9">
<omgdi:waypoint x="540.0" y="50.0"/>
<omgdi:waypoint x="580.0" y="50.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="shape-400c0807-7443-488e-8d1e-a72e93853f65" bpmnElement="sid-44496c97-4cae-4011-8af2-6923f8016a3f">
<omgdc:Bounds x="585.0" y="100.0" width="30.0" height="30.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-89fb4c38-c73e-4ab5-ba48-ddeae0b199e1" bpmnElement="sid-034cda19-b5a4-4505-9880-7bc947c6a1c1">
<omgdi:waypoint x="600.0" y="70.0"/>
<omgdi:waypoint x="600.0" y="100.0"/>
</bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="shape-26a2f5e7-cd7d-4319-9442-a2006a703954" bpmnElement="sid-6df885e4-d40a-4a6c-bff0-bc8604eb186a">
<omgdc:Bounds x="665.0" y="35.0" width="30.0" height="30.0"/>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="edge-1bed364a-4069-450b-b9f0-4691f385e817" bpmnElement="sid-dc24872f-5c8e-43fa-8348-6ea038d3dda9">
<omgdi:waypoint x="620.0" y="50.0"/>
<omgdi:waypoint x="665.0" y="50.0"/>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
Loading…
Cancel
Save