结算管理功能开发

This commit is contained in:
liang.chao 2024-08-06 15:44:16 +08:00
parent 65040c2767
commit 23e4885815
17 changed files with 491 additions and 101 deletions

View File

@ -184,6 +184,8 @@ public class SltAgreementInfo {
private String partModelName; private String partModelName;
private String partName; private String partName;
private Integer codeNum; private Integer codeNum;
private Integer unitId;
private Integer lotId;
private List<SltAgreementInfo> node; private List<SltAgreementInfo> node;
} }

View File

@ -197,7 +197,7 @@ public class DateTimeHelper {
} }
/** /**
* 获取当前时间的年月 * 获取上月的年月
* *
* @return * @return
*/ */
@ -215,7 +215,7 @@ public class DateTimeHelper {
} }
/** /**
* 获取当前时间的上个年月 * 获取当前时间的年月
* *
* @return * @return
*/ */
@ -223,6 +223,15 @@ public class DateTimeHelper {
return format(new Date(), "yyyy-MM"); return format(new Date(), "yyyy-MM");
} }
/**
* 获取指定时间的年月
*
* @return
*/
public static String getNowMonth(Date date) {
return format(date, "yyyy-MM");
}
/** /**
* 获取当前时间的年月日 * 获取当前时间的年月日
* *

View File

@ -8,6 +8,7 @@ import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.scheduling.annotation.EnableScheduling;
/** /**
* 文件服务 * 文件服务
@ -18,6 +19,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableCustomConfig @EnableCustomConfig
@EnableRyFeignClients @EnableRyFeignClients
@EnableScheduling
@EnableEncryptableProperties @EnableEncryptableProperties
public class SgzbMaterialApplication public class SgzbMaterialApplication
{ {

View File

@ -0,0 +1,48 @@
package com.bonus.sgzb.material.domain;
import lombok.Data;
import java.util.List;
/**
* @Authorliang.chao
* @Date2024/8/5 - 14:28
*/
@Data
public class ProjectMonthCosts {
/**
* 主键id
*/
private Integer id;
/**
* 协议id
*/
private Integer agreementId;
/**
* 结算记录关联id
*/
private Integer sltMonthId;
/**
* 单位id
*/
private Integer unitId;
/**
*工程id
*/
private Integer projectId;
/**
* 结算月份
*/
private String month;
/**
* 费用承担方
*/
private String costBearingParty;
/**
* 结算金额
*/
private String costs;
private List<ProjectMonthDetail> node;
}

View File

@ -0,0 +1,73 @@
package com.bonus.sgzb.material.domain;
import lombok.Data;
import java.util.Date;
/**
* @Authorliang.chao
* @Date2024/8/5 - 15:08
*/
@Data
public class ProjectMonthDetail {
/**
* 主键id
*/
private Integer id;
/**
* 类型id
*/
private Integer typeId;
/**
* 编码id
*/
private Integer maId;
/**
* 单位
*/
private String unit;
/**
* 开始日期
*/
private String startTime;
/**
* 结束日期
*/
private String endTime;
/**
* 结算天数
*/
private String sltDays;
/**
* 结算金额
*/
private String sltCosts;
/**
* 本月暂计金额
*/
private String monthTemporarilyCosts;
/**
* 月结算关联id
*/
private Integer proMonthCostId;
/**
* 数量
*/
private String num;
/**
* 结算月份
*/
private String month;
/**
* 单价
*/
private String leasePrice;
/**
* 费用承担方
*/
private String costBearingParty;
private String leaseDays;
private String nuitName;
private String costs;
private String realCosts;
}

View File

@ -81,4 +81,6 @@ public interface AgreementInfoMapper {
* @return int * @return int
*/ */
int selectByagreementId(Long agreementId); int selectByagreementId(Long agreementId);
List<AgreementInfo> getAllAgreementId();
} }

View File

@ -1,6 +1,9 @@
package com.bonus.sgzb.material.mapper; package com.bonus.sgzb.material.mapper;
import com.bonus.sgzb.material.domain.AgreementInfo;
import com.bonus.sgzb.material.domain.CalMonthlyBean; import com.bonus.sgzb.material.domain.CalMonthlyBean;
import com.bonus.sgzb.material.domain.ProjectMonthCosts;
import com.bonus.sgzb.material.domain.ProjectMonthDetail;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List; import java.util.List;
@ -26,4 +29,13 @@ public interface CalMonthlyMapper {
int deleteMonthlyCosts(CalMonthlyBean bean); int deleteMonthlyCosts(CalMonthlyBean bean);
int insertProMonCosts(ProjectMonthCosts projectMonthCosts);
int insertProjectMonthDetail(ProjectMonthDetail projectMonthDetail);
int updateProMonCosts(ProjectMonthCosts pmcId);
List<ProjectMonthCosts> getMonthCosts(AgreementInfo agreementInfo);
List<ProjectMonthDetail> getMonthDetails(ProjectMonthCosts monthCost);
} }

View File

@ -13,23 +13,20 @@ public class Inform {
@Autowired @Autowired
private CalcMonthlyService calcfourCostService; private CalcMonthlyService calcfourCostService;
private final int CAL_DAY = 21; private final int CAL_DAY = 6;
@Scheduled(cron = "0 */5 * * * ? ") // 间隔5分钟执行 @Scheduled(cron = "0 */1 * * * ? ") // 间隔5分钟执行
//@Scheduled(cron = "0 0 1 22 * ? ") // 每个月22日凌晨1点执行 // @Scheduled(cron = "0 0 1 22 * ? ") // 每个月22日凌晨1点执行
@Async @Async
public void taskCycle() { public void taskCycle() {
System.out.println("===springMVC定时器启动===="); System.out.println("===springMVC定时器启动====");
try { try {
// 生成每月数据 (上月21日---本月20日) // 生成每月数据 (上月21日---本月20日)
calcfourCostService.calcMonthInfo(CAL_DAY); calcfourCostService.calcMonthInfo(CAL_DAY);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
System.out.println("===springMVC定时器结束===="); System.out.println("===springMVC定时器结束====");
} }

View File

@ -1,13 +1,23 @@
package com.bonus.sgzb.material.remind.service; package com.bonus.sgzb.material.remind.service;
import com.bonus.sgzb.base.api.domain.SltAgreementInfo;
import com.bonus.sgzb.common.core.utils.DateTimeHelper; import com.bonus.sgzb.common.core.utils.DateTimeHelper;
import com.bonus.sgzb.material.domain.AgreementInfo;
import com.bonus.sgzb.material.domain.CalMonthlyBean; import com.bonus.sgzb.material.domain.CalMonthlyBean;
import com.bonus.sgzb.material.domain.ProjectMonthCosts;
import com.bonus.sgzb.material.domain.ProjectMonthDetail;
import com.bonus.sgzb.material.mapper.CalMonthlyMapper; import com.bonus.sgzb.material.mapper.CalMonthlyMapper;
import com.bonus.sgzb.material.mapper.SltAgreementInfoMapper;
import com.bonus.sgzb.material.service.AgreementInfoService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
@Service @Service
@ -16,23 +26,29 @@ public class CalcMonthlyServiceImp implements CalcMonthlyService {
@Resource @Resource
CalMonthlyMapper calMonthlyMapper; CalMonthlyMapper calMonthlyMapper;
@Resource
private AgreementInfoService agreementInfoService;
@Resource
private SltAgreementInfoMapper sltAgreementInfoMapper;
@Override @Override
public void calcMonthInfo(int day) throws Exception { public void calcMonthInfo(int day) {
String time = DateTimeHelper.getNowDate(); String time = DateTimeHelper.getNowDate();
String calDay = DateTimeHelper.getCalDay(day); String calDay = DateTimeHelper.getCalDay(day);
if (time.equals(calDay)) { if (time.equals(calDay)) {
CalMonthlyBean record = new CalMonthlyBean(); CalMonthlyBean record = new CalMonthlyBean();
String month = DateTimeHelper.getCurrentMonth(); String month = DateTimeHelper.getCurrentMonth();
record.setMonth(month); record.setMonth(month);
cleanSameMonthOldRecords(record); // cleanSameMonthOldRecords(record);
calMonthlyMapper.insertCalcRecord(record); List<AgreementInfo> list = agreementInfoService.getAllAgreementId();
String taskId = record.getId();
String startTime = DateTimeHelper.getCalStartDay(); String startTime = DateTimeHelper.getCalStartDay();
String endTime = DateTimeHelper.getCalDay(day - 1); String endTime = DateTimeHelper.getCalDay(day - 1);
list.forEach(t -> {
//TODO, use startTime, endTime, taskId to save monthly result to a new table. t.setStartTime(startTime);
t.setEndTime(endTime);
});
getLeaseListMonth(list, record);
} }
} }
@ -49,4 +65,101 @@ public class CalcMonthlyServiceImp implements CalcMonthlyService {
} }
} }
private List<SltAgreementInfo> getLeaseListMonth(List<AgreementInfo> list, CalMonthlyBean record) {
List<SltAgreementInfo> leaseList = new ArrayList<>();
for (AgreementInfo bean : list) {
if (StringUtils.isNotBlank(bean.getStartTime()) && StringUtils.isNotBlank(bean.getEndTime())) {
List<SltAgreementInfo> monthList = sltAgreementInfoMapper.getLeaseListMonthNotNull(bean);
monthList.stream().filter(Objects::nonNull);
for (SltAgreementInfo sltAgreementInfo : monthList) {
calMonthlyMapper.insertCalcRecord(record);
// slt_project_month的主键id
String spmId = record.getId();
ProjectMonthCosts projectMonthCosts = new ProjectMonthCosts();
projectMonthCosts.setAgreementId(Integer.parseInt(sltAgreementInfo.getAgreementId()));
projectMonthCosts.setSltMonthId(Integer.parseInt(spmId));
projectMonthCosts.setUnitId(sltAgreementInfo.getUnitId());
projectMonthCosts.setProjectId(sltAgreementInfo.getLotId());
projectMonthCosts.setMonth(record.getMonth());
projectMonthCosts.setCostBearingParty(sltAgreementInfo.getCostBearingParty());
calMonthlyMapper.insertProMonCosts(projectMonthCosts);
// project_month_costs的主键id
int pmcId = projectMonthCosts.getId();
AgreementInfo agreementInfo = new AgreementInfo();
agreementInfo.setAgreementId(bean.getAgreementId());
agreementInfo.setCostBearingParty(sltAgreementInfo.getCostBearingParty());
agreementInfo.setStartTime(sltAgreementInfo.getBeginTime());
agreementInfo.setIds(sltAgreementInfo.getIds());
sltAgreementInfo.setMonth(bean.getMonth());
agreementInfo.setEndTime(sltAgreementInfo.getOffTime());
List<SltAgreementInfo> leaseListOneMonth = getLeaseListOneMonth(agreementInfo, sltAgreementInfo, pmcId);
projectMonthCosts.setCosts(sltAgreementInfo.getCosts());
calMonthlyMapper.updateProMonCosts(projectMonthCosts);
sltAgreementInfo.setNode(leaseListOneMonth);
}
leaseList.addAll(monthList);
}
}
return leaseList;
}
private List<SltAgreementInfo> getLeaseListOneMonth(AgreementInfo list, SltAgreementInfo sltAgreementInfo, Integer pmcId) {
ArrayList<String> idList = new ArrayList<>();
String[] ids = list.getIds().split(",");
for (String id : ids) {
idList.add(id);
}
List<SltAgreementInfo> leaseList = sltAgreementInfoMapper.getLeaseListOneMonth(list, idList);
BigDecimal leaseCostOne = BigDecimal.ZERO;
for (SltAgreementInfo bean : leaseList) {
if (bean.getLeasePrice() == null) {
bean.setLeasePrice("0");
}
if (bean.getNum() == null) {
bean.setNum("0");
}
if (bean.getLeaseDays() == null) {
bean.setLeaseDays("0");
}
if (bean.getTrimDay() == null) {
bean.setTrimDay(0);
}
BigDecimal leasePrice = new BigDecimal(bean.getLeasePrice());
BigDecimal num = new BigDecimal(bean.getNum());
BigDecimal leaseDays = new BigDecimal(bean.getLeaseDays());
// 实际结算天数领料天数 + 调整天数(可以为负整数)
BigDecimal realDays = leaseDays.add(new BigDecimal(bean.getTrimDay()));
// 实际结算金额
BigDecimal realCosts = leasePrice.multiply(num).multiply(realDays);
// 应结算金额
BigDecimal costs = leasePrice.multiply(num).multiply(leaseDays);
bean.setCosts(String.valueOf(costs));
bean.setRealDays(realDays);
bean.setRealCosts(String.valueOf(realCosts));
leaseCostOne = leaseCostOne.add(costs);
bean.setMonth(sltAgreementInfo.getMonth());
ProjectMonthDetail projectMonthDetail = new ProjectMonthDetail();
projectMonthDetail.setTypeId(Integer.valueOf(bean.getTypeId()));
if (bean.getMaId() != null){
projectMonthDetail.setMaId(Integer.valueOf(bean.getMaId()));
}
projectMonthDetail.setUnit(bean.getNuitName());
projectMonthDetail.setStartTime(bean.getStartTime());
projectMonthDetail.setEndTime(bean.getEndTime());
projectMonthDetail.setSltDays(bean.getLeaseDays());
projectMonthDetail.setNum(bean.getNum());
projectMonthDetail.setLeasePrice(bean.getLeasePrice());
projectMonthDetail.setSltCosts(bean.getCosts());
projectMonthDetail.setMonthTemporarilyCosts(bean.getRealCosts());
projectMonthDetail.setProMonthCostId(pmcId);
calMonthlyMapper.insertProjectMonthDetail(projectMonthDetail);
}
sltAgreementInfo.setCosts(String.valueOf(leaseCostOne));
return leaseList;
}
} }

View File

@ -64,4 +64,6 @@ public interface AgreementInfoService {
* @return * @return
*/ */
List<AgreementInfo> exportList(AgreementInfo agreementInfo); List<AgreementInfo> exportList(AgreementInfo agreementInfo);
List<AgreementInfo> getAllAgreementId();
} }

View File

@ -86,6 +86,11 @@ public class AgreementInfoServiceImpl implements AgreementInfoService {
return agreementInfoMapper.getAgreementInfoAll(agreementInfo); return agreementInfoMapper.getAgreementInfoAll(agreementInfo);
} }
@Override
public List<AgreementInfo> getAllAgreementId() {
return agreementInfoMapper.getAllAgreementId();
}
private String purchaseCodeRule() { private String purchaseCodeRule() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

View File

@ -6,12 +6,16 @@ import com.bonus.sgzb.base.api.domain.SltAgreementRelation;
import com.bonus.sgzb.base.api.domain.SltInfoVo; import com.bonus.sgzb.base.api.domain.SltInfoVo;
import com.bonus.sgzb.common.core.exception.ServiceException; import com.bonus.sgzb.common.core.exception.ServiceException;
import com.bonus.sgzb.common.core.utils.DateTimeHelper;
import com.bonus.sgzb.common.core.utils.DateUtils; import com.bonus.sgzb.common.core.utils.DateUtils;
import com.bonus.sgzb.common.core.web.domain.AjaxResult; import com.bonus.sgzb.common.core.web.domain.AjaxResult;
import com.bonus.sgzb.common.security.utils.SecurityUtils; import com.bonus.sgzb.common.security.utils.SecurityUtils;
import com.bonus.sgzb.material.domain.AgreementInfo; import com.bonus.sgzb.material.domain.AgreementInfo;
import com.bonus.sgzb.material.domain.ProjectMonthCosts;
import com.bonus.sgzb.material.domain.ProjectMonthDetail;
import com.bonus.sgzb.material.domain.TmTask; import com.bonus.sgzb.material.domain.TmTask;
import com.bonus.sgzb.material.mapper.CalMonthlyMapper;
import com.bonus.sgzb.material.mapper.SltAgreementInfoMapper; import com.bonus.sgzb.material.mapper.SltAgreementInfoMapper;
import com.bonus.sgzb.material.service.SltAgreementInfoService; import com.bonus.sgzb.material.service.SltAgreementInfoService;
import com.bonus.sgzb.material.vo.GlobalContants; import com.bonus.sgzb.material.vo.GlobalContants;
@ -35,6 +39,9 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService {
@Resource @Resource
private SltAgreementInfoMapper sltAgreementInfoMapper; private SltAgreementInfoMapper sltAgreementInfoMapper;
@Resource
private CalMonthlyMapper calMonthlyMapper;
@Override @Override
public List<AgreementInfo> getSltAgreementInfo(AgreementInfo bean) { public List<AgreementInfo> getSltAgreementInfo(AgreementInfo bean) {
return sltAgreementInfoMapper.getSltAgreementInfo(bean); return sltAgreementInfoMapper.getSltAgreementInfo(bean);
@ -397,10 +404,34 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService {
} }
@Override @Override
public List<SltAgreementInfo> getSltInfoMonth(List<AgreementInfo> list) { public List getSltInfoMonth(List<AgreementInfo> list) {
List<SltAgreementInfo> leaseListMonth = new ArrayList<>();
List<ProjectMonthCosts> monthCostsList = new ArrayList<>();
Integer num = 0;
//租赁费用列表 //租赁费用列表
List<SltAgreementInfo> leaseListMonth = getLeaseListMonth(list); for (AgreementInfo agreementInfo : list) {
// 如果不选择具体日期或者选择了最新月份则需要查数据
if (agreementInfo.getStartTime() == null || DateTimeHelper.getNowMonth().equals(DateTimeHelper.getNowMonth(DateTimeHelper.parse(agreementInfo.getEndTime(), "yyyy-MM")))) {
List<SltAgreementInfo> listMonth = getLeaseListMonth(agreementInfo, num);
leaseListMonth.addAll(listMonth);
return leaseListMonth; return leaseListMonth;
} else {
// 查定时任务记录的数据
List<ProjectMonthCosts> listMonth = getLeaseJobListMonth(agreementInfo);
monthCostsList.addAll(listMonth);
return monthCostsList;
}
}
return new ArrayList<>();
}
private List<ProjectMonthCosts> getLeaseJobListMonth(AgreementInfo agreementInfo) {
List<ProjectMonthCosts> monthCosts = calMonthlyMapper.getMonthCosts(agreementInfo);
for (ProjectMonthCosts monthCost : monthCosts) {
List<ProjectMonthDetail> monthDetails = calMonthlyMapper.getMonthDetails(monthCost);
monthCost.setNode(monthDetails);
}
return monthCosts;
} }
@Override @Override
@ -408,10 +439,9 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService {
return sltAgreementInfoMapper.updateOutSourceCosts(sltAgreementInfo); return sltAgreementInfoMapper.updateOutSourceCosts(sltAgreementInfo);
} }
private List<SltAgreementInfo> getLeaseListMonth(List<AgreementInfo> list) { private List<SltAgreementInfo> getLeaseListMonth(AgreementInfo bean, Integer num) {
List<SltAgreementInfo> leaseList = new ArrayList<>(); List<SltAgreementInfo> leaseList = new ArrayList<>();
int num = 0; // for (AgreementInfo bean : list) {
for (AgreementInfo bean : list) {
if (StringUtils.isNotBlank(bean.getStartTime()) && StringUtils.isNotBlank(bean.getEndTime())) { if (StringUtils.isNotBlank(bean.getStartTime()) && StringUtils.isNotBlank(bean.getEndTime())) {
List<SltAgreementInfo> monthList = sltAgreementInfoMapper.getLeaseListMonthNotNull(bean); List<SltAgreementInfo> monthList = sltAgreementInfoMapper.getLeaseListMonthNotNull(bean);
for (SltAgreementInfo sltAgreementInfo : monthList) { for (SltAgreementInfo sltAgreementInfo : monthList) {
@ -442,7 +472,7 @@ public class SltAgreementInfoServiceImpl implements SltAgreementInfoService {
} }
leaseList.addAll(oneOfList); leaseList.addAll(oneOfList);
} }
} // }
return leaseList; return leaseList;
} }

View File

@ -164,5 +164,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE WHERE
tta.agreement_id=#{agreementId} tta.agreement_id=#{agreementId}
</select> </select>
<select id="getAllAgreementId" resultType="com.bonus.sgzb.material.domain.AgreementInfo">
SELECT
agreement_id as agreementId
FROM
bm_agreement_info
WHERE
status = '1'
</select>
</mapper> </mapper>

View File

@ -5,13 +5,70 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<mapper namespace="com.bonus.sgzb.material.mapper.CalMonthlyMapper"> <mapper namespace="com.bonus.sgzb.material.mapper.CalMonthlyMapper">
<insert id="insertCalcRecord" parameterType="com.bonus.sgzb.material.domain.CalMonthlyBean" useGeneratedKeys="true" keyProperty="id"> <insert id="insertCalcRecord" parameterType="com.bonus.sgzb.material.domain.CalMonthlyBean" useGeneratedKeys="true" keyProperty="id">
INSERT INTO calc_project_month (MONTH) VALUES (#{month}) INSERT INTO slt_project_month (month,create_time) VALUES (#{month},now())
</insert> </insert>
<insert id="insertProMonCosts" useGeneratedKeys="true" keyProperty="id">
insert into project_month_costs(agreement_id,slt_month_id,unit_id,project_id,month,cost_bearing_party)
values
(#{agreementId},#{sltMonthId},#{unitId},#{projectId},#{month},#{costBearingParty})
</insert>
<insert id="insertProjectMonthDetail">
insert into project_month_detail (type_id,ma_id,unit,start_time,end_time,slt_days,slt_costs,month_temporarily_costs,pro_month_cost_id,num,lease_price)
values
(#{typeId},#{maId},#{unit},#{startTime},#{endTime},#{sltDays},#{sltCosts},#{monthTemporarilyCosts},#{proMonthCostId},#{num},#{leasePrice})
</insert>
<update id="updateProMonCosts">
update project_month_costs set costs = #{costs} where id = #{id}
</update>
<select id="getCalcRecords" parameterType="com.bonus.sgzb.material.domain.CalMonthlyBean" resultType="com.bonus.sgzb.material.domain.CalMonthlyBean"> <select id="getCalcRecords" parameterType="com.bonus.sgzb.material.domain.CalMonthlyBean" resultType="com.bonus.sgzb.material.domain.CalMonthlyBean">
select id,month from calc_project_month select id,month from calc_project_month
where month = #{month} where month = #{month}
</select> </select>
<select id="getMonthCosts" resultType="com.bonus.sgzb.material.domain.ProjectMonthCosts">
SELECT
pmc.id as id,
bui.unit_name AS unitName,
bp.lot_name AS projectName,
spm.month as month,
pmc.cost_bearing_party as costBearingParty,
pmc.costs as costs
FROM
project_month_costs pmc
LEFT JOIN slt_project_month spm ON pmc.slt_month_id = spm.id
LEFT JOIN bm_agreement_info bai ON pmc.agreement_id = bai.agreement_id
LEFT JOIN bm_project_lot bp ON bp.lot_id = bai.project_id
LEFT JOIN bm_unit_info bui ON bui.unit_id = bai.unit_id
WHERE
spm.month = DATE_FORMAT(#{endTime}, '%Y-%m')
</select>
<select id="getMonthDetails" resultType="com.bonus.sgzb.material.domain.ProjectMonthDetail">
SELECT
mt1.type_name AS typeName,
mt.type_name AS modelName,
bui.unit_name AS unitName,
bp.lot_name AS projectName,
mt.unit_name AS nuitName,
pmd.num as num,
pmc.cost_bearing_party as costBearingParty,
pmc.`month` as month,
pmd.lease_price as leasePrice,
DATE_FORMAT( pmd.start_time, '%Y-%m-%d' ) as startTime,
DATE_FORMAT( pmd.end_time, '%Y-%m-%d' ) as endTime,
pmd.slt_days as leaseDays,
pmd.slt_costs as costs,
pmd.month_temporarily_costs as realCosts
FROM
project_month_detail pmd
LEFT JOIN project_month_costs pmc ON pmd.pro_month_cost_id = pmc.id
LEFT JOIN bm_unit_info bui ON bui.unit_id = pmc.unit_id
LEFT JOIN bm_project_lot bp ON bp.lot_id = pmc.project_id
LEFT JOIN ma_type mt ON pmd.type_id = mt.type_id
LEFT JOIN ma_type mt1 ON mt.parent_id = mt1.type_id
LEFT JOIN ma_machine mm ON mm.ma_id = pmd.ma_id
WHERE
pmc.id = #{id}
</select>
<delete id="deleteCalcRecord" parameterType="com.bonus.sgzb.material.domain.CalMonthlyBean"> <delete id="deleteCalcRecord" parameterType="com.bonus.sgzb.material.domain.CalMonthlyBean">
delete from calc_project_month delete from calc_project_month

View File

@ -401,7 +401,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE WHERE
sai.agreement_id = #{bean.agreementId} sai.agreement_id = #{bean.agreementId}
AND sai.lease_type = 0 AND sai.lease_type = 0
<if test="bean.costBearingParty != null and bean.costBearingParty != ''">
AND lai.cost_bearing_party = #{bean.costBearingParty} AND lai.cost_bearing_party = #{bean.costBearingParty}
</if>
AND sai.id IN AND sai.id IN
<foreach collection="ids" item="id" open="(" separator="," close=")"> <foreach collection="ids" item="id" open="(" separator="," close=")">
#{id} #{id}
@ -447,26 +449,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="getLeaseListMonth" resultType="com.bonus.sgzb.base.api.domain.SltAgreementInfo"> <select id="getLeaseListMonth" resultType="com.bonus.sgzb.base.api.domain.SltAgreementInfo">
SELECT SELECT
DATE_FORMAT( DATE_ADD( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m' ) month, DATE_FORMAT( DATE_ADD( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m' ) MONTH,
(
CASE
(CASE
WHEN DATE_FORMAT( DATE_SUB( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-21' ) >= DATE( sai.start_time ) THEN WHEN DATE_FORMAT( DATE_SUB( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-21' ) >= DATE( sai.start_time ) THEN
DATE_FORMAT( DATE_SUB( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-21' ) DATE_FORMAT( DATE_SUB( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-21' ) ELSE DATE( sai.start_time )
WHEN DATE_FORMAT( DATE_SUB( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-21' ) &lt; DATE( sai.start_time ) THEN END) AS beginTime,
DATE( sai.start_time )
END
) AS beginTime,
(
CASE
(CASE
WHEN DATE_FORMAT( DATE_ADD( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-20' ) >= DATE( COALESCE ( sai.end_time, CURDATE() ) ) THEN WHEN DATE_FORMAT( DATE_ADD( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-20' ) >= DATE( COALESCE ( sai.end_time, CURDATE() ) ) THEN
DATE( COALESCE ( sai.end_time, CURDATE())) DATE(
WHEN DATE_FORMAT( DATE_ADD( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-20' ) &lt; DATE( COALESCE ( sai.end_time, CURDATE() ) ) THEN COALESCE (
DATE_FORMAT( DATE_ADD( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-20') sai.end_time,
END CURDATE())) ELSE DATE_FORMAT( DATE_ADD( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-20' )
) AS offTime, END) AS offTime,
GROUP_CONCAT(sai.id) AS ids, GROUP_CONCAT( sai.id ) AS ids,
sai.agreement_id AS agreementId, sai.agreement_id AS agreementId,
bui.unit_name AS unitName, bui.unit_name AS unitName,
bp.lot_name AS projectName, bp.lot_name AS projectName,
@ -484,7 +481,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE WHERE
sai.agreement_id = #{agreementId} sai.agreement_id = #{agreementId}
AND sai.lease_type = 0 AND sai.lease_type = 0
AND lai.cost_bearing_party = #{costBearingParty}
AND (-- 当前月21号到月末 AND (-- 当前月21号到月末
( DAYOFMONTH( sai.start_time ) >= 21 AND DAYOFMONTH( sai.start_time ) &lt;= 31 ) ( DAYOFMONTH( sai.start_time ) >= 21 AND DAYOFMONTH( sai.start_time ) &lt;= 31 )
OR -- 次月1号到20号 OR -- 次月1号到20号
@ -497,10 +493,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
CURDATE()))) CURDATE())))
) )
GROUP BY GROUP BY
DATE_FORMAT( DATE_ADD( DATE( sai.start_time ), INTERVAL 1 - DAYOFMONTH( sai.start_time ) DAY ), '%Y-%m' ), (
CASE
WHEN DATE_FORMAT( DATE_SUB( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-21' ) >= DATE( sai.start_time ) THEN
DATE_FORMAT( DATE_SUB( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-21' ) ELSE DATE( sai.start_time )
END
),
(
CASE
WHEN DATE_FORMAT( DATE_ADD( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-20' ) >= DATE( COALESCE ( sai.end_time, CURDATE() ) ) THEN
DATE(
COALESCE (
sai.end_time,
CURDATE())) ELSE DATE_FORMAT( DATE_ADD( sai.start_time, INTERVAL 1 MONTH ), '%Y-%m-20' )
END
),
lai.cost_bearing_party lai.cost_bearing_party
ORDER BY ORDER BY
DATE_FORMAT( DATE_ADD( DATE( sai.start_time ), INTERVAL 1 - DAYOFMONTH( sai.start_time ) DAY ), '%Y-%m' ) DATE_FORMAT(
DATE_ADD( DATE( sai.start_time ), INTERVAL 1 - DAYOFMONTH( sai.start_time ) DAY ),
'%Y-%m'
)
</select> </select>
<select id="getLeaseListMonthNotNull" resultType="com.bonus.sgzb.base.api.domain.SltAgreementInfo"> <select id="getLeaseListMonthNotNull" resultType="com.bonus.sgzb.base.api.domain.SltAgreementInfo">
SELECT SELECT
@ -518,7 +533,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP_CONCAT(sai.id) AS ids, GROUP_CONCAT(sai.id) AS ids,
sai.agreement_id AS agreementId, sai.agreement_id AS agreementId,
bui.unit_name AS unitName, bui.unit_name AS unitName,
bui.unit_id AS unitId,
bp.lot_name AS projectName, bp.lot_name AS projectName,
bp.lot_id AS lotId,
DATE( sai.start_time ) AS startTime, DATE( sai.start_time ) AS startTime,
lai.cost_bearing_party AS costBearingParty, lai.cost_bearing_party AS costBearingParty,
DATE( COALESCE ( sai.end_time, CURDATE() ) ) AS endTime DATE( COALESCE ( sai.end_time, CURDATE() ) ) AS endTime
@ -531,16 +548,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN ma_type mt ON sai.type_id = mt.type_id LEFT JOIN ma_type mt ON sai.type_id = mt.type_id
LEFT JOIN ma_type mt1 ON mt.parent_id = mt1.type_id LEFT JOIN ma_type mt1 ON mt.parent_id = mt1.type_id
WHERE WHERE
sai.agreement_id = 49 sai.agreement_id = #{agreementId}
AND sai.lease_type = 0 AND sai.lease_type = 0
<if test="costBearingParty != null and costBearingParty != ''">
AND lai.cost_bearing_party = #{costBearingParty} AND lai.cost_bearing_party = #{costBearingParty}
AND sai.start_time &lt;= #{endTime} AND sai.end_time >= #{startTime} </if>
AND sai.start_time &lt;= #{endTime} AND sai.end_time >= #{startTime} AND sai.start_time &lt;= #{endTime}
AND (sai.end_time >= #{startTime} OR sai.end_time IS NULL)
GROUP BY GROUP BY
DATE_FORMAT( DATE_ADD( DATE( sai.start_time ), INTERVAL 1 - DAYOFMONTH( sai.start_time ) DAY ), '%Y-%m' ), ( CASE WHEN #{startTime} >= DATE( sai.start_time ) THEN #{startTime} ELSE DATE( sai.start_time ) END ),
CASE
WHEN #{endTime} >= DATE( COALESCE ( sai.end_time, CURDATE() ) ) THEN
DATE(
COALESCE (
sai.end_time,
CURDATE())) ELSE #{endTime}
END,
lai.cost_bearing_party lai.cost_bearing_party
ORDER BY ORDER BY
DATE_FORMAT( DATE_ADD( DATE( sai.start_time ), INTERVAL 1 - DAYOFMONTH( sai.start_time ) DAY ), '%Y-%m' ); DATE_FORMAT( DATE_ADD( DATE( sai.start_time ), INTERVAL 1 - DAYOFMONTH( sai.start_time ) DAY ), '%Y-%m' )
</select> </select>
<select id="getPreScrapDetailsList" resultType="com.bonus.sgzb.base.api.domain.SltAgreementInfo"> <select id="getPreScrapDetailsList" resultType="com.bonus.sgzb.base.api.domain.SltAgreementInfo">
select tta.agreement_id as agreementId, select tta.agreement_id as agreementId,

View File

@ -14,4 +14,7 @@ public class AgreementVo {
/** 协议编号*/ /** 协议编号*/
private String agreementCode; private String agreementCode;
/** 是否结算*/
private String isSlt;
} }

View File

@ -195,7 +195,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!--往来单位id和标段工程id获取协议信息--> <!--往来单位id和标段工程id获取协议信息-->
<select id="getAgreementInfoById" resultType="com.bonus.sgzb.system.domain.AgreementVo"> <select id="getAgreementInfoById" resultType="com.bonus.sgzb.system.domain.AgreementVo">
SELECT agreement_id AS agreementId, SELECT agreement_id AS agreementId,
agreement_code AS agreementCode agreement_code AS agreementCode,
is_slt AS isSlt
FROM bm_agreement_info FROM bm_agreement_info
WHERE unit_id = #{unitId} AND project_id = #{projectId} AND status = '1' WHERE unit_id = #{unitId} AND project_id = #{projectId} AND status = '1'
</select> </select>