package com.tml.projectAttrManagement; import com.dassault_systemes.platform.restServices.RestService; import com.tml.projectAttrManagement.dto.AddRangeRequest; import com.tml.projectAttrManagement.dto.DeleteRangeRequest; import jakarta.servlet.http.HttpServletRequest; import jakarta.ws.rs.*; import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.Response; import matrix.db.JPO; import matrix.util.MatrixException; import java.util.logging.Logger; @Path("/getProjectAttr") public class DSGetProjectAttributeManagementController extends RestService { private static final Logger LOGGER = Logger.getLogger(DSGetProjectAttributeManagementController.class.getName()); @GET @Path("/getAttrInfo") public Response getInfo(@Context HttpServletRequest request, @QueryParam("projectType") String projectAttr) { return this.Info(request, projectAttr); } // 2. 添加方法(POST)- 添加新数据 @POST @Path("/add") @Consumes("application/json") public Response addRangeValue(@Context HttpServletRequest request, AddRangeRequest addRequest) { if (addRequest == null || addRequest.getAttrValue() == null || addRequest.getAttrValue().isEmpty() || addRequest.getAttrRange() == null || addRequest.getAttrRange().isEmpty() || addRequest.getAttrRangeDes() == null || addRequest.getAttrRangeDes().isEmpty()) { return Response.status(Response.Status.BAD_REQUEST) .entity("{\"code\":400,\"message\":\"参数不完整\"}") .type("application/json") .build(); } matrix.db.Context context = this.getAuthenticatedContext(request, false); try { String[] args = { addRequest.getAttrValue(), addRequest.getAttrRange(), addRequest.getAttrRangeDes() }; String result = JPO.invoke(context, "TMLProjectAttrManagement", null, "addRangeValue", args, String.class); LOGGER.info("添加范围值成功:" + addRequest.getAttrRange() + " -> " + addRequest.getAttrRangeDes()); return Response.status(Response.Status.OK) .entity("{\"code\":200,\"message\":\"" + result + "\",\"data\":{\"key\":\"" + addRequest.getAttrRange() + "\",\"value\":\"" + addRequest.getAttrRangeDes() + "\"}}") .type("application/json") .build(); } catch (MatrixException e) { LOGGER.severe("添加范围值失败:" + e.getMessage()); return Response.status(Response.Status.INTERNAL_SERVER_ERROR) .entity("{\"code\":500,\"message\":\"添加失败:" + e.getMessage() + "\"}") .type("application/json") .build(); } } // 3. 删除方法(DELETE)- 删除数据 @DELETE @Path("/delete") @Consumes("application/json") public Response deleteRangeValue(@Context HttpServletRequest request, DeleteRangeRequest deleteRequest) { if (deleteRequest == null || deleteRequest.getAttrValue() == null || deleteRequest.getAttrValue().isEmpty() || deleteRequest.getAttrRange() == null || deleteRequest.getAttrRange().isEmpty()) { return Response.status(Response.Status.BAD_REQUEST) .entity("{\"code\":400,\"message\":\"参数不完整\"}") .type("application/json") .build(); } matrix.db.Context context = this.getAuthenticatedContext(request, false); try { String[] args = { deleteRequest.getAttrValue(), deleteRequest.getAttrRange() }; String result = JPO.invoke(context, "TMLProjectAttrManagement", null, "delRangeValue", args, String.class); LOGGER.info("删除范围值成功:" + deleteRequest.getAttrRange()); return Response.status(Response.Status.OK) .entity("{\"code\":200,\"message\":\"" + result + "\",\"data\":{\"deletedKey\":\"" + deleteRequest.getAttrRange() + "\"}}") .type("application/json") .build(); } catch (MatrixException e) { LOGGER.severe("删除范围值失败:" + e.getMessage()); return Response.status(Response.Status.INTERNAL_SERVER_ERROR) .entity("{\"code\":500,\"message\":\"删除失败:" + e.getMessage() + "\"}") .type("application/json") .build(); } } private Response Info(HttpServletRequest request, String projectAttr) { if(projectAttr == null || projectAttr.isEmpty()) { return Response.status(Response.Status.BAD_REQUEST).entity("Missing project type").build(); } matrix.db.Context context = this.getAuthenticatedContext(request, false); String[] itemValue = projectAttr.split("\\|"); try { String resultJson = JPO.invoke(context, "TMLProjectAttrManagement", null, "getTrialProductSeries", itemValue, String.class); return Response.status(Response.Status.OK).entity(resultJson).build(); } catch (MatrixException e) { throw new RuntimeException(e); } } }