优化sql

This commit is contained in:
think 2025-02-27 09:36:45 +08:00
parent 2128d2572f
commit 832a26b398
6 changed files with 183 additions and 19 deletions

View File

@ -54,6 +54,15 @@ public class PlanSubRespVO {
@ExcelProperty("毛坯结束日期")
private LocalDateTime blankDate;
@Schema(description = "毛坯开始日期")
@ExcelProperty("毛坯开始日期")
private LocalDateTime startBlankDates;
@Schema(description = "毛坯结束日期")
@ExcelProperty("毛坯结束日期")
private LocalDateTime blankDates;
@Schema(description = "毛坯设计天数")
@ExcelProperty("毛坯设计天数")
private Long blankNum;
@ -71,6 +80,14 @@ public class PlanSubRespVO {
@ExcelProperty("2D结束日期")
private LocalDateTime twoDimDate;
@Schema(description = "2D开始日期")
@ExcelProperty("2D开始日期")
private LocalDateTime startTwoDimDates;
@Schema(description = "2D结束日期")
@ExcelProperty("2D结束日期")
private LocalDateTime twoDimDates;
@Schema(description = "2D设计天数")
@ExcelProperty("2D设计天数")
private Long twoDimNum;
@ -87,6 +104,14 @@ public class PlanSubRespVO {
@ExcelProperty("3D结束日期")
private LocalDateTime threeDimDate;
@Schema(description = "3D开始日期")
@ExcelProperty("3D开始日期")
private LocalDateTime startThreeDimDates;
@Schema(description = "3D结束日期")
@ExcelProperty("3D结束日期")
private LocalDateTime threeDimDates;
@Schema(description = "3D设计天数")
@ExcelProperty("3D设计天数")
private Long threeDimNum;

View File

@ -64,6 +64,20 @@ public class PlanSubDO extends BaseDO {
*/
private LocalDateTime blankDate;
/**
* 毛坯开始日期
*/
@TableField(exist = false)
private LocalDateTime startBlankDates;
/**
* 毛坯结束日期
*/
@TableField(exist = false)
private LocalDateTime blankDates;
/**
* 毛坯设计天数
*/
@ -86,6 +100,20 @@ public class PlanSubDO extends BaseDO {
*/
private LocalDateTime twoDimDate;
/**
* 2D开始日期
*/
@TableField(exist = false)
private LocalDateTime startTwoDimDates;
/**
* 2D结束日期
*/
@TableField(exist = false)
private LocalDateTime twoDimDates;
/**
* 2D设计天数
*/
@ -107,6 +135,20 @@ public class PlanSubDO extends BaseDO {
*/
private LocalDateTime threeDimDate;
/**
* 3D开始日期
*/
@TableField(exist = false)
private LocalDateTime startThreeDimDates;
/**
* 3D结束日期
*/
@TableField(exist = false)
private LocalDateTime threeDimDates;
/**
* 3D设计天数
*/

View File

@ -37,6 +37,40 @@ public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
query.eq(reqVO.getProjectPlanId() != null, PlanSubDO::getProjectPlanId, reqVO.getProjectPlanId());
return selectPage(reqVO, query);
}
default List<PlanSubDO> searchOwnerThrees(Long planId,String name,String dateOne,String dateTwo,String id,long projectPlanid) {
MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanSubDO.class)
.select("a.change_end_time as changeEndTime,b.name as projectSubName,b.amount,b.unit, c.name as equipName ,d.name as compositionName")
.leftJoin(PlanDO.class, "a", PlanDO::getId, PlanSubDO::getProjectPlanId)
.leftJoin(ProjectOrderSubDO.class, "b", ProjectOrderSubDO::getId, PlanSubDO::getProjectSubId)
.leftJoin(EquipDO.class,"c",EquipDO::getId,PlanSubDO::getEquipId)
.leftJoin(CompositionDO.class, "d", CompositionDO::getId, ProjectOrderSubDO::getCompositionId)
.disableSubLogicDel()
.orderByAsc(PlanSubDO::getId);
// 增加查询条件
query.eq(StringUtils.isNotBlank(name), PlanSubDO:: getThreeDimOwner, name);
// 添加日期范围查询条件
if (StringUtils.isNotBlank(dateOne) && StringUtils.isNotBlank(dateTwo)) {
query.and(i -> i.between(PlanSubDO::getStartThreeDimDate, dateOne, dateTwo)
.or(a -> a.between(PlanSubDO::getThreeDimDate, dateOne, dateTwo)));
}
if(StringUtils.isNotBlank(id)){
query.ne(PlanSubDO::getId,id);
}
if(!(planId == 0L)){
query.ne(PlanSubDO::getProjectPlanId,planId);
}
query.ne(PlanSubDO::getProjectPlanId,projectPlanid);
return selectList(query);
}
default List<PlanSubDO> searchOwnerThree(String name,String dateOne,String dateTwo,String id) {
MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanSubDO.class)
@ -64,7 +98,7 @@ public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
return selectList(query);
}
default List<PlanSubDO> searchOwnerTwos(Long planId,String name,String dateOne,String dateTwo,String id) {
default List<PlanSubDO> searchOwnerTwos(Long planId,String name,String dateOne,String dateTwo,String id,long projectPlanid) {
MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanSubDO.class)
.select("a.change_end_time as changeEndTime,b.name as projectSubName,b.amount,b.unit, c.name as equipName ,d.name as compositionName")
@ -96,6 +130,8 @@ public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
query.ne(PlanSubDO::getProjectPlanId,planId);
}
query.ne(PlanSubDO::getProjectPlanId,projectPlanid);
return selectList(query);
}
@ -127,7 +163,7 @@ public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
}
return selectList(query);
}
default List<PlanSubDO> searchOwners(Long planId,String name,String dateOne,String dateTwo,String id) {
default List<PlanSubDO> searchOwners(Long planId,String name,String dateOne,String dateTwo,String id,long projectPlanid) {
MPJLambdaWrapper<PlanSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanSubDO.class)
.select("a.change_end_time as changeEndTime,b.name as projectSubName,b.amount,b.unit, c.name as equipName ,d.name as compositionName")
@ -159,6 +195,8 @@ public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
query.ne(PlanSubDO::getProjectPlanId,planId);
}
query.ne(PlanSubDO::getProjectPlanId,projectPlanid);
return selectList(query);
}

