|
|
@@ -268,6 +268,16 @@ public class DesignServiceImpl extends BaseService implements DesignService {
|
|
|
|
|
|
if (redisTemplate == null) return RetResult.<DesignTemplate>errorT().retinfo("模板id不正确");
|
|
|
else {
|
|
|
+ //从文件读取设计json
|
|
|
+ String fileName = designContentRoot + File.separator + supplierCode +
|
|
|
+ File.separator + redisTemplate.getId() + ".txt";
|
|
|
+ Path path = Paths.get(fileName);
|
|
|
+ try {
|
|
|
+ redisTemplate.setJsonContent(Files.readString(path, StandardCharsets.UTF_8));
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+
|
|
|
fillParamsToTemplate(redisTemplate, params);
|
|
|
return RetResult.<DesignTemplate>successT().result(redisTemplate);
|
|
|
}
|
|
|
@@ -280,6 +290,9 @@ public class DesignServiceImpl extends BaseService implements DesignService {
|
|
|
if (!templateRetResult.isSuccess()) return templateRetResult;
|
|
|
DesignTemplate designTemplate = templateRetResult.getResult();
|
|
|
|
|
|
+ //给前端预处理一下权限
|
|
|
+ designTemplate.setJsonContent(preProcessTemplateContent(designTemplate.getJsonContent()));
|
|
|
+
|
|
|
//将当前临时模板记录在redis中,设置个过期时间就行了
|
|
|
redisService.setex(keysService.getRedisKey(RedisKeys.KEY_DESIGNER_DESIGN_TEMPLATE_SESSION, supplierCode, true)
|
|
|
+ outerSessionId, tempTemplateExpire, designTemplate);
|
|
|
@@ -296,6 +309,67 @@ public class DesignServiceImpl extends BaseService implements DesignService {
|
|
|
return RetResult.<DesignTemplate>successT().result(redisTemplate);
|
|
|
}
|
|
|
|
|
|
+ //根据元素权限对元素进行一些限制
|
|
|
+ private String preProcessTemplateContent(String templateContent) {
|
|
|
+ RMap<String, Object> template = jsonConvert.convertFrom(RMap.class, templateContent);
|
|
|
+
|
|
|
+ List<HashMap<String, Object>> objects = jsonConvert.convertFrom(new TypeToken<List<HashMap<String, Object>>>() {
|
|
|
+ }.getType(), template.getString("objects"));
|
|
|
+
|
|
|
+ objects.forEach(object -> {
|
|
|
+ if (!object.get("id").equals("WorkSpaceDrawType") && object.get("name").equals("textbox")) {
|
|
|
+ //字
|
|
|
+ List<String> permsList = jsonConvert.convertFrom(new TypeToken<List<String>>() {
|
|
|
+ }.getType(), object.get("permissionsConfig").toString());
|
|
|
+ if (permsList.contains("0")) {
|
|
|
+ //文字内容
|
|
|
+ object.put("editable", true);
|
|
|
+ } else {
|
|
|
+ object.put("editable", false);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (permsList.contains("5")) {
|
|
|
+ //大小
|
|
|
+ object.put("hasControls", true);
|
|
|
+ } else {
|
|
|
+ object.put("hasControls", false);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (permsList.contains("6")) {
|
|
|
+ //位置
|
|
|
+ object.put("lockMovementX", false);
|
|
|
+ object.put("lockMovementY", false);
|
|
|
+ } else {
|
|
|
+ object.put("lockMovementX", true);
|
|
|
+ object.put("lockMovementY", true);
|
|
|
+ }
|
|
|
+ } else if (!object.get("id").equals("WorkSpaceDrawType") && object.get("name").equals("image")) {
|
|
|
+ //图
|
|
|
+ List<String> permsList = jsonConvert.convertFrom(new TypeToken<List<String>>() {
|
|
|
+ }.getType(), object.get("permissionsConfig").toString());
|
|
|
+
|
|
|
+ if (permsList.contains("1")) {
|
|
|
+ //大小
|
|
|
+ object.put("hasControls", true);
|
|
|
+ } else {
|
|
|
+ object.put("hasControls", false);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (permsList.contains("2")) {
|
|
|
+ //位置
|
|
|
+ object.put("lockMovementX", false);
|
|
|
+ object.put("lockMovementY", false);
|
|
|
+ } else {
|
|
|
+ object.put("lockMovementX", true);
|
|
|
+ object.put("lockMovementY", true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ template.set("objects", objects);
|
|
|
+ return jsonConvert.convertTo(template);
|
|
|
+ }
|
|
|
+
|
|
|
//todo 转换fabric的元素结构
|
|
|
private void convertJsonObjectsToTemplate(DesignTemplate designTemplate, String dataSourceId, long supplierCode) {
|
|
|
FabricMain fabricMain = jsonConvert.convertFrom(FabricMain.class, designTemplate.getJsonContent());
|
|
|
@@ -320,8 +394,8 @@ public class DesignServiceImpl extends BaseService implements DesignService {
|
|
|
for (HashMap<String, Object> object : fabricMain.getObjects()) {
|
|
|
if (object.get("id").equals("WorkSpaceDrawType")) {
|
|
|
//背景对象
|
|
|
- designOrder.setCanvasHeight(ERPUtils.px2mm(((BigDecimal) object.get("height")).doubleValue()));
|
|
|
- designOrder.setCanvasWidth(ERPUtils.px2mm(((BigDecimal) object.get("width")).doubleValue()));
|
|
|
+ designOrder.setCanvasHeight(ERPUtils.px2mm(new BigDecimal(object.get("height").toString()).doubleValue()));
|
|
|
+ designOrder.setCanvasWidth(ERPUtils.px2mm(new BigDecimal(object.get("width").toString()).doubleValue()));
|
|
|
}
|
|
|
|
|
|
DesignOrderItem orderItem = new DesignOrderItem();
|
|
|
@@ -330,8 +404,8 @@ public class DesignServiceImpl extends BaseService implements DesignService {
|
|
|
orderItem.setItemType(object.get("type").toString());
|
|
|
orderItem.setLocationX(Double.parseDouble(object.get("left").toString()));
|
|
|
orderItem.setLocationY(Double.parseDouble(object.get("top").toString()));
|
|
|
- orderItem.setSizeWidth(ERPUtils.px2mm(((BigDecimal) object.get("width")).doubleValue()));
|
|
|
- orderItem.setSizeHeight(ERPUtils.px2mm(((BigDecimal) object.get("height")).doubleValue()));
|
|
|
+ orderItem.setSizeWidth(ERPUtils.px2mm(new BigDecimal(object.get("width").toString()).doubleValue()));
|
|
|
+ orderItem.setSizeHeight(ERPUtils.px2mm(new BigDecimal(object.get("height").toString()).doubleValue()));
|
|
|
orderItem.setRotation(Double.parseDouble(object.get("angle").toString()));
|
|
|
|
|
|
orderItems.add(orderItem);
|