diff --git a/cclqms-java/src/main/java/com/gaotao/modules/workflow/mapper/WorkflowManageMapper.java b/cclqms-java/src/main/java/com/gaotao/modules/workflow/mapper/WorkflowManageMapper.java index 805cbcd..39da4c8 100644 --- a/cclqms-java/src/main/java/com/gaotao/modules/workflow/mapper/WorkflowManageMapper.java +++ b/cclqms-java/src/main/java/com/gaotao/modules/workflow/mapper/WorkflowManageMapper.java @@ -22,9 +22,7 @@ public interface WorkflowManageMapper { IPage getRequestMainData(Page page, @Param("query") RequestHeaderConfigEntity query); - Integer countHeaderByWorkflowAndMenu(@Param("site") String site, - @Param("workflowId") String workflowId, - @Param("menuId") String menuId); + List getRequestMainDataByList(@Param("query") RequestHeaderConfigEntity query); Integer saveRequestHeader(RequestHeaderConfigEntity data); @@ -42,6 +40,8 @@ public interface WorkflowManageMapper { @Param("workflowId") String workflowId, @Param("classificationNo") String classificationNo); + List getRequestNodeData(@Param("workflowId") String workflowId); + Integer saveRequestNode(@Param("list") List list); List getNodeInfoByWorkflow(@Param("query") RequestNodeEntity query); diff --git a/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/WorkflowManageServiceImpl.java b/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/WorkflowManageServiceImpl.java index 1651f90..272b790 100644 --- a/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/WorkflowManageServiceImpl.java +++ b/cclqms-java/src/main/java/com/gaotao/modules/workflow/service/impl/WorkflowManageServiceImpl.java @@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gaotao.common.exception.XJException; -import com.gaotao.common.utils.DateUtils; import com.gaotao.common.utils.PageUtils; +import com.gaotao.modules.trans.service.TransNoControlService; import com.gaotao.modules.workflow.dto.ProcessInterventionRequest; import com.gaotao.modules.workflow.dto.WorkflowAuthorityData; import com.gaotao.modules.workflow.dto.WorkflowFieldData; @@ -30,7 +30,6 @@ import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.UUID; import java.util.stream.Collectors; @Service @@ -38,6 +37,8 @@ public class WorkflowManageServiceImpl implements WorkflowManageService { @Resource private WorkflowManageMapper workflowManageMapper; + @Resource(name = "transNoControlServiceImpl") + private TransNoControlService transNoControlService; @Override public PageUtils getRequestMainData(RequestHeaderConfigEntity data) { @@ -53,73 +54,47 @@ public class WorkflowManageServiceImpl implements WorkflowManageService { if (StringUtils.isBlank(data.getSite()) || StringUtils.isBlank(data.getWorkflowId()) || StringUtils.isBlank(data.getMenuId())) { throw new XJException("site/workflowId/menuId 不能为空"); } - Integer count = workflowManageMapper.countHeaderByWorkflowAndMenu(data.getSite(), data.getWorkflowId(), data.getMenuId()); - if (count != null && count > 0) { - throw new XJException(data.getWorkflowId() + "-" + data.getMenuId() + " 已存在绑定关系"); + String classificationNo = transNoControlService.transNo(data.getSite(), "classification_no"); + if (StringUtils.isBlank(classificationNo)) { + throw new XJException("分类编码规则未维护,请配置 TransNoControl.transType=classification_no"); } - - data.setClassificationNo(generateClassificationNo()); - if (StringUtils.isBlank(data.getClassificationName())) { - data.setClassificationName(data.getWorkflowId()); + data.setClassificationNo(classificationNo); + IPage requestMainData = workflowManageMapper.getRequestMainData(new Page<>(1, 10), data); + if (requestMainData.getTotal() > 0) { + throw new XJException(data.getWorkflowId() + "-" + data.getMenuId() + ",已存在该绑定关系!"); } + data.setStatus(StringUtils.defaultIfBlank(data.getStatus(), "Y")); data.setCreateDate(new Date()); - workflowManageMapper.saveRequestHeader(data); - - List templateNodes = workflowManageMapper.getTemplateNodeData(data.getSite(), data.getWorkflowId(), data.getClassificationNo()); + List requestNodeData = workflowManageMapper.getRequestNodeData(data.getWorkflowId()); + if (CollectionUtils.isEmpty(requestNodeData)) { + throw new XJException("OA流程节点未配置,无法创建流程绑定,请检查流程ID:" + data.getWorkflowId()); + } List nodeList = new ArrayList<>(); - if (!CollectionUtils.isEmpty(templateNodes)) { - for (RequestNodeEntity node : templateNodes) { - RequestNodeEntity copy = new RequestNodeEntity(); - copy.setSite(data.getSite()); - copy.setBu(data.getBu()); - copy.setClassificationNo(data.getClassificationNo()); - copy.setNodeId(node.getNodeId()); - copy.setNodeName(node.getNodeName()); - copy.setNodeType(node.getNodeType()); - copy.setIsBranch(node.getIsBranch()); - copy.setWorkflowId(data.getWorkflowId()); - copy.setSeqNo(node.getSeqNo()); - copy.setStepId(node.getStepId()); - copy.setIsReject(StringUtils.defaultIfBlank(node.getIsReject(), "Y")); - copy.setCountersignatureItem(StringUtils.defaultIfBlank(node.getCountersignatureItem(), "1")); - copy.setCreateDate(new Date()); - copy.setCreateBy(data.getCreateBy()); - copy.setRemark(node.getRemark()); - nodeList.add(copy); - } - } else { - RequestNodeEntity node1 = new RequestNodeEntity(); - node1.setSite(data.getSite()); - node1.setBu(data.getBu()); - node1.setClassificationNo(data.getClassificationNo()); - node1.setNodeId("10"); - node1.setNodeName("提交"); - node1.setWorkflowId(data.getWorkflowId()); - node1.setSeqNo(1); - node1.setStepId(10); - node1.setIsReject("Y"); - node1.setCountersignatureItem("1"); - node1.setCreateDate(new Date()); - node1.setCreateBy(data.getCreateBy()); - nodeList.add(node1); - - RequestNodeEntity node2 = new RequestNodeEntity(); - node2.setSite(data.getSite()); - node2.setBu(data.getBu()); - node2.setClassificationNo(data.getClassificationNo()); - node2.setNodeId("20"); - node2.setNodeName("审核"); - node2.setWorkflowId(data.getWorkflowId()); - node2.setSeqNo(2); - node2.setStepId(20); - node2.setIsReject("Y"); - node2.setCountersignatureItem("1"); - node2.setCreateDate(new Date()); - node2.setCreateBy(data.getCreateBy()); - nodeList.add(node2); + int seqNo = 1; + int stepId = 0; + for (RequestNodeEntity item : requestNodeData) { + RequestNodeEntity node = new RequestNodeEntity(); + node.setSite(data.getSite()); + node.setBu(data.getBu()); + node.setClassificationNo(data.getClassificationNo()); + node.setNodeId(item.getNodeId()); + node.setNodeName(item.getNodeName()); + node.setNodeType(""); + node.setIsBranch(""); + node.setCreateDate(new Date()); + node.setCreateBy(data.getCreateBy()); + node.setRemark(""); + node.setWorkflowId(data.getWorkflowId()); + node.setSeqNo(item.getSeqNo() == null ? seqNo : item.getSeqNo()); + node.setStepId(stepId += 10); + node.setIsReject("Y"); + node.setCountersignatureItem("1"); + nodeList.add(node); + seqNo++; } workflowManageMapper.saveRequestNode(nodeList); + workflowManageMapper.saveRequestHeader(data); } @Override @@ -138,6 +113,16 @@ public class WorkflowManageServiceImpl implements WorkflowManageService { throw new XJException("请选择要删除的数据"); } for (RequestHeaderConfigEntity item : data) { + RequestHeaderConfigEntity searchData = new RequestHeaderConfigEntity(); + searchData.setSite(item.getSite()); + searchData.setClassificationNo(item.getClassificationNo()); + List requestMainData = workflowManageMapper.getRequestMainDataByList(searchData); + if (CollectionUtils.isEmpty(requestMainData)) { + throw new XJException("数据结构发生变化,请刷新后再试!"); + } + if (!"N".equalsIgnoreCase(requestMainData.get(0).getStatus())) { + throw new XJException(item.getClassificationNo() + "数据发生变化,请刷新数据后再试!"); + } workflowManageMapper.deleteRequestNodeDetail(item.getSite(), item.getClassificationNo()); workflowManageMapper.deleteRequestNode(item.getSite(), item.getClassificationNo()); workflowManageMapper.deleteRequestNodeAuthority(item.getSite(), item.getClassificationNo()); @@ -172,13 +157,6 @@ public class WorkflowManageServiceImpl implements WorkflowManageService { } RequestNodeDetailEntity first = data.get(0); workflowManageMapper.deleteRequestNodeDetailByLine(first.getSite(), first.getWorkflowId(), first.getNodeId(), first.getClassificationNo()); - int seqNo = 1; - for (RequestNodeDetailEntity row : data) { - row.setSeqNo(seqNo++); - row.setCreateDate(new Date()); - row.setUpdateDate(new Date()); - row.setReview(StringUtils.defaultIfBlank(row.getReview(), "N")); - } workflowManageMapper.saveRequestNodeDetail(data); } @@ -201,12 +179,10 @@ public class WorkflowManageServiceImpl implements WorkflowManageService { return new ArrayList<>(); } List list = workflowManageMapper.getFieldList(inData.getTableId()); - for (WorkflowFieldData item : list) { - item.setUpdateFlag("N"); - item.setUpdateCheck(false); - item.setRequired("N"); - } - return list; + return list.stream().map(item -> { + item.setFieldId(underScoreToCamel(item.getFieldId())); + return item; + }).collect(Collectors.toList()); } @Override @@ -220,9 +196,6 @@ public class WorkflowManageServiceImpl implements WorkflowManageService { List list = workflowManageMapper.getAuthorityFieldList(inData); for (WorkflowFieldData item : list) { item.setUpdateCheck("Y".equalsIgnoreCase(item.getUpdateFlag())); - if (StringUtils.isBlank(item.getRequired())) { - item.setRequired("N"); - } } return list; } @@ -254,7 +227,7 @@ public class WorkflowManageServiceImpl implements WorkflowManageService { row.setFieldId(item.getFieldId()); row.setFieldName(item.getFieldName()); row.setUpdateFlag("Y"); - row.setRequired(StringUtils.defaultIfBlank(item.getRequired(), "N")); + row.setRequired(item.getRequired()); row.setCreateBy(inData.getCreateBy()); row.setUpdateCheck(true); return row; @@ -339,7 +312,24 @@ public class WorkflowManageServiceImpl implements WorkflowManageService { } } - private String generateClassificationNo() { - return "WF" + DateUtils.format(new Date(), "yyyyMMddHHmmss") + UUID.randomUUID().toString().substring(0, 4).toUpperCase(); + private String underScoreToCamel(String value) { + if (StringUtils.isBlank(value)) { + return value; + } + String[] parts = value.split("_"); + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < parts.length; i++) { + String part = parts[i]; + if (StringUtils.isEmpty(part)) { + continue; + } + if (i == 0) { + builder.append(part); + } else { + builder.append(Character.toUpperCase(part.charAt(0))).append(part.substring(1)); + } + } + return builder.toString(); } + } diff --git a/cclqms-java/src/main/resources/mapper/workflow/WorkflowManageMapper.xml b/cclqms-java/src/main/resources/mapper/workflow/WorkflowManageMapper.xml index d5dad4c..489a4ed 100644 --- a/cclqms-java/src/main/resources/mapper/workflow/WorkflowManageMapper.xml +++ b/cclqms-java/src/main/resources/mapper/workflow/WorkflowManageMapper.xml @@ -7,6 +7,7 @@ a.id, a.site, a.bu, + d.bu_desc, a.classification_no, a.classification_name, a.workflow_id, @@ -18,41 +19,89 @@ a.update_date, a.update_by, a.remark, - ISNULL(a.classification_name, a.workflow_id) AS workflow_name, - ISNULL(a.classification_name, a.workflow_id) AS workflowname, + b.workflowname AS workflow_name, + b.workflowname AS workflowname, CASE WHEN a.status = 'Y' THEN N'启用' ELSE N'停用' END AS statusDesc, m.name FROM plm_request_header a + LEFT JOIN ( + SELECT workflowid, MAX(workflowname) AS workflowname + FROM VIEW_Process_management_OA_PLM + GROUP BY workflowid + ) b ON a.workflow_id = b.workflowid + LEFT JOIN BU d + ON a.site = d.site + AND a.bu = d.bu_no LEFT JOIN sys_menu m ON a.menu_id = m.menu_id - AND a.site = #{query.site} + AND a.site LIKE #{query.site} - AND a.workflow_id LIKE '%' + #{query.workflowId} + '%' - - - AND a.menu_id LIKE '%' + #{query.menuId} + '%' + AND a.workflow_id LIKE #{query.workflowId} - AND m.name LIKE '%' + #{query.name} + '%' + AND m.name LIKE #{query.name} AND a.status = #{query.status} - AND ISNULL(a.classification_name, a.workflow_id) LIKE '%' + #{query.workflowName} + '%' + AND b.workflowname LIKE #{query.workflowName} + + + AND b.workflowname LIKE #{query.workflowname} ORDER BY a.create_date DESC, a.id DESC - + SELECT + a.id, + a.site, + a.bu, + d.bu_desc, + a.classification_no, + a.classification_name, + a.workflow_id, + a.menu_id, + a.status, + CASE WHEN a.status = 'Y' THEN N'启用' ELSE N'停用' END AS status_desc, + a.create_date, + a.create_by, + a.update_date, + a.update_by, + a.remark, + b.workflowname AS workflow_name, + b.workflowname AS workflowname, + CASE WHEN a.status = 'Y' THEN N'启用' ELSE N'停用' END AS statusDesc, + m.name + FROM plm_request_header a + LEFT JOIN ( + SELECT workflowid, MAX(workflowname) AS workflowname + FROM VIEW_Process_management_OA_PLM + GROUP BY workflowid + ) b ON a.workflow_id = b.workflowid + LEFT JOIN BU d + ON a.site = d.site + AND a.bu = d.bu_no + LEFT JOIN sys_menu m ON a.menu_id = m.menu_id + + + AND a.site LIKE #{query.site} + + + AND m.name LIKE #{query.name} + + + AND a.workflow_id LIKE #{query.workflowId} + + + AND a.classification_no LIKE #{query.classificationNo} + + + ORDER BY a.create_date DESC, a.id DESC @@ -70,10 +119,9 @@ menu_id = #{menuId}, status = #{status}, remark = #{remark}, - update_date = #{updateDate}, + update_date = GETDATE(), update_by = #{updateBy} - WHERE site = #{site} - AND classification_no = #{classificationNo} + WHERE classification_no = #{classificationNo} @@ -111,6 +159,20 @@ ORDER BY seq_no ASC, id ASC + + INSERT INTO plm_request_node( site, bu, classification_no, node_id, node_name, node_type, is_branch, workflow_id, @@ -133,8 +195,8 @@ a.bu, a.classification_no, a.workflow_id, - ISNULL(h.classification_name, a.workflow_id) AS workflow_name, - ISNULL(h.classification_name, a.workflow_id) AS workflowname, + c.workflowname AS workflow_name, + c.workflowname AS workflowname, a.node_id, a.node_name, a.node_type, @@ -150,22 +212,25 @@ a.update_by, a.remark FROM plm_request_node a - LEFT JOIN plm_request_header h - ON a.site = h.site - AND a.classification_no = h.classification_no - AND a.workflow_id = h.workflow_id + LEFT JOIN ( + SELECT workflowid, nodeid, MAX(workflowname) AS workflowname + FROM VIEW_Process_management_OA_PLM + GROUP BY workflowid, nodeid + ) c + ON a.workflow_id = c.workflowid + AND a.node_id = c.nodeid - AND a.site = #{query.site} + AND a.site LIKE #{query.site} - AND a.classification_no = #{query.classificationNo} + AND a.classification_no LIKE #{query.classificationNo} - AND a.workflow_id = #{query.workflowId} + AND a.workflow_id LIKE #{query.workflowId} - ORDER BY a.seq_no ASC, a.id ASC + ORDER BY a.seq_no ASC @@ -188,19 +253,18 @@ FROM plm_request_node_detail - AND site = #{query.site} + AND site LIKE #{query.site} - AND classification_no = #{query.classificationNo} + AND classification_no LIKE #{query.classificationNo} - AND workflow_id = #{query.workflowId} + AND workflow_id LIKE #{query.workflowId} - AND node_id = #{query.nodeId} + AND node_id LIKE #{query.nodeId} - ORDER BY seq_no ASC, id ASC @@ -213,18 +277,16 @@ INSERT INTO plm_request_node_detail( - site, bu, classification_no, node_id, node_name, node_type, is_branch, - create_date, create_by, update_date, update_by, remark, - plm_field, oa_field, field_value, field_desc, workflow_id, - order_ref1, order_ref2, order_ref3, order_ref4, plm_table, field_type, review, seq_no, step_id + site, bu, classification_no, node_id, node_name, + create_date, create_by, remark, plm_field, oa_field, field_value, + order_ref1, order_ref2, order_ref3, order_ref4, field_desc, workflow_id, plm_table, field_type, review ) VALUES ( - #{data.site}, #{data.bu}, #{data.classificationNo}, #{data.nodeId}, #{data.nodeName}, #{data.nodeType}, #{data.isBranch}, - #{data.createDate}, #{data.createBy}, #{data.updateDate}, #{data.updateBy}, #{data.remark}, - #{data.plmField}, #{data.oaField}, #{data.fieldValue}, #{data.fieldDesc}, #{data.workflowId}, - #{data.orderRef1}, #{data.orderRef2}, #{data.orderRef3}, #{data.orderRef4}, #{data.plmTable}, #{data.fieldType}, #{data.review}, #{data.seqNo}, #{data.stepId} + #{data.site}, #{data.bu}, #{data.classificationNo}, #{data.nodeId}, #{data.nodeName}, + GETDATE(), #{data.createBy}, #{data.remark}, #{data.plmField}, #{data.oaField}, #{data.fieldValue}, + #{data.orderRef1}, #{data.orderRef2}, #{data.orderRef3}, #{data.orderRef4}, #{data.fieldDesc}, #{data.workflowId}, #{data.plmTable}, #{data.fieldType}, #{data.review} ) @@ -232,15 +294,7 @@ @@ -279,17 +341,22 @@ a.fieldName, ISNULL(b.update_flag, 'N') AS updateFlag, #{data.tableId} AS tableId, - ISNULL(b.required, 'N') AS required + b.required AS required FROM ( SELECT col.name AS fieldId, - CONVERT(varchar(200), ISNULL(comm.value, col.name)) AS fieldName - FROM sys.columns col - INNER JOIN sys.tables tbl ON col.object_id = tbl.object_id - LEFT JOIN sys.extended_properties comm - ON comm.major_id = col.object_id - AND comm.minor_id = col.column_id - AND comm.name = N'MS_Description' + CASE + WHEN tbl.name = 'plm_rohs' AND col.name = 'valid_until_value' THEN '有效期数值/Valid Until Value' + WHEN tbl.name = 'plm_rohs' AND col.name = 'valid_until' THEN '有效期单位/Valid Until Unit' + WHEN tbl.name = 'plm_rohs' AND col.name = 'rohs_status' THEN '状态/RoHS Status' + WHEN tbl.name = 'plm_rohs' AND col.name = 'expiry_date' THEN '失效日期/Expiry Date' + ELSE CONVERT(varchar(50), comm.value) + END AS fieldName + FROM sys.columns AS col + INNER JOIN sys.tables AS tbl ON col.object_id = tbl.object_id + INNER JOIN sys.schemas AS scm ON tbl.schema_id = scm.schema_id + INNER JOIN sys.types AS typ ON col.user_type_id = typ.user_type_id + LEFT JOIN sys.extended_properties AS comm ON comm.major_id = col.object_id AND comm.minor_id = col.column_id AND comm.name = N'MS_Description' WHERE tbl.name = #{data.tableId} ) a LEFT JOIN plm_request_node_authority b @@ -300,12 +367,12 @@ AND b.table_id = #{data.tableId} WHERE a.fieldName IS NOT NULL AND a.fieldName <> '' - ORDER BY a.fieldId DELETE FROM plm_request_node_authority WHERE site = #{data.site} + AND bu = #{data.bu} AND classification_no = #{data.classificationNo} AND node_id = #{data.nodeId} AND table_id = #{data.tableId} @@ -325,16 +392,13 @@ diff --git a/cclqms-vue/src/views/common/selectDiv.vue b/cclqms-vue/src/views/common/selectDiv.vue new file mode 100644 index 0000000..268e58c --- /dev/null +++ b/cclqms-vue/src/views/common/selectDiv.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/cclqms-vue/src/views/modules/processManagement/processBindingInfo.vue b/cclqms-vue/src/views/modules/processManagement/processBindingInfo.vue index 65eb0ec..83848d6 100644 --- a/cclqms-vue/src/views/modules/processManagement/processBindingInfo.vue +++ b/cclqms-vue/src/views/modules/processManagement/processBindingInfo.vue @@ -1,22 +1,19 @@