View File

@ -105,9 +105,9 @@ public class PlanSubServiceImpl implements PlanSubService {
// planSubDOSs 改为局部变量
List<PlanSubDO> planSubDOSs = new ArrayList<>();
// 调用递归方法
return postOwnderChaHuoRecursive(tableData,planSubDOSs,0);//(planId, name, dateOne, dateTwo, id, diffDays, type, dateThree, planSubDOSs);
return postOwnderChaHuoRecursive(tableData,planSubDOSs,0,tableData.get(0).getProjectPlanId());//(planId, name, dateOne, dateTwo, id, diffDays, type, dateThree, planSubDOSs);
}
public List<PlanSubDO> postOwnderChaHuoRecursive(List<PlanSubRespVO> tableData,List<PlanSubDO> planSubDOSs,int index){//(Long planId, String name, String dateOne, String dateTwo, String id, Long diffDays, int type, String dateThree, List<PlanSubDO> planSubDOSs) {
public List<PlanSubDO> postOwnderChaHuoRecursive(List<PlanSubRespVO> tableData,List<PlanSubDO> planSubDOSs,int index,long projectPlanid){//(Long planId, String name, String dateOne, String dateTwo, String id, Long diffDays, int type, String dateThree, List<PlanSubDO> planSubDOSs) {
//用来控制递归调用
int a = 0;
@ -135,7 +135,7 @@ public class PlanSubServiceImpl implements PlanSubService {
//先根据第一个数组检索出其余项目是否是日期冲突的问题
List<PlanSubDO> planSubDOS = searchOwners(planSubRespVO.getProjectPlanId(),owner,formattedDateTime , endTime, String.valueOf(planSubRespVO.getId()), tableData.get(0).getType());
List<PlanSubDO> planSubDOS = searchOwners(planSubRespVO.getProjectPlanId(),owner,formattedDateTime , endTime, String.valueOf(planSubRespVO.getId()), tableData.get(0).getType(),projectPlanid);
//先将查出的数据存入集合中
for(PlanSubDO planSubDO : planSubDOS){
//存入之前要判断集合中ID是否存在存在则不添加
@ -178,8 +178,12 @@ public class PlanSubServiceImpl implements PlanSubService {
if(tableData.get(0).getType() == 1){
reqVO.setTianshu(planSubDOSs.get(i).getBlankNum());
List<ShopCalendarDO> shopCalendarDOS = shopCalendarMapper.searchRllist(reqVO);
planSubDOSs.get(i).setStartBlankDates(planSubDOSs.get(i).getStartBlankDate());
planSubDOSs.get(i).setBlankDates(planSubDOSs.get(i).getBlankDate());
planSubDOSs.get(i).setStartBlankDate(shopCalendarDOS.get(0).getDates());
int b = shopCalendarDOS.size();
planSubDOSs.get(i).setBlankDate(shopCalendarDOS.get(b - 1).getDates());
//更换完成后变更取值日期
endTimes = shopCalendarDOS.get(b - 1).getDates().format(formatter);
@ -194,6 +198,10 @@ public class PlanSubServiceImpl implements PlanSubService {
}else if(tableData.get(0).getType() == 2){
reqVO.setTianshu(planSubDOSs.get(i).getTwoDimNum());
List<ShopCalendarDO> shopCalendarDOS = shopCalendarMapper.searchRllist(reqVO);
planSubDOSs.get(i).setStartTwoDimDates(planSubDOSs.get(i).getStartTwoDimDate());
planSubDOSs.get(i).setTwoDimDates(planSubDOSs.get(i).getTwoDimDate());
planSubDOSs.get(i).setStartTwoDimDate(shopCalendarDOS.get(0).getDates());
int b = shopCalendarDOS.size();
planSubDOSs.get(i).setTwoDimDate(shopCalendarDOS.get(b - 1).getDates());
@ -210,6 +218,10 @@ public class PlanSubServiceImpl implements PlanSubService {
}else{
reqVO.setTianshu(planSubDOSs.get(i).getThreeDimNum());
List<ShopCalendarDO> shopCalendarDOS = shopCalendarMapper.searchRllist(reqVO);
planSubDOSs.get(i).setStartThreeDimDates(planSubDOSs.get(i).getStartThreeDimDate());
planSubDOSs.get(i).setThreeDimDates(planSubDOSs.get(i).getThreeDimDate());
planSubDOSs.get(i).setStartThreeDimDate(shopCalendarDOS.get(0).getDates());
int b = shopCalendarDOS.size();
planSubDOSs.get(i).setThreeDimDate(shopCalendarDOS.get(b - 1).getDates());
@ -239,7 +251,7 @@ public class PlanSubServiceImpl implements PlanSubService {
index = planSubDOSs.size();
//当全部变更完成后需要再用变更之后的数据对每一条在进行一次检索防止更改之后的数据有冲突
if(a>0){
postOwnderChaHuoRecursive(tableDatas,planSubDOSs,index);
postOwnderChaHuoRecursive(tableDatas,planSubDOSs,index,projectPlanid);
}
//
@ -260,15 +272,15 @@ public class PlanSubServiceImpl implements PlanSubService {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
return localDateTime.format(formatter);
}
public List<PlanSubDO> searchOwners(Long planId,String name,String dateOne,String dateTwo,String id,int type){
public List<PlanSubDO> searchOwners(Long planId,String name,String dateOne,String dateTwo,String id,int type,long projectPlanid){
List<PlanSubDO> planSubDOS = new ArrayList<>();
if(type == 1){
planSubDOS = planSubMapper.searchOwners(planId,name,dateOne,dateTwo,id);
planSubDOS = planSubMapper.searchOwners(planId,name,dateOne,dateTwo,id,projectPlanid);
}else if(type == 2){
planSubDOS = planSubMapper.searchOwnerTwos(planId,name,dateOne,dateTwo,id);
planSubDOS = planSubMapper.searchOwnerTwos(planId,name,dateOne,dateTwo,id,projectPlanid);
}else{
planSubDOS = planSubMapper.searchOwnerThree(name,dateOne,dateTwo,id);
planSubDOS = planSubMapper.searchOwnerThrees(planId,name,dateOne,dateTwo,id,projectPlanid);
}
return planSubDOS;
}

View File

@ -898,14 +898,22 @@ const getOwnderListss = async (index: number) => {
const datalists = await PlanSubApi.getOwnderPlanSub(formatDate(currentRow.threeDimDate, 'YYYY-MM-DD'), prod.value.projectPlanSubs[i].threeDimNum);
prod.value.projectPlanSubs[i].startThreeDimDate = datalists[0].dates;
prod.value.projectPlanSubs[i].threeDimDate = datalists[1].dates;
datas.startThreeDimDates = datas.startThreeDimDate;
datas.threeDimDates = datas.threeDimDate;
datas.startThreeDimDate = datalists[0].dates;
datas.threeDimDate = datalists[1].dates;
datas.changeEndTime = formData.value.changeEndTime;
datas.projectPlanId = formData.value.id;
datas.type = 2;
currentTime.value = datalists[1].dates;
dateThree.value = datalists[1].dates;
dataListShuju.value.push(datas);
console.log("最新的一次");
console.log(dataListShuju.value);
dataListShujus.value.push(datas);
await processRecursive(i); //
}
@ -959,8 +967,13 @@ const getOwnderListss = async (index: number) => {
const datalists = await PlanSubApi.getOwnderPlanSub(formatDate(queryStartTime, 'YYYY-MM-DD'), prod.value.projectPlanSubs[b].threeDimNum);
prod.value.projectPlanSubs[b].startThreeDimDate = datalists[0].dates;
prod.value.projectPlanSubs[b].threeDimDate = datalists[1].dates;
existingItem.startThreeDimDates = existingItem.startThreeDimDate;
existingItem.threeDimDates = existingItem.threeDimDate;
existingItem.startThreeDimDate = datalists[0].dates;
existingItem.threeDimDate = datalists[1].dates;
lastEndTime = datalists[1].dates;
existingItem.changeEndTime = formData.value.changeEndTime;
existingItem.projectPlanId = formData.value.id;
@ -1057,8 +1070,13 @@ const getOwnderLists = async (index: number) => {
const datalists = await PlanSubApi.getOwnderPlanSub(formatDate(currentRow.twoDimDate, 'YYYY-MM-DD'), prod.value.projectPlanSubs[i].twoDimNum);
prod.value.projectPlanSubs[i].startTwoDimDate = datalists[0].dates;
prod.value.projectPlanSubs[i].twoDimDate = datalists[1].dates;
datas.startTwoDimDates = datas.startTwoDimDate;
datas.twoDimDates = datas.twoDimDate;
datas.startTwoDimDate = datalists[0].dates;
datas.twoDimDate = datalists[1].dates;
datas.changeEndTime = formData.value.changeEndTime;
datas.projectPlanId = formData.value.id;
datas.type = 2;
@ -1122,8 +1140,13 @@ const getOwnderLists = async (index: number) => {
const datalists = await PlanSubApi.getOwnderPlanSub(formatDate(queryStartTime, 'YYYY-MM-DD'), prod.value.projectPlanSubs[b].twoDimNum);
prod.value.projectPlanSubs[b].startTwoDimDate = datalists[0].dates;
prod.value.projectPlanSubs[b].twoDimDate = datalists[1].dates;
existingItem.startTwoDimDates = existingItem.startTwoDimDate;
existingItem.twoDimDates = existingItem.twoDimDate;
existingItem.startTwoDimDate = datalists[0].dates;
existingItem.twoDimDate = datalists[1].dates;
lastEndTime = datalists[1].dates;
existingItem.changeEndTime = formData.value.changeEndTime;
existingItem.projectPlanId = formData.value.id;
@ -1214,8 +1237,12 @@ const getOwnderList = async (index: number) => {
const datalists = await PlanSubApi.getOwnderPlanSub(formatDate(currentRow.blankDate, 'YYYY-MM-DD'), prod.value.projectPlanSubs[i].blankNum);
prod.value.projectPlanSubs[i].startBlankDate = datalists[0].dates;
prod.value.projectPlanSubs[i].blankDate = datalists[1].dates;
datas.startBlankDates = datas.startBlankDate;
datas.blankDates = datas.blankDate;
datas.startBlankDate = datalists[0].dates;
datas.blankDate = datalists[1].dates;
datas.changeEndTime = formData.value.changeEndTime;
datas.projectPlanId = formData.value.id
currentTime.value = datalists[1].dates;
@ -1279,8 +1306,13 @@ const getOwnderList = async (index: number) => {
const datalists = await PlanSubApi.getOwnderPlanSub(formatDate(queryStartTime, 'YYYY-MM-DD'), prod.value.projectPlanSubs[b].blankNum);
prod.value.projectPlanSubs[b].startBlankDate = datalists[0].dates;
prod.value.projectPlanSubs[b].blankDate = datalists[1].dates;
existingItem.startBlankDates = existingItem.startBlankDate;
existingItem.blankDates = existingItem.blankDate;
existingItem.startBlankDate = datalists[0].dates;
existingItem.blankDate = datalists[1].dates;
lastEndTime = datalists[1].dates;
existingItem.changeEndTime = formData.value.changeEndTime;
existingItem.projectPlanId = formData.value.id;

View File

@ -51,7 +51,7 @@
<template #header>毛坯开始日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.startBlankDate`" class="mb-0px!">
<el-date-picker class="!w-265px" v-model="row.startBlankDate" type="date" value-format="x"
<el-date-picker class="!w-265px" v-model="row.startBlankDates" type="date" value-format="x"
placeholder="毛坯开始日期"/>
</el-form-item>
</template>
@ -60,7 +60,7 @@
<template #header>毛坯结束日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.blankDate`" class="mb-0px!">
<el-date-picker class="!w-265px" v-model="row.blankDate" type="date" value-format="x"
<el-date-picker class="!w-265px" v-model="row.blankDates" type="date" value-format="x"
placeholder="毛坯结束日期" />
</el-form-item>
</template>
@ -79,7 +79,7 @@
<template #header>2D开始日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.startTwoDimDate`" class="mb-0px!">
<el-date-picker class="!w-265px" v-model="row.startTwoDimDate" type="date" value-format="x"
<el-date-picker class="!w-265px" v-model="row.startTwoDimDates" type="date" value-format="x"
placeholder="2D开始日期" />
</el-form-item>
</template>
@ -88,7 +88,7 @@
<template #header>2D结束日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.twoDimDate`" class="mb-0px!">
<el-date-picker class="!w-265px" v-model="row.twoDimDate" type="date" value-format="x"
<el-date-picker class="!w-265px" v-model="row.twoDimDates" type="date" value-format="x"
placeholder="2D结束日期" />
</el-form-item>
</template>
@ -110,7 +110,7 @@
<template #header>3D开始日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.startThreeDimDate`" class="mb-0px!">
<el-date-picker class="!w-265px" v-model="row.startThreeDimDate" type="date" value-format="x"
<el-date-picker class="!w-265px" v-model="row.startThreeDimDates" type="date" value-format="x"
placeholder="3D开始日期" />
</el-form-item>
</template>
@ -119,7 +119,7 @@
<template #header>3D结束日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.threeDimDate`" class="mb-0px!">
<el-date-picker class="!w-265px" v-model="row.threeDimDate" type="date" value-format="x"
<el-date-picker class="!w-265px" v-model="row.threeDimDates" type="date" value-format="x"
placeholder="3D结束日期" />
</el-form-item>
</template>
@ -142,7 +142,8 @@
</el-form>
<div class="text-center hl-footer">
<el-button @click="clouse" size="large"> </el-button><!-- @click="() => router.back()" -->
<el-button @click="submitForm" type="success" size="large">确认插活</el-button><!-- @click="submitForm" -->
<el-button @click="qrch" type="danger" size="large">确认插活</el-button>
<el-button @click="submitForm" type="success" size="large">保存</el-button><!-- @click="submitForm" -->
</div>
</el-card>
@ -208,6 +209,20 @@ onMounted(async () => {
console.log(formData.value.name);
});
const qrch = async() => {
for(let a=0;a<formData.value.projectPlanSubs.length;a++){
formData.value.projectPlanSubs[a].startBlankDates = formData.value.projectPlanSubs[a].startBlankDate;
formData.value.projectPlanSubs[a].blankDates = formData.value.projectPlanSubs[a].blankDate;
formData.value.projectPlanSubs[a].startTwoDimDates = formData.value.projectPlanSubs[a].startTwoDimDate;
formData.value.projectPlanSubs[a].twoDimDates = formData.value.projectPlanSubs[a].twoDimDate;
formData.value.projectPlanSubs[a].startThreeDimDates = formData.value.projectPlanSubs[a].startThreeDimDate;
formData.value.projectPlanSubs[a].threeDimDates = formData.value.projectPlanSubs[a].threeDimDate;
}
}
const submitForm = async () => {