diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/doc/代码修改日志 b/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/doc/代码修改日志 index badf2fae..581ad137 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/doc/代码修改日志 +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/doc/代码修改日志 @@ -407,3 +407,10 @@ jeecgboot-vue3/src/views/xslmes/mesXslRubberQuickTestMethod/MesXslRubberQuickTes jeecgboot-vue3/src/views/xslmes/mesXslRubberQuickTestMethod/components/MesXslRubberQuickTestMethodModal.vue jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/controller/MesXslRubberQuickTestMethodController.java jeecgboot-vue3/src/components/jeecg/JVxeTable/src/components/cells/JVxeSelectCell.vue + +-- author:cursor---date:20260526--for: 【XSLMES-20260526-A61】混炼示方密炼PS校对/审核/批准联动同步审批人 ----------- +jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/IMesXslMixingSpecService.java +jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/impl/MesXslMixingSpecServiceImpl.java +jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/impl/MesXslMixerPsCompileServiceImpl.java +jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpec.data.ts +jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpecList.vue diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/IMesXslMixingSpecService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/IMesXslMixingSpecService.java index 4e6f8571..10418ff4 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/IMesXslMixingSpecService.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/IMesXslMixingSpecService.java @@ -10,6 +10,7 @@ import org.jeecg.modules.xslmes.entity.MesXslMixingSpecDownStep; import org.jeecg.modules.xslmes.entity.MesXslMixingSpecMaterial; import org.jeecg.modules.xslmes.entity.MesXslMixingSpecStep; import org.jeecg.modules.xslmes.entity.MesXslMixingSpecTcu; +import org.jeecg.modules.xslmes.entity.MesXslMixerPsCompile; import org.jeecg.modules.xslmes.vo.MesXslMixingSpecPage; public interface IMesXslMixingSpecService extends IService { @@ -36,4 +37,14 @@ public interface IMesXslMixingSpecService extends IService { List> queryIssueNumberOptions(String keyword); List> queryPurposeOptions(String keyword); + + //update-begin---author:cursor ---date:20260526 for:【XSLMES-20260526-A61】混炼示方密炼PS审批联动同步审批人----------- + /** + * 密炼PS校对/审核/批准后,按发行编号(PS编码)同步关联混炼示方审批人 + * + * @param ps 已更新后的密炼PS编制单 + * @param mixerPsTargetStatus 密炼PS目标状态:proofread / audit / approve + */ + void syncFromMixerPsWorkflow(MesXslMixerPsCompile ps, String mixerPsTargetStatus); + //update-end---author:cursor ---date:20260526 for:【XSLMES-20260526-A61】混炼示方密炼PS审批联动同步审批人----------- } diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/impl/MesXslMixerPsCompileServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/impl/MesXslMixerPsCompileServiceImpl.java index 2dd05d6b..c68ed4c3 100644 --- a/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/impl/MesXslMixerPsCompileServiceImpl.java +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-xslmes/src/main/java/org/jeecg/modules/xslmes/service/impl/MesXslMixerPsCompileServiceImpl.java @@ -10,6 +10,7 @@ import org.jeecg.modules.xslmes.common.XslMesBizConstants; import org.jeecg.modules.xslmes.entity.MesXslMixerPsCompile; import org.jeecg.modules.xslmes.mapper.MesXslMixerPsCompileMapper; import org.jeecg.modules.xslmes.service.IMesXslFormulaSpecService; +import org.jeecg.modules.xslmes.service.IMesXslMixingSpecService; import org.jeecg.modules.xslmes.service.IMesXslMixerPsCompileService; import org.jeecg.modules.xslmes.service.IMesXslRubberQuickTestStdService; import org.springframework.beans.factory.annotation.Autowired; @@ -26,6 +27,9 @@ public class MesXslMixerPsCompileServiceImpl extends ServiceImpl wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(MesXslMixingSpec::getIssueNumber, ps.getPsCode()); + switch (mixerPsTargetStatus) { + case "proofread": + wrapper.set(MesXslMixingSpec::getProofreadBy, ps.getProofreadBy()) + .set(MesXslMixingSpec::getProofreadTime, ps.getProofreadTime()); + break; + case "audit": + wrapper.set(MesXslMixingSpec::getAuditBy, ps.getAuditBy()) + .set(MesXslMixingSpec::getAuditTime, ps.getAuditTime()); + break; + case "approve": + wrapper.set(MesXslMixingSpec::getApproveBy, ps.getApproveBy()) + .set(MesXslMixingSpec::getApproveTime, ps.getApproveTime()); + break; + default: + return; + } + wrapper.set(MesXslMixingSpec::getUpdateTime, new Date()); + this.update(wrapper); + } + //update-end---author:cursor ---date:20260526 for:【XSLMES-20260526-A61】混炼示方密炼PS审批联动同步审批人----------- } diff --git a/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpec.data.ts b/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpec.data.ts index a30678a9..29c60f78 100644 --- a/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpec.data.ts +++ b/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpec.data.ts @@ -1240,9 +1240,20 @@ export function resolveMixingSpecFormulaStatus(record: Recordable = {}): string if (record.approveTime) { return '审批通过'; } + if (record.auditTime) { + return '审核通过'; + } + if (record.proofreadTime) { + return '校对通过'; + } return '编制中'; } +/** 混炼示方是否允许编辑/删除(与配合示方一致:密炼PS校对后锁定) */ +export function isMixingSpecEditable(record: Recordable = {}): boolean { + return !record?.proofreadBy && !record?.proofreadTime; +} + /** 参照历史混合步骤:混炼示方选择列表列 */ export const mixingSpecHistorySelectColumns: BasicColumn[] = [ { title: '示方编号', align: 'center', dataIndex: 'specName', width: 160 }, diff --git a/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpecList.vue b/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpecList.vue index a08595ca..bf786e1e 100644 --- a/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpecList.vue +++ b/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpecList.vue @@ -37,8 +37,11 @@ import { useListPage } from '/@/hooks/system/useListPage'; import Icon from '/@/components/Icon'; import MesXslMixingSpecModal from './components/MesXslMixingSpecModal.vue'; - import { columns, searchFormSchema } from './MesXslMixingSpec.data'; + import { columns, searchFormSchema, isMixingSpecEditable } from './MesXslMixingSpec.data'; import { list, deleteOne, batchDelete, getExportUrl, getImportUrl } from './MesXslMixingSpec.api'; + import { useMessage } from '/@/hooks/web/useMessage'; + + const { createMessage } = useMessage(); const queryParam = reactive({}); const [registerModal, { openModal }] = useModal(); @@ -81,6 +84,10 @@ } function handleEdit(record: Recordable) { + if (!isMixingSpecEditable(record)) { + createMessage.warning('已进入审批流程的混炼示方不允许编辑'); + return; + } openModal(true, { record, isUpdate: true, showFooter: true }); } @@ -89,6 +96,10 @@ } function handleDelete(record: Recordable) { + if (!isMixingSpecEditable(record)) { + createMessage.warning('已进入审批流程的混炼示方不允许删除'); + return; + } deleteOne({ id: record.id }, handleSuccess); } @@ -102,14 +113,30 @@ } function getTableActions(record: Recordable) { + const editable = isMixingSpecEditable(record); return [ - { label: '编辑', onClick: handleEdit.bind(null, record), auth: 'xslmes:mes_xsl_mixing_spec:edit' }, - { label: '详情', onClick: handleDetail.bind(null, record) }, + { + label: '编辑', + onClick: handleEdit.bind(null, record), + auth: 'xslmes:mes_xsl_mixing_spec:edit', + ifShow: editable, + }, + { + label: '详情', + onClick: handleDetail.bind(null, record), + ifShow: !editable, + }, { label: '删除', auth: 'xslmes:mes_xsl_mixing_spec:delete', + ifShow: editable, popConfirm: { title: '是否确认删除', confirm: handleDelete.bind(null, record) }, }, + { + label: '详情', + onClick: handleDetail.bind(null, record), + ifShow: editable, + }, ]; }