提交 ef5b5b6b authored 作者: zjm's avatar zjm

feat(清退、销毁、报废、丢失、退役模块): 统一添加了根据任务id查询业务相关单据接口

装备履历跳转页面设计如下,左边页面做单据的预览,目前只能预览图片,右边上半部分展示装备履历列表,下方展示相关单据提供下载,这个需求
上级 a96297d7
...@@ -29,7 +29,12 @@ public enum FileName { ...@@ -29,7 +29,12 @@ public enum FileName {
/** /**
* 配发单 * 配发单
*/ */
ALLOT(6,"配发单"); ALLOT(6,"配发单"),
/**
* 丢失单
*/
LOSS(7,"丢失单");
public Integer id; public Integer id;
......
...@@ -130,4 +130,10 @@ public class DecommissioningQueryController { ...@@ -130,4 +130,10 @@ public class DecommissioningQueryController {
deviceLibraryService.judgeSeqNumbersInNotEqualLifeStatus(list,3); deviceLibraryService.judgeSeqNumbersInNotEqualLifeStatus(list,3);
return ResponseEntity.ok("ok"); return ResponseEntity.ok("ok");
} }
@GetMapping(value ="/repel/fileMap/{taskId}")
@ApiOperation(value = "根据任务ID查询业务相关单据", notes = "根据任务ID查询业务相关单据")
public ResponseEntity repelFileMap( @PathVariable Integer taskId){
return ResponseEntity.ok(deviceDecommissioningQueryService.findByTaskIdToFileMapList(taskId));
}
} }
...@@ -46,4 +46,10 @@ public class DeviceDestroyQueryController { ...@@ -46,4 +46,10 @@ public class DeviceDestroyQueryController {
public ResponseEntity findApplyIdToDecommissioningTask(@RequestBody DestroySelectVo destroySelectVo){ public ResponseEntity findApplyIdToDecommissioningTask(@RequestBody DestroySelectVo destroySelectVo){
return ResponseEntity.ok(deviceDestroyQueryService.findPageDeviceDestroyBill(destroySelectVo)); return ResponseEntity.ok(deviceDestroyQueryService.findPageDeviceDestroyBill(destroySelectVo));
} }
@GetMapping(value ="/repel/fileMap/{taskId}")
@ApiOperation(value = "根据任务ID查询业务相关单据", notes = "根据任务ID查询业务相关单据")
public ResponseEntity repelFileMap( @PathVariable Integer taskId){
return ResponseEntity.ok(deviceDestroyQueryService.findByTaskIdToFileMapList(taskId));
}
} }
...@@ -11,10 +11,7 @@ import io.swagger.annotations.ApiOperation; ...@@ -11,10 +11,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
/** /**
...@@ -59,4 +56,10 @@ public class DeviceLossController { ...@@ -59,4 +56,10 @@ public class DeviceLossController {
lossBillService.superiorAuditRetrieve(retrieveAuditvo); lossBillService.superiorAuditRetrieve(retrieveAuditvo);
return ResponseEntity.ok("确认成功"); return ResponseEntity.ok("确认成功");
} }
@GetMapping(value ="/repel/fileMap/{taskId}")
@ApiOperation(value = "根据任务ID查询业务相关单据", notes = "根据任务ID查询业务相关单据")
public ResponseEntity repelFileMap( @PathVariable Integer taskId){
return ResponseEntity.ok(lossBillService.findTaskIdToFileMap(taskId));
}
} }
...@@ -31,4 +31,7 @@ public class DeviceLossSelectController { ...@@ -31,4 +31,7 @@ public class DeviceLossSelectController {
public ResponseEntity initiateLoss( @PathVariable Integer taskId){ public ResponseEntity initiateLoss( @PathVariable Integer taskId){
return ResponseEntity.ok(lossBillSelectService.findDeviceLoss(taskId)); return ResponseEntity.ok(lossBillSelectService.findDeviceLoss(taskId));
} }
} }
package com.tykj.dev.device.loss.service; package com.tykj.dev.device.loss.service;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.loss.entity.domain.DeviceLoss; import com.tykj.dev.device.loss.entity.domain.DeviceLoss;
import com.tykj.dev.device.loss.entity.vo.LossAuditvo; import com.tykj.dev.device.loss.entity.vo.LossAuditvo;
import com.tykj.dev.device.loss.entity.vo.RetrieveAuditvo; import com.tykj.dev.device.loss.entity.vo.RetrieveAuditvo;
import com.tykj.dev.device.user.subject.entity.SecurityUser; import com.tykj.dev.device.user.subject.entity.SecurityUser;
import java.util.List;
import java.util.Map;
/** /**
* @author zjm * @author zjm
* @version 1.0.0 * @version 1.0.0
...@@ -34,4 +38,5 @@ public interface LossBillService { ...@@ -34,4 +38,5 @@ public interface LossBillService {
*/ */
void superiorAuditRetrieve(RetrieveAuditvo retrieveAuditvo); void superiorAuditRetrieve(RetrieveAuditvo retrieveAuditvo);
Map<String, List<FileRet>> findTaskIdToFileMap(Integer taskId);
} }
package com.tykj.dev.device.loss.service.impl; package com.tykj.dev.device.loss.service.impl;
import com.tykj.dev.blockcha.subject.service.BlockChainUtil; import com.tykj.dev.blockcha.subject.service.BlockChainUtil;
import com.tykj.dev.config.base.FileName;
import com.tykj.dev.device.file.entity.FileRet;
import com.tykj.dev.device.file.service.FilesUtil; import com.tykj.dev.device.file.service.FilesUtil;
import com.tykj.dev.device.library.repository.DeviceLibraryDao; import com.tykj.dev.device.library.repository.DeviceLibraryDao;
import com.tykj.dev.device.library.service.DeviceLibraryService; import com.tykj.dev.device.library.service.DeviceLibraryService;
...@@ -11,6 +13,7 @@ import com.tykj.dev.device.loss.entity.domain.DeviceLoss; ...@@ -11,6 +13,7 @@ import com.tykj.dev.device.loss.entity.domain.DeviceLoss;
import com.tykj.dev.device.loss.entity.vo.LossAuditvo; import com.tykj.dev.device.loss.entity.vo.LossAuditvo;
import com.tykj.dev.device.loss.entity.vo.RetrieveAuditvo; import com.tykj.dev.device.loss.entity.vo.RetrieveAuditvo;
import com.tykj.dev.device.loss.service.DeviceLossService; import com.tykj.dev.device.loss.service.DeviceLossService;
import com.tykj.dev.device.loss.service.LossBillSelectService;
import com.tykj.dev.device.loss.service.LossBillService; import com.tykj.dev.device.loss.service.LossBillService;
import com.tykj.dev.device.loss.util.StringUtils; import com.tykj.dev.device.loss.util.StringUtils;
import com.tykj.dev.device.task.service.TaskService; import com.tykj.dev.device.task.service.TaskService;
...@@ -32,7 +35,9 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -32,7 +35,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -76,6 +81,8 @@ public class LossBillServiceImpl implements LossBillService { ...@@ -76,6 +81,8 @@ public class LossBillServiceImpl implements LossBillService {
@Autowired @Autowired
UserService userService; UserService userService;
@Autowired
LossBillSelectService lossBillSelectService;
@Override @Override
public void initiateLoss(DeviceLoss deviceLoss, SecurityUser securityUser) { public void initiateLoss(DeviceLoss deviceLoss, SecurityUser securityUser) {
deviceLibraryService.isInStockOrWaitRetired(deviceLoss.getDevIdsList()); deviceLibraryService.isInStockOrWaitRetired(deviceLoss.getDevIdsList());
...@@ -194,6 +201,14 @@ public class LossBillServiceImpl implements LossBillService { ...@@ -194,6 +201,14 @@ public class LossBillServiceImpl implements LossBillService {
deviceLossService.save(deviceLoss); deviceLossService.save(deviceLoss);
} }
@Override
public Map<String,List<FileRet>> findTaskIdToFileMap(Integer taskId) {
Map<String,List<FileRet>> map=new HashMap<>();
DeviceLoss deviceLoss= lossBillSelectService.findDeviceLoss(taskId);
map.put(FileName.LOSS.name,deviceLoss.getFileRetList());
return map;
}
private TaskBto newRetrieveCountyTask(Integer unitId, Integer lossId, String title,Integer userID){ private TaskBto newRetrieveCountyTask(Integer unitId, Integer lossId, String title,Integer userID){
List<Integer> list=new ArrayList<>(); List<Integer> list=new ArrayList<>();
......
package com.tykj.dev.misc.utils; package com.tykj.dev.misc.utils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -16,45 +20,80 @@ import java.util.stream.Collectors; ...@@ -16,45 +20,80 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
public class DeviceModelSort { public class DeviceModelSort {
public static Map<String,Integer> mapModelSort; public static Map<String, Integer> mapModelSort;
public static Map<String,Integer> mapUnitSort; public static Map<String, Integer> mapUnitSort;
/** /**
* 列装型号排序方法 * 列装型号排序方法
*
* @param modelList 需要排序的型号 * @param modelList 需要排序的型号
* @return 排】序过后的型号列表 * @return 排】序过后的型号列表
*/ */
public static List<String> modelToSort(List<String> modelList){ public static List<String> modelToSort(List<String> modelList) {
return modelList.stream().sorted(Comparator.comparing(DeviceModelSort::toModelSort)).collect(Collectors.toList()); //int -> map {id , value String} -> sort -> mappping get value -> to list
// List<String> resultModel = new ArrayList<>();
// List<SortedModel> sortedModels = new ArrayList<>();
//
// for (String m : modelList) {
// sortedModels.add(new SortedModel(toModelSort(m), m));
// }
//
// sortedModels.sort(Comparator.comparing(SortedModel::getId));
//
// for (SortedModel model : sortedModels) {
// resultModel.add(model.getValue());
// }
return modelList.stream()
.map(s -> new SortedModel(toModelSort(s), s))
.sorted(Comparator.comparing(SortedModel::getId))
.map(SortedModel::getValue)
.collect(Collectors.toList());
// modelList= modelList.stream().sorted(Comparator.comparing(DeviceModelSort::toModelSort)).collect(Collectors.toList());
// return modelList;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
static
class SortedModel {
Integer id;
String value;
} }
/** /**
* 获取型号对应的排序号 * 获取型号对应的排序号
*
* @param model 型号 * @param model 型号
* @return 排序号码 * @return 排序号码
*/ */
public static Integer toModelSort(String model){ public static Integer toModelSort(String model) {
System.out.println(model);
return mapModelSort.get(model); return mapModelSort.get(model);
} }
/** /**
* 单位排序排序方法 * 单位排序排序方法
*
* @param unitList 需要排序的型号 * @param unitList 需要排序的型号
* @return 排序过后的型号列表 * @return 排序过后的型号列表
*/ */
public static List<String> unitToSort(List<String> unitList){ public static List<String> unitToSort(List<String> unitList) {
return unitList.stream().sorted(Comparator.comparing(DeviceModelSort::toUnitSort)).collect(Collectors.toList()); return unitList.stream().sorted(Comparator.comparing(DeviceModelSort::toUnitSort)).collect(Collectors.toList());
} }
/** /**
* 获取单位对应的排序号 * 获取单位对应的排序号
* @param unitName 单位名称 *
* @param unitName 单位名称
* @return 排序号码 * @return 排序号码
*/ */
public static Integer toUnitSort(String unitName){ public static Integer toUnitSort(String unitName) {
return mapUnitSort.get(unitName); return mapUnitSort.get(unitName);
} }
......
...@@ -46,4 +46,10 @@ public class ScrapQueryController { ...@@ -46,4 +46,10 @@ public class ScrapQueryController {
public ResponseEntity findApplyIdToScrapTask(@PathVariable Integer applyId){ public ResponseEntity findApplyIdToScrapTask(@PathVariable Integer applyId){
return ResponseEntity.ok(scrapQueryService.findApplyIdToScrapTask(applyId)); return ResponseEntity.ok(scrapQueryService.findApplyIdToScrapTask(applyId));
} }
@GetMapping(value ="/repel/fileMap/{taskId}")
@ApiOperation(value = "根据任务ID查询业务相关单据", notes = "根据任务ID查询业务相关单据")
public ResponseEntity repelFileMap( @PathVariable Integer taskId){
return ResponseEntity.ok(scrapQueryService.findByTaskIdToFileMapList(taskId));
}
} }
...@@ -29,6 +29,7 @@ public class RepelDevController { ...@@ -29,6 +29,7 @@ public class RepelDevController {
@Autowired @Autowired
RepelBusinessService repelBusinessService; RepelBusinessService repelBusinessService;
@Autowired @Autowired
AgainStorageBillService againStorageBillService; AgainStorageBillService againStorageBillService;
...@@ -177,4 +178,11 @@ public class RepelDevController { ...@@ -177,4 +178,11 @@ public class RepelDevController {
repelBusinessService.AllRepelNotDeviceSubmit(securityUser,taskId); repelBusinessService.AllRepelNotDeviceSubmit(securityUser,taskId);
return ResponseEntity.ok("任务办结完成"); return ResponseEntity.ok("任务办结完成");
} }
@ApiOperation(value = "test", notes = "全部清退无装备办结接口")
@GetMapping(value ="/test/{taskId}")
public ResponseEntity test(@ApiIgnore @AuthenticationPrincipal SecurityUser securityUser,@PathVariable Integer taskId){
return ResponseEntity.ok(repelBusinessService.repelWithdraw(taskId));
}
} }
...@@ -6,7 +6,9 @@ import com.tykj.dev.device.sendback.entity.vo.OrderOutData; ...@@ -6,7 +6,9 @@ import com.tykj.dev.device.sendback.entity.vo.OrderOutData;
import com.tykj.dev.device.sendback.entity.vo.RepelAuditResult; import com.tykj.dev.device.sendback.entity.vo.RepelAuditResult;
import com.tykj.dev.device.sendback.entity.vo.ResolveConfirm; import com.tykj.dev.device.sendback.entity.vo.ResolveConfirm;
import com.tykj.dev.device.sendback.entity.vo.StorageDeviceRepel; import com.tykj.dev.device.sendback.entity.vo.StorageDeviceRepel;
import com.tykj.dev.device.task.subject.bto.TaskBto;
import com.tykj.dev.device.user.subject.entity.SecurityUser; import com.tykj.dev.device.user.subject.entity.SecurityUser;
import org.apache.poi.ss.formula.functions.T;
import java.util.List; import java.util.List;
...@@ -144,4 +146,10 @@ public interface RepelBusinessService { ...@@ -144,4 +146,10 @@ public interface RepelBusinessService {
*/ */
void withdraw(Integer taskId); void withdraw(Integer taskId);
/**
* 清退总任务 撤销
* 判断下面任务是否存在配发中的 有则不能撤回需要等配发结束后在撤回。
*/
List<TaskBto> repelWithdraw(Integer taskId);
} }
...@@ -40,6 +40,7 @@ import com.tykj.dev.misc.base.StatusEnum; ...@@ -40,6 +40,7 @@ import com.tykj.dev.misc.base.StatusEnum;
import com.tykj.dev.misc.exception.ApiException; import com.tykj.dev.misc.exception.ApiException;
import com.tykj.dev.misc.utils.*; import com.tykj.dev.misc.utils.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -991,6 +992,38 @@ public class RepelBusinessServiceImpl implements RepelBusinessService { ...@@ -991,6 +992,38 @@ public class RepelBusinessServiceImpl implements RepelBusinessService {
} }
} }
@Override
public List<TaskBto> repelWithdraw(Integer taskId) {
//首先查询总任务,把清退任务都查询出来
//SEND_BACK_1209 SEND_BACK_1215 SEND_BACK_1218 SEND_BACK_1220
// TaskBto taskBto = taskService.get(taskId);
// DeviceRepel deviceRepel=deviceRepelService.findDeviceRepel(taskBto.getBillId());
//市级清退16查询
List<Integer> statusList=new ArrayList<>();
statusList.add(StatusEnum.SEND_BACK_1209.id);
statusList.add(StatusEnum.SEND_BACK_1215.id);
statusList.add(StatusEnum.SEND_BACK_1218.id);
statusList.add(StatusEnum.SEND_BACK_1220.id);
List<TaskBto> taskBtoList = taskService.findAllBillTypeAndFatherId(BusinessEnum.SEND_BACK.id,taskId);
List<Integer> ids=taskBtoList.stream().map(TaskBto::getId).collect(Collectors.toList());
//市级清退统计任务集合
List<TaskBto> statisticalList = taskService.findAllBillTypeAndFatherIdIn(BusinessEnum.SEND_BACK_STATISTICAL.id,ids);
ids= statisticalList.stream().map(TaskBto::getId).collect(Collectors.toList());
taskBtoList.addAll( taskService.findAllBillTypeAndFatherIdIn(BusinessEnum.SEND_BACK.id,ids));
boolean flag = taskBtoList.stream().allMatch(taskBto -> !statusList.contains(taskBto.getBillStatus()));
// log.info("test :{}",flag);
if (flag){
//可以使用
}else {
//不可以撤回
}
//判断是否存在为哪些状态为不能清退
//不能清退都则返回否 告诉前端本次存在不能撤回都情况
//可以撤回 需要把所有都相关任务封存
return taskBtoList;
}
/** /**
* service私有方式 * service私有方式
......
...@@ -46,6 +46,12 @@ public interface TaskDao extends JpaRepository<Task, Integer>, JpaSpecificationE ...@@ -46,6 +46,12 @@ public interface TaskDao extends JpaRepository<Task, Integer>, JpaSpecificationE
List<Task> findAllByBillIdAndBusinessType(Integer billId, Integer businessType); List<Task> findAllByBillIdAndBusinessType(Integer billId, Integer businessType);
List<Task> findAllByBusinessTypeAndParentTaskId(Integer businessType, Integer taskId);
List<Task> findAllByBusinessTypeAndParentTaskIdIn(Integer businessType, List<Integer> taskId);
/** /**
* 根据账单id、业务类型、以及父id为null * 根据账单id、业务类型、以及父id为null
......
...@@ -232,6 +232,16 @@ public interface TaskService { ...@@ -232,6 +232,16 @@ public interface TaskService {
*/ */
TaskBto findBillTypeAndFatherId(Integer billType,Integer fatherId); TaskBto findBillTypeAndFatherId(Integer billType,Integer fatherId);
List<TaskBto> findAllBillTypeAndFatherId(Integer billType,Integer fatherId);
/**
* 根据业务类型和父类id集合查询任务
* @param billType 业务类型
* @param fatherIds 父类id集合
* @return 任务集合
*/
List<TaskBto> findAllBillTypeAndFatherIdIn(Integer billType,List<Integer> fatherIds);
TaskBto findByTaskId(Integer taskId); TaskBto findByTaskId(Integer taskId);
List<TaskBto> findAllByBillIdAndBusinessType2(Integer billId,Integer businessType); List<TaskBto> findAllByBillIdAndBusinessType2(Integer billId,Integer businessType);
......
...@@ -1129,6 +1129,16 @@ public class TaskServiceImpl implements TaskService { ...@@ -1129,6 +1129,16 @@ public class TaskServiceImpl implements TaskService {
return taskDao.findByParentTaskIdAndBusinessType(fatherId,billType).parse2Bto(); return taskDao.findByParentTaskIdAndBusinessType(fatherId,billType).parse2Bto();
} }
@Override
public List<TaskBto> findAllBillTypeAndFatherId(Integer billType, Integer fatherId) {
return taskDao.findAllByBusinessTypeAndParentTaskId(billType,fatherId).stream().map(Task::parse2Bto).collect(Collectors.toList());
}
@Override
public List<TaskBto> findAllBillTypeAndFatherIdIn(Integer billType, List<Integer> fatherIds) {
return taskDao.findAllByBusinessTypeAndParentTaskIdIn(billType,fatherIds).stream().map(Task::parse2Bto).collect(Collectors.toList());
}
@Override @Override
public TaskBto findByTaskId(Integer taskId) { public TaskBto findByTaskId(Integer taskId) {
return taskDao.findById(taskId).get().parse2Bto(); return taskDao.findById(taskId).get().parse2Bto();
......
{
"devDependencies": {
"commitizen": "^4.0.3",
"cz-conventional-changelog": "^3.0.2"
},
"config": {
"commitizen": {
"path": "./node_modules/cz-conventional-changelog"
}
},
"version": "1.0.2",
"scripts": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md"
}
}
\ No newline at end of file
## 开发流程与规范
### 整体流程
![装备开发部署流程](/images/装备开发部署流程.jpg)
**组长流程**
两份文档 - changelog(自生成) 组员任务表(分发任务)
1. 获得任务,设定里程碑的目标与截止时间
2. 分发任务给开发人员
3. 开发人员领取任务,在自己本地完成后与前端对接测试完毕后提交到DEV(以整块的任务需求来提交)
4. 组长在确认无误后,生成changeLog,在Gitlab上合并到master上,关闭相关issuse
5. 里程碑完成后,在master中打tag
**开发人员需要知道的**
- stash与pop 相关的操作
- 出现部分功能要先上了 先做代码分割
### Commit的规范
#### Commit格式
```
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
```
**type**
- feat:新功能(feature)
- fix:修补bug
- docs:文档(documentation)
- style: 格式(不影响代码运行的变动)
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)
- test:增加测试
- chore:构建过程或辅助工具的变动
ps : 如果`type``feat``fix`,则该 commit 将肯定出现在 Change log 之中。
**scope**
为模块名,例如核查模块
**subject**
关于项目的简短描述,不超过50个字
**Body**
- Body 部分是对本次 commit 的详细描述,可以分成多行。
- 应该说明代码变动的动机,以及与以前行为的对比。
**Footer**
- 如果当前 commit 针对某个issue,那么可以在 Footer 部分关闭这个 issue 。例如
```
Closes #234
```
### Git commit template模板Commit
**安装**
plugins里安装
### 自动生成changeLog
- 安装 `npm install -g commitizen`
- 安装 `npm install cz-conventional-changelog --save-dev`
- 安装 `npm install -g conventional-changelog-cli`
配置`package.json`
```
{
"devDependencies": {
"commitizen": "^4.0.3",
"cz-conventional-changelog": "^3.0.2"
},
"config": {
"commitizen": {
"path": "./node_modules/cz-conventional-changelog"
}
},
"version": "1.0.2",
"scripts": {
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0 && git add CHANGELOG.md"
}
}
```
### 生成changelog
- 追加 `conventional-changelog -p angular -i CHANGELOG.md -s `
- 全部生成 `conventional-changelog -p angular -i CHANGELOG.md -s -r 0`
### 组长发布的流程
-`dev`分支中生成changelog,随后push到仓库的dev分支中
- 在gitlab上进行合并,将dev的内容合并到master中
- 主场在本地拉取master内容,打tag,推送到远端仓库。
## 流水线信息
- jenkins地址 `http://192.168.100.247:8080`
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论