24282 пре 3 месеци
родитељ
комит
f417886206

+ 1 - 1
jy-business/src/main/java/com/jy/business/config/RabbitMqUtil.java

@@ -12,7 +12,7 @@ public class RabbitMqUtil {
     /**
      * 发送合同确认到账
      */
-    public static void sendContract(Long id) {
+    public static void sendConfirmFundReceived(Long id) {
         rabbitTemplate.convertAndSend(RabbitConfig.JY_DIRECT_EXCHANGE, RabbitConfig.CONFIRM_RECEIVED_QUEUE, id);
     }
 

+ 8 - 8
jy-business/src/main/java/com/jy/business/contract/controller/ContractFundReceivedController.java

@@ -44,14 +44,14 @@ public class ContractFundReceivedController {
         return contractFundReceivedService.getDetail(dto.getId());
     }
 
-    ///**
-    // * 合同到账新增
-    // */
-    //@PostMapping("/add")
-    //public void add(@RequestBody ContractFundReceivedDto dto) {
-    //    contractFundReceivedService.add(dto);
-    //}
-    //
+    /**
+     * 确认到账
+     */
+    @PostMapping("/confirmArrivalAccount")
+    public void confirmArrivalAccount(@RequestBody ContractFundReceivedDto dto) {
+        contractFundReceivedService.confirmArrivalAccount(dto);
+    }
+
     ///**
     // * 合同到账编辑
     // */

+ 17 - 5
jy-business/src/main/java/com/jy/business/contract/dao/ContractFundReceivedDao.java

@@ -1,10 +1,13 @@
 package com.jy.business.contract.dao;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.capital.dao.CapitalAccountDao;
+import com.jy.business.capital.model.table.CapitalAccountTable;
 import com.jy.business.contract.mapper.ContractFundReceivedMapper;
 import com.jy.business.contract.model.dto.ContractFundReceivedSelectDto;
 import com.jy.business.contract.model.entity.ContractFundReceived;
 import com.jy.business.contract.model.table.ContractFundReceivedTable;
+import com.jy.business.contract.model.table.ContractInfoTable;
 import com.jy.business.contract.model.vo.ContractFundReceivedVo;
 import com.jy.framework.model.base.BaseDao;
 import com.jy.system.service.AuthService;
@@ -14,21 +17,26 @@ import org.springframework.stereotype.Service;
 @Service
 public class ContractFundReceivedDao extends BaseDao<ContractFundReceivedMapper, ContractFundReceived> {
 
-    @Resource
-    private AuthService authService;
-
     /**
      * 合同到账分页
      */
     public Page<ContractFundReceivedVo> getPage(ContractFundReceivedSelectDto dto) {
         ContractFundReceivedTable cfr = ContractFundReceivedTable.cfr;
+        ContractInfoTable ci = ContractInfoTable.ci;
+        CapitalAccountTable ca = CapitalAccountTable.ca;
 
         return sql(ContractFundReceivedVo.class)
                 .select(
-                        cfr.all
+                        cfr.all,
+                        ci.contractNo,
+                        ca.accountAlias
                 )
                 .from(cfr)
+                .leftJoin(ci).on(ci.id.eq(cfr.contractId))
+                .leftJoin(ca).on(ca.id.eq(cfr.capitalAccountId))
                 .where(
+                        cfr.hasReceived.eq(dto.getHasReceived()),
+                        ci.contractNo.like(dto.getContractNo())
                 )
                 .orderBy(
                         cfr.id.desc()
@@ -41,12 +49,16 @@ public class ContractFundReceivedDao extends BaseDao<ContractFundReceivedMapper,
      */
     public ContractFundReceivedVo getDetail(Long id) {
         ContractFundReceivedTable cfr = ContractFundReceivedTable.cfr;
+        ContractInfoTable ci = ContractInfoTable.ci;
 
         return sql(ContractFundReceivedVo.class)
                 .select(
-                        cfr.all
+                        cfr.all,
+                        ci.contractNo,
+                        ci.sellBankAccount
                 )
                 .from(cfr)
+                .leftJoin(ci).on(ci.id.eq(cfr.contractId))
                 .where(
                         cfr.id.eq(id)
                 )

+ 10 - 0
jy-business/src/main/java/com/jy/business/contract/model/dto/ContractFundReceivedSelectDto.java

@@ -14,4 +14,14 @@ import lombok.Setter;
 @Setter
 public class ContractFundReceivedSelectDto extends BaseSelectDto {
 
+    /**
+     * 是否到账
+     */
+    private Integer hasReceived;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
 }

+ 9 - 3
jy-business/src/main/java/com/jy/business/contract/model/entity/ContractFundReceived.java

@@ -4,17 +4,18 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jy.framework.model.base.BaseIdPo;
-import java.math.BigDecimal;
-import java.util.Date;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * <p>
  * 合同到账
  * </p>
  *
- * @author 
+ * @author
  * @since 2025-06-11
  */
 @Getter
@@ -48,6 +49,11 @@ public class ContractFundReceived extends BaseIdPo {
     private Date receivedTime;
 
     /**
+     * 资金流水id
+     */
+    private Long capitalTransactionsId;
+
+    /**
      * 备注
      */
     private String remark;

+ 5 - 0
jy-business/src/main/java/com/jy/business/contract/model/table/ContractFundReceivedTable.java

@@ -40,6 +40,11 @@ public class ContractFundReceivedTable extends Table<ContractFundReceived> {
     public QueryColumn receivedTime = this.field(ContractFundReceived::getReceivedTime);
 
     /**
+     * 资金流水id
+     */
+    public QueryColumn capitalTransactionsId = this.field(ContractFundReceived::getCapitalTransactionsId);
+
+    /**
      * 备注
      */
     public QueryColumn remark = this.field(ContractFundReceived::getRemark);

+ 16 - 1
jy-business/src/main/java/com/jy/business/contract/model/vo/ContractFundReceivedVo.java

@@ -7,11 +7,26 @@ import lombok.Setter;
 /**
  * 合同到账列表查询返回值实体
  *
- * @author 
+ * @author
  * @since 2025-06-11
  */
 @Getter
 @Setter
 public class ContractFundReceivedVo extends ContractFundReceived {
 
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 银行账号
+     */
+    private String sellBankAccount;
+
+    /**
+     * 账号别名
+     */
+    private String accountAlias;
+
 }

+ 5 - 0
jy-business/src/main/java/com/jy/business/contract/service/ContractFundReceivedService.java

@@ -42,4 +42,9 @@ public interface ContractFundReceivedService {
      */
     void delete(List<Long> idList);
 
+    /**
+     * 确认到账
+     */
+    void confirmArrivalAccount(ContractFundReceivedDto dto);
+
 }

+ 52 - 1
jy-business/src/main/java/com/jy/business/contract/service/impl/ContractFundReceivedServiceImpl.java

@@ -1,11 +1,20 @@
 package com.jy.business.contract.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jy.business.capital.dao.CapitalAccountDao;
+import com.jy.business.capital.model.dto.CapitalTransactionsDto;
+import com.jy.business.capital.model.entity.CapitalAccount;
+import com.jy.business.capital.service.CapitalTransactionsService;
+import com.jy.business.config.RabbitMqUtil;
 import com.jy.business.contract.dao.ContractFundReceivedDao;
 import com.jy.business.contract.model.dto.ContractFundReceivedDto;
 import com.jy.business.contract.model.dto.ContractFundReceivedSelectDto;
+import com.jy.business.contract.model.entity.ContractFundReceived;
 import com.jy.business.contract.model.vo.ContractFundReceivedVo;
 import com.jy.business.contract.service.ContractFundReceivedService;
+import com.jy.framework.model.base.BaseIdPo;
+import com.jy.framework.model.constants.CommonConstant;
 import com.jy.framework.utils.AssertUtil;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
@@ -18,7 +27,7 @@ import java.util.List;
  * 合同到账 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2025-06-11
  */
 @Service
@@ -27,6 +36,12 @@ public class ContractFundReceivedServiceImpl implements ContractFundReceivedServ
     @Resource
     private ContractFundReceivedDao contractFundReceivedDao;
 
+    @Resource
+    private CapitalTransactionsService capitalTransactionsService;
+
+    @Resource
+    private CapitalAccountDao capitalAccountDao;
+
     @Override
     public Page<ContractFundReceivedVo> getPage(ContractFundReceivedSelectDto dto) {
         return contractFundReceivedDao.getPage(dto);
@@ -36,6 +51,14 @@ public class ContractFundReceivedServiceImpl implements ContractFundReceivedServ
     public ContractFundReceivedVo getDetail(Long id) {
         ContractFundReceivedVo vo = contractFundReceivedDao.getDetail(id);
         AssertUtil.notNull(vo, "未知数据");
+
+        if (CommonConstant.NO.equals(vo.getHasReceived()) && vo.getSellBankAccount() != null) {
+            CapitalAccount capitalAccount = capitalAccountDao.getOne(q -> q.eq(CapitalAccount::getAccount, vo.getSellBankAccount()));
+            if (capitalAccount != null) {
+                vo.setCapitalAccountId(capitalAccount.getId());
+            }
+        }
+
         return vo;
     }
 
@@ -55,4 +78,32 @@ public class ContractFundReceivedServiceImpl implements ContractFundReceivedServ
         contractFundReceivedDao.removeBatchByIds(idList);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void confirmArrivalAccount(ContractFundReceivedDto dto) {
+        CapitalTransactionsDto capitalTransactionsDto = new CapitalTransactionsDto();
+        capitalTransactionsDto.setId(IdWorker.getId());
+        capitalTransactionsDto.setCapitalAccountId(dto.getCapitalAccountId());
+        capitalTransactionsDto.setTradingTime(dto.getReceivedTime());
+        capitalTransactionsDto.setType(1);
+        capitalTransactionsDto.setAmount(dto.getReceivedAmount());
+        capitalTransactionsDto.setTargetType(70);
+
+        dto.setCapitalTransactionsId(capitalTransactionsDto.getId());
+        boolean update = contractFundReceivedDao.update(q -> q
+                .eq(BaseIdPo::getId, dto.getId())
+                .eq(ContractFundReceived::getHasReceived, CommonConstant.NO)
+                .set(ContractFundReceived::getCapitalAccountId, dto.getCapitalAccountId())
+                .set(ContractFundReceived::getHasReceived, CommonConstant.YES)
+                .set(ContractFundReceived::getReceivedTime, dto.getReceivedTime())
+                .set(ContractFundReceived::getCapitalTransactionsId, capitalTransactionsDto.getId())
+                .set(ContractFundReceived::getRemark, dto.getRemark())
+        );
+        AssertUtil.eqTrue(update, "资金已到账");
+
+        capitalTransactionsService.add(capitalTransactionsDto);
+
+        RabbitMqUtil.sendConfirmFundReceived(dto.getId());
+    }
+
 }

+ 1 - 1
jy-starter/src/test/java/MySpringBootTest.java

@@ -27,7 +27,7 @@ public class MySpringBootTest {
 
     @Test
     public void test2(){
-        RabbitMqUtil.sendContract(9999999L);
+        RabbitMqUtil.sendConfirmFundReceived(9999999L);
     }
 
     @Test

+ 2 - 12
jy-ui/src/api/business/contract/fundReceived.ts

@@ -11,17 +11,7 @@ export function getDetailApi(params: StrAnyObj): Promise<StrAnyObj> {
   return request.get('/contractFundReceived/getDetail', params)
 }
 
-// 合同到账新增
-export function addApi(data: StrAnyObj): Promise<void> {
-  return request.post('/contractFundReceived/add', data)
-}
-
 // 合同到账编辑
-export function editApi(data: StrAnyObj): Promise<void> {
-  return request.post('/contractFundReceived/edit', data)
-}
-
-// 合同到账删除
-export function deleteApi(data: StrAnyObj): Promise<void> {
-  return request.post('/contractFundReceived/delete', data)
+export function confirmArrivalAccountApi(data: StrAnyObj): Promise<void> {
+  return request.post('/contractFundReceived/confirmArrivalAccount', data)
 }

+ 54 - 141
jy-ui/src/views/business/contract/fundReceived/index.vue

@@ -5,7 +5,15 @@ import { ToolbarConfigType } from '@/components/AToolbar/type'
 import { ColumnConfigType } from '@/components/ATable/type'
 import { StrAnyObj, StrAnyObjArr } from '@/typings'
 import { useHandleData } from '@/utils/useHandleData'
-import { getPageApi, getDetailApi, addApi, editApi, deleteApi } from '@/api/business/contract/fundReceived'
+import {
+  getPageApi,
+  getDetailApi,
+  addApi,
+  editApi,
+  deleteApi,
+  confirmArrivalAccountApi
+} from '@/api/business/contract/fundReceived'
+import {getPageApi as getCapitalAccountPageApi} from "@/api/business/capital/account";
 
 const queryRef = ref<InstanceType<typeof AForm>>()
 const formRef = ref<InstanceType<typeof AForm>>()
@@ -24,49 +32,15 @@ const dialogVisible = ref<boolean>(false)
 const queryConfig: FormConfigType[] = [
   {
     type: 'input',
-    prop: 'contractId',
-    label: '合同id'
+    prop: 'contractNo',
+    label: '合同'
   },
   {
-    type: 'input',
-    prop: 'receivedAmount',
-    label: '到账金额'
-  },
-  {
-    type: 'input',
-    prop: 'capitalAccountId',
-    label: '资金账号id'
-  },
-  {
-    type: 'input',
+    type: 'select',
     prop: 'hasReceived',
-    label: '是否到账'
-  },
-  {
-    type: 'input',
-    prop: 'receivedTime',
-    label: '到账时间'
-  },
-  {
-    type: 'input',
-    prop: 'remark',
-    label: '备注'
-  },
-  {
-    type: 'input',
-    prop: 'createTime',
-    label: '创建时间'
-  },
-  {
-    type: 'input',
-    prop: 'updateTime',
-    label: '更新时间'
-  },
-  {
-    type: 'input',
-    prop: 'updateUser',
-    label: '更新人'
-  },
+    label: '是否到账',
+    dict: 'yes_no'
+  }
 ]
 
 const toolbarConfig: ToolbarConfigType[] = [
@@ -83,41 +57,26 @@ const toolbarConfig: ToolbarConfigType[] = [
       queryRef.value?.resetFields()
       getPage()
     }
-  },
-  {
-    common: 'add',
-    click() {
-      dialogVisible.value = true
-      dialogTitle.value = '新增'
-    }
-  },
-  {
-    common: 'delete',
-    disabled() {
-      return selectKeys.value.length == 0
-    },
-    click() {
-      handleRemove(selectKeys.value)
-    }
   }
 ]
 
 const columnConfig: ColumnConfigType[] = [
   {
-    prop: 'contractId',
-    label: '合同id'
+    prop: 'contractNo',
+    label: '合同'
   },
   {
     prop: 'receivedAmount',
     label: '到账金额'
   },
   {
-    prop: 'capitalAccountId',
-    label: '资金账号id'
+    prop: 'hasReceived',
+    label: '是否到账',
+    dict: 'yes_no'
   },
   {
-    prop: 'hasReceived',
-    label: '是否到账'
+    prop: 'accountAlias',
+    label: '资金账号'
   },
   {
     prop: 'receivedTime',
@@ -128,35 +87,20 @@ const columnConfig: ColumnConfigType[] = [
     label: '备注'
   },
   {
-    prop: 'createTime',
-    label: '创建时间'
-  },
-  {
-    prop: 'updateTime',
-    label: '更新时间'
-  },
-  {
-    prop: 'updateUser',
-    label: '更新人'
-  },
-  {
-    width: 250,
+    width: 180,
     handleConfig: [
       {
-        common: 'update',
+        if: (row) => {
+          return row.hasReceived == 0
+        },
+        text: '确认到账',
         click(row) {
           dialogVisible.value = true
-          dialogTitle.value = '编辑'
+          dialogTitle.value = '确认到账'
           getDetailApi({ id: row.id }).then((resp: StrAnyObj) => {
             formData.value = resp
           })
         }
-      },
-      {
-        common: 'delete',
-        click(row) {
-          handleRemove([row.id])
-        }
       }
     ]
   }
@@ -165,58 +109,45 @@ const columnConfig: ColumnConfigType[] = [
 const formConfig: FormConfigType[] = [
   {
     type: 'input',
-    prop: 'contractId',
-    label: '合同id',
-    rule: [{ required: true, message: '合同id不能为空', trigger: 'blur' }]
+    prop: 'contractNo',
+    label: '合同',
+    disabled: true
   },
   {
     type: 'input',
     prop: 'receivedAmount',
     label: '到账金额',
-    rule: [{ required: true, message: '到账金额不能为空', trigger: 'blur' }]
+    disabled: true
   },
   {
-    type: 'input',
+    type: 'select',
     prop: 'capitalAccountId',
-    label: '资金账号id',
-    rule: [{ required: true, message: '资金账号id不能为空', trigger: 'blur' }]
-  },
-  {
-    type: 'input',
-    prop: 'hasReceived',
-    label: '是否到账',
-    rule: [{ required: true, message: '是否到账不能为空', trigger: 'blur' }]
+    label: '资金账号',
+    keyName: 'id',
+    labelName: 'accountAlias',
+    async option() {
+      const data = await getCapitalAccountPageApi({ searchAll: true })
+      return data.records
+    },
+    rule: [{ required: true, message: '资金账号不能为空', trigger: 'blur' }]
   },
   {
-    type: 'input',
+    type: 'datePicker',
     prop: 'receivedTime',
     label: '到账时间',
+    datePickerType: 'datetime',
+    format: 'YYYY-MM-DD hh:mm:ss',
+    valueFormat: 'YYYY-MM-DD hh:mm:ss',
     rule: [{ required: true, message: '到账时间不能为空', trigger: 'blur' }]
   },
   {
     type: 'input',
+    itemType: 'textarea',
     prop: 'remark',
     label: '备注',
-    rule: [{ required: true, message: '备注不能为空', trigger: 'blur' }]
-  },
-  {
-    type: 'input',
-    prop: 'createTime',
-    label: '创建时间',
-    rule: [{ required: true, message: '创建时间不能为空', trigger: 'blur' }]
-  },
-  {
-    type: 'input',
-    prop: 'updateTime',
-    label: '更新时间',
-    rule: [{ required: true, message: '更新时间不能为空', trigger: 'blur' }]
-  },
-  {
-    type: 'input',
-    prop: 'updateUser',
-    label: '更新人',
-    rule: [{ required: true, message: '更新人不能为空', trigger: 'blur' }]
-  },
+    rows: 3,
+    span: 24
+  }
 ]
 
 onMounted(() => {
@@ -236,34 +167,17 @@ function tableSelectionChange(item: StrAnyObjArr) {
 
 function formSubmit() {
   formRef.value?.validate(() => {
-    if (formData.value.id) {
-      editApi(formData.value).then(() => {
-        dialogVisible.value = false
-        ElMessage.success('修改成功')
-        getPage()
-      })
-    } else {
-      addApi(formData.value).then(() => {
-        dialogVisible.value = false
-        ElMessage.success('新增成功')
-        getPage()
-      })
-    }
+    confirmArrivalAccountApi(formData.value).then(() => {
+      dialogVisible.value = false
+      ElMessage.success('确认成功')
+      getPage()
+    })
   })
 }
 
 function formClosed() {
   formRef.value?.resetFields()
 }
-
-function handleRemove(idList: string[]) {
-  useHandleData('是否确认删除?', () => {
-    deleteApi({ idList }).then(() => {
-      ElMessage.success('删除成功')
-      getPage()
-    })
-  })
-}
 </script>
 
 <template>
@@ -273,7 +187,6 @@ function handleRemove(idList: string[]) {
     </el-card>
 
     <a-table
-      selection
       :data="tableData"
       :page-total="pageTotal"
       :toolbar-config="toolbarConfig"

+ 0 - 17
jy-ui/src/views/business/contract/info/index.vue

@@ -43,22 +43,6 @@ const toolbarConfig: ToolbarConfigType[] = [
       queryRef.value?.resetFields()
       getPage()
     }
-  },
-  {
-    common: 'add',
-    click() {
-      dialogVisible.value = true
-      dialogTitle.value = '新增'
-    }
-  },
-  {
-    common: 'delete',
-    disabled() {
-      return selectKeys.value.length == 0
-    },
-    click() {
-      handleRemove(selectKeys.value)
-    }
   }
 ]
 
@@ -461,7 +445,6 @@ function handleRemove(idList: string[]) {
     </el-card>
 
     <a-table
-      selection
       :data="tableData"
       :page-total="pageTotal"
       :toolbar-config="toolbarConfig"