Compare commits
2 Commits
cc733c3073
...
11bc92ef9c
Author | SHA1 | Date | |
---|---|---|---|
![]() |
11bc92ef9c | ||
![]() |
4793fda2a2 |
@ -0,0 +1,62 @@
|
||||
<script setup lang="ts">
|
||||
import { useBoolean } from '@sa/hooks';
|
||||
|
||||
defineOptions({
|
||||
name: 'BatchStatusSwitch'
|
||||
});
|
||||
|
||||
interface Props {
|
||||
disabled?: boolean;
|
||||
info?: string;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
disabled: false,
|
||||
info: ''
|
||||
});
|
||||
|
||||
const value = defineModel<Api.Common.EnableStatus>('value', { default: '0' });
|
||||
|
||||
interface Emits {
|
||||
(e: 'submitted', value: Api.Common.EnableStatus, callback: (flag: boolean) => void): void;
|
||||
}
|
||||
|
||||
const emit = defineEmits<Emits>();
|
||||
|
||||
/** 状态切换过程的 loading 状态 */
|
||||
const { bool: loading, setTrue: startLoading, setFalse: endLoading } = useBoolean();
|
||||
|
||||
const handleUpdateValue = (val: Api.Common.EnableStatus) => {
|
||||
value.value = val === '0' ? '1' : '0';
|
||||
|
||||
//其他功能没有特殊需求,专门为批量控制写一个逻辑
|
||||
window.$dialog?.warning({
|
||||
title: '温馨提示',
|
||||
content: `您确定外围数据` + ((value.value === '0')? `已经`:`未`) + `导入完成吗?`,
|
||||
positiveText: '确定',
|
||||
negativeText: '取消',
|
||||
onPositiveClick: () => {
|
||||
startLoading();
|
||||
emit('submitted', val, flag => {
|
||||
if (flag) value.value = val;
|
||||
endLoading();
|
||||
});
|
||||
},
|
||||
onNegativeClick: () => {}
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<NSwitch
|
||||
v-model:value="value"
|
||||
:loading="loading"
|
||||
:rubber-band="false"
|
||||
checked-value="1"
|
||||
unchecked-value="0"
|
||||
:disabled="props.disabled"
|
||||
@update:value="handleUpdateValue"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<style scoped></style>
|
@ -19,3 +19,13 @@ export function fetchUpdateBatch (data: Api.Mps.BatchOperateParams) {
|
||||
});
|
||||
}
|
||||
|
||||
/** 切换导入状态 */
|
||||
export function switchImportDataStatus (data: Api.Mps.BatchOperateParams) {
|
||||
return request<boolean>({
|
||||
url: '/mps/batch/switchImportDataStatus',
|
||||
method: 'put',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
@ -15,21 +15,27 @@ declare namespace Api {
|
||||
/** batch */
|
||||
type Batch = Common.CommonRecord<{
|
||||
/** 批次月份 */
|
||||
batchMonth: string;
|
||||
batchMonth: string;
|
||||
/** 批量代码 */
|
||||
batchCode: string;
|
||||
/** 批量名称 */
|
||||
batchName: string;
|
||||
/** 数据导入状态 */
|
||||
importStatus: string;
|
||||
/** 预批量时间 */
|
||||
preBatchDate: string;
|
||||
preBatchDate: string;
|
||||
/** 预批量状态(0初始 1成功 9失败) */
|
||||
preBatchStatus: string;
|
||||
preBatchStatus: string;
|
||||
/** 正式批量时间 */
|
||||
afterBatchDate: string;
|
||||
afterBatchDate: string;
|
||||
/** 正式批量状态(0初始 1成功 9失败) */
|
||||
afterBatchStatus: string;
|
||||
afterBatchStatus: string;
|
||||
/** 核对状态(0未核对 1已核对) */
|
||||
checkStatus: string;
|
||||
checkStatus: string;
|
||||
/** 核对人 */
|
||||
checkBy: number;
|
||||
checkBy: number;
|
||||
/** 核对备注 */
|
||||
checkRemark: string;
|
||||
checkRemark: string;
|
||||
}>;
|
||||
|
||||
/** batch search params */
|
||||
@ -47,6 +53,9 @@ declare namespace Api {
|
||||
Pick<
|
||||
Api.Mps.Batch,
|
||||
| 'batchMonth'
|
||||
| 'batchCode'
|
||||
| 'batchName'
|
||||
| 'importStatus'
|
||||
| 'preBatchDate'
|
||||
| 'preBatchStatus'
|
||||
| 'afterBatchDate'
|
||||
|
@ -1,6 +1,5 @@
|
||||
<script setup lang="tsx">
|
||||
import { NDivider } from 'naive-ui';
|
||||
import { fetchGetBatchList } from '@/service/api/mps/batch';
|
||||
import {fetchGetBatchList, switchImportDataStatus} from '@/service/api/mps/batch';
|
||||
import { useAppStore } from '@/store/modules/app';
|
||||
import { useAuth } from '@/hooks/business/auth';
|
||||
import { useTable, useTableOperate } from '@/hooks/common/table';
|
||||
@ -12,10 +11,33 @@ import {ref, watch} from "vue";
|
||||
import {useBoolean} from "~/packages/hooks";
|
||||
import {useDict} from "@/hooks/business/dict";
|
||||
import DictTag from '@/components/custom/dict-tag.vue';
|
||||
import BatchStatusSwitch from '@/components/custom/batch-status-switch.vue';
|
||||
|
||||
defineOptions({
|
||||
name: 'BatchList'
|
||||
});
|
||||
|
||||
/** 处理状态切换 */
|
||||
async function handleStatusChange(
|
||||
row: Api.Mps.Batch,
|
||||
value: Api.Common.EnableStatus,
|
||||
callback: (flag: boolean) => void
|
||||
) {
|
||||
const { error } = await switchImportDataStatus({
|
||||
batchMonth: row.batchMonth,
|
||||
batchCode: row.batchCode,
|
||||
importStatus: value
|
||||
});
|
||||
|
||||
callback(!error);
|
||||
|
||||
if (!error) {
|
||||
window.$message?.success('数据导入状态修改成功');
|
||||
await getData();
|
||||
}
|
||||
}
|
||||
|
||||
useDict('data_import_status');
|
||||
useDict('after_batch_status');
|
||||
useDict('mps_check_status');
|
||||
useDict('pre_batch_status');
|
||||
@ -66,6 +88,41 @@ const {
|
||||
ellipsis: true,
|
||||
resizable: true
|
||||
},
|
||||
{
|
||||
key: 'batchCode',
|
||||
title: '批量代码',
|
||||
align: 'center',
|
||||
minWidth: 120,
|
||||
ellipsis: true,
|
||||
resizable: true
|
||||
},
|
||||
{
|
||||
key: 'batchName',
|
||||
title: '批量名称',
|
||||
align: 'center',
|
||||
minWidth: 120,
|
||||
ellipsis: true,
|
||||
resizable: true
|
||||
},
|
||||
{
|
||||
key: 'importStatus',
|
||||
title: '数据导入状态',
|
||||
align: 'center',
|
||||
minWidth: 120,
|
||||
ellipsis: true,
|
||||
resizable: true,
|
||||
render(row) {
|
||||
/*return <DictTag size="small" value={row.importStatus} dictCode="data_import_status" />;*/
|
||||
return (
|
||||
<BatchStatusSwitch
|
||||
v-model:value={row.importStatus}
|
||||
disabled={row.preBatchStatus != 0 && row.afterBatchStatus != '0' && row.checkStatus != '0'}
|
||||
/*info={row.batchName}*/
|
||||
onSubmitted={(value, callback) => handleStatusChange(row, value, callback)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'preBatchDate',
|
||||
title: '预批量时间',
|
||||
|
@ -27,6 +27,7 @@ const visible = defineModel<boolean>('visible', {
|
||||
default: false
|
||||
});
|
||||
|
||||
const { options: dataImportStatusOptions } = useDict('data_import_status');
|
||||
const { options: preBatchStatusOptions } = useDict('pre_batch_status');
|
||||
const { options: afterBatchStatusOptions } = useDict('after_batch_status');
|
||||
const { options: mpsCheckStatusOptions } = useDict('mps_check_status');
|
||||
@ -49,6 +50,9 @@ const model: Model = reactive(createDefaultModel());
|
||||
function createDefaultModel(): Model {
|
||||
return {
|
||||
batchMonth: '',
|
||||
batchCode: '',
|
||||
batchName: '',
|
||||
importStatus: '',
|
||||
preBatchDate: undefined,
|
||||
preBatchStatus: '',
|
||||
afterBatchDate: undefined,
|
||||
@ -61,12 +65,7 @@ function createDefaultModel(): Model {
|
||||
|
||||
type RuleKey = Extract<
|
||||
keyof Model,
|
||||
| 'preBatchDate'
|
||||
| 'preBatchStatus'
|
||||
| 'afterBatchDate'
|
||||
| 'afterBatchStatus'
|
||||
| 'checkStatus'
|
||||
| 'checkBy'
|
||||
>;
|
||||
|
||||
const rules: Record<RuleKey, App.Global.FormRule> = {
|
||||
@ -125,6 +124,22 @@ watch(visible, () => {
|
||||
label-align="left"
|
||||
:show-label="true"
|
||||
:label-width="140">
|
||||
<NFormItem label="批量代码" path="batchCode">
|
||||
<NInput v-model:value="model.batchCode" :disabled="true" placeholder="请输入批量代码" />
|
||||
</NFormItem>
|
||||
<NFormItem label="批量名称" path="batchName">
|
||||
<NInput v-model:value="model.batchName" :disabled="true" placeholder="请输入批量名称" />
|
||||
</NFormItem>
|
||||
<NFormItem label="数据导入状态" path="importStatus">
|
||||
<!-- <NInput v-model:value="model.importStatus" placeholder="请输入文件导入状态" />-->
|
||||
<NSelect
|
||||
:disabled="true"
|
||||
v-model:value="model.importStatus"
|
||||
placeholder="请选择数据导入状态"
|
||||
:options="dataImportStatusOptions"
|
||||
clearable
|
||||
/>
|
||||
</NFormItem>
|
||||
<NFormItem label="预批量时间" path="preBatchDate">
|
||||
<NDatePicker style="width: 100%"
|
||||
:disabled="true"
|
||||
|
@ -19,10 +19,6 @@ const { formRef, validate, restoreValidation } = useNaiveForm();
|
||||
|
||||
const model = defineModel<Api.Mps.BatchSearchParams>('model', { required: true });
|
||||
|
||||
const { options: preBatchStatusOptions } = useDict('pre_batch_status');
|
||||
const { options: afterBatchStatusOptions } = useDict('after_batch_status');
|
||||
const { options: mpsCheckStatusOptions } = useDict('mps_check_status');
|
||||
|
||||
async function reset() {
|
||||
Object.assign(model.value.params!, {});
|
||||
await restoreValidation();
|
||||
|
@ -3,6 +3,7 @@ package org.dromara.mps.controller;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.dromara.mps.domain.bo.MpsBatchImprtBo;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -44,11 +45,22 @@ public class MpsBatchController extends BaseController {
|
||||
* 修改批量状态
|
||||
*/
|
||||
@SaCheckPermission("mps:batch:edit")
|
||||
@Log(title = "批量状态", businessType = BusinessType.UPDATE)
|
||||
@Log(title = "修改数据核对状态", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody MpsBatchBo bo) {
|
||||
return toAjax(mpsBatchService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改批量状态
|
||||
*/
|
||||
@SaCheckPermission("mps:batch:edit")
|
||||
@Log(title = "切换数据导入状态", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/switchImportDataStatus")
|
||||
public R<Void> switchImportDataStatus(@Validated(EditGroup.class) @RequestBody MpsBatchImprtBo bo) {
|
||||
return toAjax(mpsBatchService.updateByBo1(bo));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -30,6 +30,21 @@ public class MpsBatch extends BaseEntity {
|
||||
@TableId(value = "batch_month")
|
||||
private String batchMonth;
|
||||
|
||||
/**
|
||||
*批量代码
|
||||
*/
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
*批量名称
|
||||
*/
|
||||
private String batchName;
|
||||
|
||||
/**
|
||||
*文件导入状态0-初始 1-已导入
|
||||
*/
|
||||
private String importStatus;
|
||||
|
||||
/**
|
||||
* 预批量时间
|
||||
*/
|
||||
|
@ -28,6 +28,21 @@ public class MpsBatchBo extends BaseEntity {
|
||||
*/
|
||||
private String batchMonth;
|
||||
|
||||
/**
|
||||
*批量代码
|
||||
*/
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
*批量名称
|
||||
*/
|
||||
private String batchName;
|
||||
|
||||
/**
|
||||
*文件导入状态0-初始 1-已导入
|
||||
*/
|
||||
private String importStatus;
|
||||
|
||||
/**
|
||||
* 预批量时间
|
||||
*/
|
||||
|
@ -0,0 +1,82 @@
|
||||
package org.dromara.mps.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.mps.domain.MpsBatch;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 批量状态业务对象 mps_batch
|
||||
*
|
||||
* @author gtop
|
||||
* @date 2025-08-19
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = MpsBatch.class, reverseConvertGenerate = false)
|
||||
public class MpsBatchImprtBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 批次月份
|
||||
*/
|
||||
private String batchMonth;
|
||||
|
||||
/**
|
||||
*批量代码
|
||||
*/
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
*批量名称
|
||||
*/
|
||||
private String batchName;
|
||||
|
||||
/**
|
||||
*数据导入状态0-初始 1-已导入
|
||||
*/
|
||||
@NotBlank(message = "数据导入状态不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String importStatus;
|
||||
|
||||
/**
|
||||
* 预批量时间
|
||||
*/
|
||||
private Date preBatchDate;
|
||||
|
||||
/**
|
||||
* 预批量状态(0初始 1成功 9失败)
|
||||
*/
|
||||
private String preBatchStatus;
|
||||
|
||||
/**
|
||||
* 正式批量时间
|
||||
*/
|
||||
private Date afterBatchDate;
|
||||
|
||||
/**
|
||||
* 正式批量状态(0初始 1成功 9失败)
|
||||
*/
|
||||
private String afterBatchStatus;
|
||||
|
||||
/**
|
||||
* 核对状态(0未核对 1已核对)
|
||||
*/
|
||||
private String checkStatus;
|
||||
|
||||
/**
|
||||
* 核对人
|
||||
*/
|
||||
private Long checkBy;
|
||||
|
||||
/**
|
||||
* 核对备注
|
||||
*/
|
||||
private String checkRemark;
|
||||
|
||||
|
||||
}
|
@ -36,6 +36,21 @@ public class MpsBatchVo implements Serializable {
|
||||
*/
|
||||
private String batchMonth;
|
||||
|
||||
/**
|
||||
*批量代码
|
||||
*/
|
||||
private String batchCode;
|
||||
|
||||
/**
|
||||
*批量名称
|
||||
*/
|
||||
private String batchName;
|
||||
|
||||
/**
|
||||
*文件导入状态0-初始 1-已导入
|
||||
*/
|
||||
private String importStatus;
|
||||
|
||||
/**
|
||||
* 预批量时间
|
||||
*/
|
||||
|
@ -1,6 +1,7 @@
|
||||
package org.dromara.mps.service;
|
||||
|
||||
import org.dromara.mps.domain.MpsBatch;
|
||||
import org.dromara.mps.domain.bo.MpsBatchImprtBo;
|
||||
import org.dromara.mps.domain.vo.MpsBatchVo;
|
||||
import org.dromara.mps.domain.bo.MpsBatchBo;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -36,5 +37,6 @@ public interface IMpsBatchService {
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(MpsBatchBo bo);
|
||||
Boolean updateByBo1(MpsBatchImprtBo bo);
|
||||
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.mps.domain.bo.MpsBatchImprtBo;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.mps.domain.bo.MpsBatchBo;
|
||||
import org.dromara.mps.domain.vo.MpsBatchVo;
|
||||
@ -70,6 +71,14 @@ public class MpsBatchServiceImpl implements IMpsBatchService {
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateByBo1(MpsBatchImprtBo bo) {
|
||||
bo.setCheckBy(LoginHelper.getUserId());
|
||||
MpsBatch update = MapstructUtils.convert(bo, MpsBatch.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
|
@ -5,6 +5,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<mapper namespace="org.dromara.mps.mapper.MpsBatchMapper">
|
||||
<resultMap id="batchResultMap" type="org.dromara.mps.domain.vo.MpsBatchVo">
|
||||
<id column="batch_month" property="batchMonth"/>
|
||||
<id column="batch_code" property="batchCode"/>
|
||||
<result column="batch_name" property="batchName"/>
|
||||
<result column="import_status" property="importStatus"/>
|
||||
<result column="pre_batch_date" property="preBatchDate"/>
|
||||
<result column="pre_batch_status" property="preBatchStatus"/>
|
||||
<result column="after_batch_date" property="afterBatchDate"/>
|
||||
@ -16,6 +19,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<select id="selectBatchPage" resultMap="batchResultMap">
|
||||
SELECT
|
||||
a.batch_month,
|
||||
a.batch_code,
|
||||
a.batch_name,
|
||||
a.import_status,
|
||||
a.pre_batch_date,
|
||||
a.pre_batch_status,
|
||||
a.after_batch_date,
|
||||
|
Loading…
Reference in New Issue
Block a user