Commit c6f023fd authored by 赵啸非's avatar 赵啸非

产品版本更新分站点

parent bbcb9ba4
<template>
<div class="page">
<LayoutTable :data="tableData" :config="tableConfig">
<el-button
slot="table-head-left2"
style="margin-left: 10px"
type="primary"
class="addclass"
size="mini"
@click="cloneAppBySite"
>复制资源
</el-button>
</LayoutTable>
<drawer-show ref="drawerform" @ok="getData" />
</div>
......@@ -11,6 +20,7 @@
import drawerShow from "./drawershow";
import table from "@/assets/mixins/table";
import session from "@/assets/utils/session";
export default {
name: "ProductVersionList",
components: {
......@@ -18,10 +28,28 @@
},
mixins: [table],
created() {
const siteid = session.getSession("siteid");
this.query["siteId"] = siteid ? siteid : 1;
},
methods: {
cloneAppBySite(row) {
this.$post("/device/module/distribute/cloneAppBySite", {
sourceSiteId: 1,
targetSiteId: session.getSession("siteid"),
})
.then((res) => {
if (res.code == 1) {
this.$message.success("复制资源应用成功!");
this.getData();
}
})
.catch((error) => {
this.$message.error(error.message);
});
},
/** 重写新增方法 */
toAdd(row) {
row.siteId = session.getSession("siteid");
this.$refs.drawerform.add(row);
},
/** 重写编辑方法 */
......
......@@ -476,7 +476,6 @@ public class DeviceApiController {
} else {
serverInfo.setServerUrl(platformEntity.getSendUrl());
}
//serverInfo.setServerUrl(platformEntity.getSendUrl());
//String phpUrl=GlobalSysInfo.getParamValue(PARAM_SERVER_PHP_HTTP_URL, "http://10.12.185.213:8090");
//serverInfo.setServerUrl(phpUrl);
......@@ -529,13 +528,14 @@ public class DeviceApiController {
DeviceResp deviceResp = new DeviceResp();
try {
DeviceEntity deviceEntity = checkDeviceExist(req);
//查找版本号最大的.
//查找版本号最大的. todo 根据站点来划分
ProductVersionQuery productVersionQuery = new ProductVersionQuery();
productVersionQuery.setProductId(deviceEntity.getProductId());
productVersionQuery.setSiteId(deviceEntity.getSiteId());
productVersionQuery.setOrderColList(Arrays.asList(new OrderCol("version", OrderCol.DESCENDING)));
//productVersionQuery.setOrderKind(OrderCol.DESCENDING);
ProductVersionEntity productVersionEntity = productVersionService.selectOne(productVersionQuery);
ProductVersionEntity productVersionEntity = productVersionService.find(productVersionQuery).stream().filter(item -> StrUtil.endWith(item.getFilePath(), ".apk", true)).findFirst().orElseGet(() -> null);
// ProductVersionEntity productVersionEntity = productVersionService.selectOne(productVersionQuery);
if (ObjectUtils.isEmpty(productVersionEntity)) {
throw new AppException(DEVICE_VERSION_UNEXIST, DEVICE_VERSION_UNEXIST_CONTENT);
}
......
package com.mortals.xhx.module.product.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.product.model.ProductVersionEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* 产品客户端版本视图对象
*
* @author zxfei
* @date 2022-08-22
*/
* 产品客户端版本视图对象
*
* @author zxfei
* @date 2022-08-22
*/
@Data
public class ProductVersionVo extends BaseEntityLong {
/**
* 源站点
*/
private Long sourceSiteId;
/**
* 目标站点
*/
private Long targetSiteId;
}
\ No newline at end of file
package com.mortals.xhx.module.product.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.product.model.ProductVersionEntity;
......@@ -16,4 +17,7 @@ public interface ProductVersionService extends ICRUDService<ProductVersionEntity
void appPublish(ProductVersionEntity productVersionEntity, Context context);
Rest<String> cloneAppBySite(ProductVersionEntity productVersionEntity, Context context);
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
import com.alibaba.fastjson.JSON;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
......@@ -12,18 +13,20 @@ import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.base.system.message.impl.MessageProducer;
import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.common.code.LogTypeEnum;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.key.Constant;
import com.mortals.xhx.common.key.QueueKey;
import com.mortals.xhx.common.model.DefaultTbQueueMsgHeaders;
import com.mortals.xhx.common.model.MessageHeader;
import com.mortals.xhx.module.device.model.DeviceEntity;
import com.mortals.xhx.module.device.model.DeviceLogEntity;
import com.mortals.xhx.module.device.model.DeviceQuery;
import com.mortals.xhx.common.pdu.site.SitePdu;
import com.mortals.xhx.feign.site.ISiteFeign;
import com.mortals.xhx.module.device.model.*;
import com.mortals.xhx.module.device.service.DeviceLogService;
import com.mortals.xhx.module.device.service.DeviceService;
import com.mortals.xhx.module.product.dao.ProductVersionDao;
import com.mortals.xhx.module.product.model.ProductEntity;
import com.mortals.xhx.module.product.model.ProductVersionEntity;
import com.mortals.xhx.module.product.model.ProductVersionQuery;
import com.mortals.xhx.module.product.service.ProductService;
import com.mortals.xhx.module.product.service.ProductVersionService;
import com.mortals.xhx.queue.DefaultTbQueueMsg;
......@@ -69,6 +72,8 @@ public class ProductVersionServiceImpl extends AbstractCRUDServiceImpl<ProductVe
@Value("${upload.path}")
@Getter
private String filePathGlob;
@Autowired
private ISiteFeign siteFeign;
@Override
......@@ -137,4 +142,41 @@ public class ProductVersionServiceImpl extends AbstractCRUDServiceImpl<ProductVe
}
pushUpgradMsg(productVersionEntity, context);
}
@Override
public Rest<String> cloneAppBySite(ProductVersionEntity productVersionEntity, Context context) {
//拷贝应用
Long targetSiteId = productVersionEntity.getTargetSiteId();
Long sourceSiteId = productVersionEntity.getSourceSiteId();
Rest<SitePdu> sitePduRest = siteFeign.info(targetSiteId);
if (YesNoEnum.NO.getValue() == sitePduRest.getCode()) {
throw new AppException("未查询到当前站点!");
}
SitePdu sitePdu = sitePduRest.getData();
ProductVersionQuery productVersionQuery = new ProductVersionQuery();
productVersionQuery.setSiteId(sourceSiteId);
List<ProductVersionEntity> productVersionEntities = this.find(productVersionQuery);
//如果已存在 则不复制
for (ProductVersionEntity productVersion : productVersionEntities) {
ProductVersionQuery query = new ProductVersionQuery();
query.setSiteId(targetSiteId);
query.setProductId(productVersion.getProductId());
query.setVersion(productVersion.getVersion());
int count = this.count(query, context);
if (count == 0) {
productVersion.setId(null);
productVersion.setSiteId(sitePdu.getId());
productVersion.setSiteName(sitePdu.getSiteName());
productVersion.setSiteCode(sitePdu.getSiteCode());
productVersion.setFilePath("");
this.save(productVersion, context);
}
}
return Rest.ok();
}
}
\ No newline at end of file
......@@ -4,6 +4,7 @@ import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.product.model.ProductEntity;
import com.mortals.xhx.module.product.model.ProductVersionEntity;
import com.mortals.xhx.module.product.model.ProductVersionQuery;
......@@ -58,6 +59,26 @@ public class ProductVersionController extends BaseCRUDJsonBodyMappingController<
}
/**
* app应用克隆给本站点
*/
@PostMapping(value = "cloneAppBySite")
public Rest<Void> cloneAppBySite(@RequestBody ProductVersionEntity productVersionEntity) {
String busiDesc = this.getModuleDesc() + "部署克隆";
Rest<Void> rest = Rest.ok(busiDesc + " 【成功】");
try {
Rest<String> cloneRest = this.service.cloneAppBySite(productVersionEntity, getContext());
if (YesNoEnum.NO.getValue() == cloneRest.getCode()) {
return Rest.fail(cloneRest.getMsg());
}
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error("应用克隆异常", e);
rest = Rest.fail(super.convertException(e));
}
return rest;
}
/**
* 发布
......
......@@ -107,7 +107,7 @@ POST {{baseUrl}}/api/register
Content-Type: application/json
{
"deviceCode": "B8-13-32-86-3E-F4"
"deviceCode": "12-31-70-9C-BF-A3"
}
> {%
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment