bug(办公每月作价):修复导入人工修正办公作价

This commit is contained in:
purple 2020-06-29 19:03:19 +08:00
parent a3db8d8d01
commit 3691553aeb
5 changed files with 326 additions and 28 deletions

View File

@ -115,7 +115,7 @@ public class UltimateOfficeBasePriceController extends BaseController {
public AjaxResult importData(@PathVariable("yearMonth") Integer yearMonth, MultipartFile file) throws Exception {
// 修改计价
ExcelUtil<UltimateOfficeBasePrice> util = new ExcelUtil<>(UltimateOfficeBasePrice.class);
List<UltimateOfficeBasePrice> officeBasePriceUltimates = util.importExcel("主表",file.getInputStream());
List<UltimateOfficeBasePrice> officeBasePriceUltimates = util.importExcel(file.getInputStream());
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
String operName = loginUser.getUsername();
String message = officeBasePriceUltimateService.batchImport(yearMonth, officeBasePriceUltimates, operName);

View File

@ -82,7 +82,7 @@ public class UltimateOfficeBasePrice extends BaseEntity {
private Boolean status;
@Excel(name = "是否标准楼栋")
private Boolean isStandardBuilding;
@Excel(name = "更改价格说明")
// @Excel(name = "更改价格说明")
private String adjustPriceComment;
public Integer getLastYearMonth() {

View File

@ -1,9 +1,12 @@
package com.ruoyi.project.data.price.service.impl;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.ruoyi.common.exception.CustomException;
import com.ruoyi.common.utils.LoadUtil;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.config.UVConfig;
import com.ruoyi.project.common.UVResponse;
@ -16,6 +19,7 @@ import com.ruoyi.project.system.service.impl.SysUserServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@ -26,6 +30,7 @@ import org.springframework.web.client.RestTemplate;
* @date 2020-05-20
*/
@Service
@DS("compute")
public class UltimateOfficeBasePriceServiceImpl implements IUltimateOfficeBasePriceService {
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
@ -34,7 +39,8 @@ public class UltimateOfficeBasePriceServiceImpl implements IUltimateOfficeBasePr
private UltimateOfficeBasePriceMapper officeBasePriceUltimateMapper;
@Autowired
private UVConfig uvConfig;
@Autowired
private JdbcTemplate jdbcTemplate;
private static Integer getLastYearMonth(Integer yearMonth) {
Calendar calendar = Calendar.getInstance();
@ -84,10 +90,31 @@ public class UltimateOfficeBasePriceServiceImpl implements IUltimateOfficeBasePr
officeBasePriceUltimateMapper.insertArtificialOfficeBasePrice(inputModel);
});
RestTemplate restTemplate = new RestTemplate();
String url = String.format(uvConfig.getAitificialOfficeBasePriceUrl(), yearMonth, lastYearMonth);
UVResponse<Integer> affectCount = restTemplate.getForObject(url, UVResponse.class);
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,修改数据:" + affectCount.getData() + "");
// RestTemplate restTemplate = new RestTemplate();
// String url = String.format(uvConfig.getAitificialOfficeBasePriceUrl(), yearMonth, lastYearMonth);
// UVResponse<Integer> affectCount = restTemplate.getForObject(url, UVResponse.class);
String rawSql = LoadUtil.loadContent("sql-template/update_office_price.sql");
Calendar calendar = Calendar.getInstance();
int year = yearMonth / 100;
int month = yearMonth % 100;
calendar.set(year, month, 1);
Date firstOfMonth = calendar.getTime();
calendar.add(Calendar.MONTH, -1);
Date lastMonth = calendar.getTime();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String sql = rawSql.replace("#yearMonth#", yearMonth.toString())
.replace("#lastYearMonth#", lastYearMonth.toString())
.replace("#today#", simpleDateFormat.format(firstOfMonth))
.replace("#lastMonth#", simpleDateFormat.format(lastMonth));
jdbcTemplate.update(sql);
// String rawSql =
// String sql = rawSql.replace("#yearMonth#", yearMonth.toString());
// jdbcTemplate.execute(sql);
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + "");
return successMsg.toString();
}

View File

@ -78,37 +78,44 @@
<select id="getCount" parameterType="com.ruoyi.project.data.price.domain.UltimateOfficeBasePrice" resultType="int">
select count(1) FROM ODS_OFFICE_BUILDING_PRICE_INFO_${yearMonth} a
<if test="communityId != null">
AND a.PROJECTID_P = #{communityId}
</if>
<if test="buildingId != null">
AND a.BUILDINGID_P = #{buildingId}
</if>
<if test="status != null">
AND a.STATUS = #{status}
</if>
<where>
<if test="communityId != null">
AND a.PROJECTID_P = #{communityId}
</if>
<if test="buildingId != null">
AND a.BUILDINGID_P = #{buildingId}
</if>
<if test="status != null">
AND a.STATUS = #{status}
</if>
</where>
</select>
<select id="getList" parameterType="com.ruoyi.project.data.price.domain.UltimateOfficeBasePrice"
resultMap="OfficeBasePriceUltimateResult">
<include refid="getById"/>
<if test="communityId != null">
AND a.PROJECTID_P = #{communityId}
</if>
<if test="buildingId != null">
AND a.BUILDINGID_P = #{buildingId}
</if>
<if test="status != null">
AND a.STATUS = #{status}
</if>
<where>
<if test="communityId != null">
AND a.PROJECTID_P = #{communityId}
</if>
<if test="buildingId != null">
AND a.BUILDINGID_P = #{buildingId}
</if>
<if test="status != null">
AND a.STATUS = #{status}
</if>
</where>
order by a.id desc OFFSET #{pageIndex} rows fetch next #{pageSize} rows only;
</select>
<select id="getById" resultMap="OfficeBasePriceUltimateResult">
<include refid="getById"/>
<if test="id != null">
AND a.id=#{id}
</if>
<where>
<if test="id != null">
AND a.id=#{id}
</if>
</where>
</select>
<!-- 更新基价 -->

View File

@ -0,0 +1,264 @@
select a.BuildingID as BuildingID_P
, a.ProjectID as ProjectID_P
, a.MainPrice
, a.MainPriceRent
, a.MainPrice_1
, a.MainPriceRent_1
, getdate() as ModifyDate
, case
when b.BuildingID is not null
and cast(a.MainPrice as decimal(18, 1)) <> cast(isnull(b.MainPrice, 0) as decimal(18, 1)) then
1
else
0
end as MainPriceChg
, case
when b.BuildingID is not null
and cast(a.MainPriceRent as decimal(18, 1)) <> cast(isnull(b.MainPriceRent, 0) as decimal(18, 1)) then
1
else
0
end as MainPriceRentChg
, case
when c.BuildingID is not null
and cast(a.MainPrice_1 as decimal(18, 1)) <> cast(isnull(c.MainPrice, 0) as decimal(18, 1)) then
1
else
0
end as MainPrice_1Chg
, case
when c.BuildingID is not null
and cast(a.MainPriceRent_1 as decimal(18, 1)) <> cast(isnull(c.MainPriceRent, 0) as decimal(18, 1)) then
1
else
0
end as MainPriceRent_1Chg
into #InfoChg
from dbo.DWA_PROJECTBASEPRICE_OFFICE_MANU_#yearMonth# a
left join ODS_OFFICE_BUILDING_PRICE_INFO_#yearMonth# b
on a.BuildingID = b.BuildingID_P
and b.Status = 1
and
(
cast(a.MainPrice as decimal(18, 1)) <> cast(isnull(b.MainPrice, 0) as decimal(18, 1))
or cast(a.MainPriceRent as decimal(18, 1)) <> cast(isnull(b.MainPriceRent, 0) as decimal(18, 1))
)
left join ODS_OFFICE_BUILDING_PRICE_INFO_#lastYearMonth# c
on a.BuildingID = c.BuildingID_P
and c.Status = 1
and
(
cast(a.MainPrice_1 as decimal(18, 1)) <> cast(isnull(c.MainPrice, 0) as decimal(18, 1))
or cast(a.MainPriceRent_1 as decimal(18, 1)) <> cast(isnull(c.MainPriceRent, 0) as decimal(18, 1))
)
where b.BuildingID_P is not null
or c.BuildingID_P is not null;
select a.UnifiedID
, a.BuildingID_P
, a.ProjectID_P
, b.MainPrice_1
, b.MainPriceRent_1
, a.MainPricePst
, a.MainPriceRentPst
, a.MainPriceType
, a.MainPriceRentType
, b.ModifyDate
, 1 as Status
, a.BuildingStd
, case
when MainPrice_1Chg = 0 then
''
else
'MainPrice_1Chg|'
end + case
when MainPriceRent_1Chg = 0 then
''
else
'MainPriceRent_1Chg|'
end as AdjEvd
into #InfoChgLst
from ODS_OFFICE_BUILDING_PRICE_INFO_#lastYearMonth# a
inner join #InfoChg b
on a.BuildingID_P = b.BuildingID_P
where (
b.MainPrice_1Chg = 1
or b.MainPriceRent_1Chg = 1
)
and a.Status = 1;
update a
set a.Status = 0
from ODS_OFFICE_BUILDING_PRICE_INFO_#lastYearMonth# a
left join #InfoChgLst b
on a.BuildingID_P = b.BuildingID_P
where b.BuildingID_P is not null
and a.Status = 1;
insert into dbo.ODS_OFFICE_BUILDING_PRICE_INFO_#lastYearMonth#
(
ID
, UnifiedID
, BuildingID_P
, ProjectID_P
, MainPrice
, MainPriceRent
, MainPricePst
, MainPriceRentPst
, MainPriceType
, MainPriceRentType
, ModifyDate
, Status
, BuildingStd
, AdjEvd
)
select newid()
, UnifiedID
, BuildingID_P
, ProjectID_P
, MainPrice_1
, MainPriceRent_1
, MainPricePst
, MainPriceRentPst
, MainPriceType
, MainPriceRentType
, getdate()
, Status
, BuildingStd
, AdjEvd
from #InfoChgLst;
select a.UnifiedID
, a.BuildingID_P
, a.ProjectID_P
, b.MainPrice
, b.MainPriceRent
, b.MainPrice * 1.0 / c.MainPrice as MainPricePst
, b.MainPriceRent * 1.0 / c.MainPriceRent as MainPriceRentPst
, a.MainPriceType
, a.MainPriceRentType
, b.ModifyDate
, 1 as Status
, a.BuildingStd
, case
when MainPriceChg = 0 then
''
else
'MainPriceChg|'
end + case
when MainPriceRentChg = 0 then
''
else
'MainPriceRentChg|'
end as AdjEvd
into #InfoChgCurr
from ODS_OFFICE_BUILDING_PRICE_INFO_#yearMonth# a
inner join #InfoChg b
on a.BuildingID_P = b.BuildingID_P
left join ODS_OFFICE_BUILDING_PRICE_INFO_#lastYearMonth# c
on a.BuildingID = c.BuildingID_P
where (
b.MainPriceChg = 1
or b.MainPriceRentChg = 1
)
and a.Status = 1
and c.Status = 1;
update a
set a.Status = 0
from ODS_OFFICE_BUILDING_PRICE_INFO_#yearMonth# a
left join #InfoChgCurr b
on a.BuildingID_P = b.BuildingID_P
where b.BuildingID_P is not null
and a.Status = 1;
insert into dbo.ODS_OFFICE_BUILDING_PRICE_INFO_#yearMonth#
(
ID
, UnifiedID
, BuildingID_P
, ProjectID_P
, MainPrice
, MainPriceRent
, MainPricePst
, MainPriceRentPst
, MainPriceType
, MainPriceRentType
, ModifyDate
, Status
, BuildingStd
, AdjEvd
)
select newid()
, UnifiedID
, BuildingID_P
, ProjectID_P
, MainPrice
, MainPriceRent
, MainPricePst
, MainPriceRentPst
, MainPriceType
, MainPriceRentType
, getdate()
, Status
, BuildingStd
, AdjEvd
from #InfoChgCurr;
drop table #InfoChg;
drop table #InfoChgLst;
drop table #InfoChgCurr;
-- 更新上月基价;
update a
set a.ITEM_MAINAREAPRICE = b.MainPrice_1
from obpm_LianCheng_Data.dbo.TLK_基价信息 a
join dbo.ODS_OFFICE_BUILDING_PRICE_INFO_#yearMonth# b
on a.ITEM_AIRAID = b.ProjectID_P
where a.ITEM_PROJECTTYPE = 2
and a.ITEM_PRICETYPE = 1
and a.ITEM_VALUEPOINT = '#lastMonth#'
and b.Status = 1
and b.BuildingStd = 1;
update a
set a.ITEM_MAINAREAPRICE = b.MainPriceRent_1
from obpm_LianCheng_Data.dbo.TLK_基价信息 a
join dbo.ODS_OFFICE_BUILDING_PRICE_INFO_#yearMonth# b
on a.ITEM_AIRAID = b.ProjectID_P
where a.ITEM_PROJECTTYPE = 2
and a.ITEM_PRICETYPE = 2
and a.ITEM_VALUEPOINT = '#lastMonth#'
and b.Status = 1
and b.BuildingStd = 1
-- 插入本月新增信息;
insert into obpm_LianCheng_Data.dbo.TLK_基价信息
(LASTMODIFIED,FORMNAME,AUTHOR,AUTHOR_DEPT_INDEX,CREATED,FORMID,ISTMP,VERSIONS,APPLICATIONID,STATEINT,LASTMODIFIER,DOMAINID,AUDITORLIST,COAUDITORLIST,ID,ITEM_PriceID,ITEM_AIRAID,ITEM_PROJECTTYPE,ITEM_PRICETYPE,ITEM_STANDARDPRICE,ITEM_MAINAREAPRICE,ITEM_VALUEPOINT,ITEM_PRICEEXPLAIN,ITEM_UPDATEPERSON,ITEM_UPDATEDATE,ITEM_PRICECHG)
select getdate(),'物业信息管理/基价信息','amQRUkvYQAsAec1JGLp','Os6qe4Pmq5viTO8lTnW',getdate(),'ybte0OakLV17UzAyoVU',0,1,'Ts7TykYmuEzzZgWhXHj',0,'amQRUkvYQAsAec1JGLp','BclzHtmfLQoAA5ICTb5','{}','{}',newid(),newid(),ProjectID_P,2,1,null,MainPrice,'#today#',AdjEvd,'李贺',getdate(),MainPricePst
from dbo.ODS_OFFICE_BUILDING_PRICE_INFO_#yearMonth# a
join obpm_LianCheng_Data.dbo.TLK_基价信息 b
on a.ProjectID_P=b.ITEM_AIRAID and b.ITEM_VALUEPOINT='#today#' and b.ITEM_PRICETYPE=1
where Status=1 and BuildingStd=1 and b.ID is null;
insert into obpm_LianCheng_Data.dbo.TLK_基价信息
(LASTMODIFIED,FORMNAME,AUTHOR,AUTHOR_DEPT_INDEX,CREATED,FORMID,ISTMP,VERSIONS,APPLICATIONID,STATEINT,LASTMODIFIER,DOMAINID,AUDITORLIST,COAUDITORLIST,ID,ITEM_PriceID,ITEM_AIRAID,ITEM_PROJECTTYPE,ITEM_PRICETYPE,ITEM_STANDARDPRICE,ITEM_MAINAREAPRICE,ITEM_VALUEPOINT,ITEM_PRICEEXPLAIN,ITEM_UPDATEPERSON,ITEM_UPDATEDATE,ITEM_PRICECHG)
select getdate(),'物业信息管理/基价信息','amQRUkvYQAsAec1JGLp','Os6qe4Pmq5viTO8lTnW',getdate(),'ybte0OakLV17UzAyoVU',0,1,'Ts7TykYmuEzzZgWhXHj',0,'amQRUkvYQAsAec1JGLp','BclzHtmfLQoAA5ICTb5','{}','{}',newid(),newid(),ProjectID_P,2,2,null,MainPriceRent,'#today#',AdjEvd,'李贺',getdate(),MainPriceRentPst
from dbo.ODS_OFFICE_BUILDING_PRICE_INFO_#yearMonth# a
join obpm_LianCheng_Data.dbo.TLK_基价信息 b
on a.ProjectID_P=b.ITEM_AIRAID and b.ITEM_VALUEPOINT='#today#' and b.ITEM_PRICETYPE=2
where Status=1 and BuildingStd=1 and b.ID is null;
-- 插入t_document
insert into obpm_LianCheng_Data.dbo.T_DOCUMENT
(ID,LASTMODIFIED,FORMNAME,AUTHOR,AUTHOR_DEPT_INDEX,CREATED,FORMID,ISTMP,VERSIONS,APPLICATIONID,STATEINT,LASTMODIFIER,DOMAINID,AUDITORLIST,COAUDITORLIST,MAPPINGID)
SELECT a.ID,a.LASTMODIFIED,a.FORMNAME,a.AUTHOR,a.AUTHOR_DEPT_INDEX,a.CREATED,a.FORMID,a.ISTMP,a.VERSIONS,a.APPLICATIONID,a.STATEINT,a.LASTMODIFIER,a.DOMAINID,a.AUDITORLIST,a.COAUDITORLIST,a.ID
from obpm_LianCheng_Data.dbo.TLK_基价信息 a
left join obpm_LianCheng_Data.dbo.T_DOCUMENT b
on a.ID = b.ID
where a.ITEM_VALUEPOINT='#today#' and a.ITEM_PROJECTTYPE=2 and b.id is null;
-- 计算之前,更新上个月的价格;