1. 办公基价导入修改
This commit is contained in:
parent
23db85a2c1
commit
555c840303
@ -2,7 +2,11 @@
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="100px" :rules="rules">
|
||||
<el-form-item label="年月" prop="yearMonth">
|
||||
<el-select v-model="queryParams.yearMonth" placeholder="请选择年月">
|
||||
<el-select
|
||||
v-model="queryParams.yearMonth"
|
||||
placeholder="请选择年月"
|
||||
@change="yearMonthChange(queryParams.yearMonth)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in yearMonthList"
|
||||
:value="item.value"
|
||||
@ -300,6 +304,7 @@
|
||||
<em>点击上传</em>
|
||||
</div>
|
||||
<div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
|
||||
<div class="el-upload__tip" style="color:red" slot="tip">基价年月:{{ queryParams.yearMonth }}</div>
|
||||
</el-upload>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitFileForm">确 定</el-button>
|
||||
@ -429,6 +434,10 @@ export default {
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
yearMonthChange: function(yearMonth) {
|
||||
this.upload.url += "/" + yearMonth;
|
||||
console.log(this.upload.url);
|
||||
},
|
||||
regionFormatter: function(row, column, cellValue, index) {
|
||||
// 区域-板块-环线-街道
|
||||
return (
|
||||
|
@ -72,7 +72,7 @@ public class UltimateOfficeBasePriceController extends BaseController {
|
||||
*/
|
||||
@PreAuthorize("@ss.hasPermi('system:user:query')")
|
||||
@GetMapping(value = "/{yearMonth}/{id}")
|
||||
public AjaxResult getInfo(@PathVariable("yearMonth") Integer yearMonth, @PathVariable("id") Integer id) {
|
||||
public AjaxResult getInfo(@PathVariable("yearMonth") Integer yearMonth, @PathVariable("id") String id) {
|
||||
return AjaxResult.success(officeBasePriceUltimateService.getById(yearMonth, id));
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
@ -3,7 +3,7 @@ package com.ruoyi.project.data.price.domain;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class OfficeBasePriceModifyModel {
|
||||
private Integer id;
|
||||
private String id;
|
||||
private Integer yearMonth;
|
||||
private BigDecimal mainPrice;
|
||||
private BigDecimal mainPricePst;
|
||||
@ -11,13 +11,13 @@ public class OfficeBasePriceModifyModel {
|
||||
private BigDecimal mainPriceRentPst;
|
||||
private String comment;
|
||||
|
||||
public OfficeBasePriceModifyModel(Integer id, Integer yearMonth) {
|
||||
public OfficeBasePriceModifyModel(String id, Integer yearMonth) {
|
||||
this.id = id;
|
||||
this.yearMonth = yearMonth;
|
||||
}
|
||||
|
||||
|
||||
public Integer getId() {
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
|
@ -18,15 +18,15 @@ public class UltimateOfficeBasePrice extends BaseEntity {
|
||||
private Integer pageIndex;
|
||||
private Integer pageSize;
|
||||
|
||||
@Excel(name = "ID")
|
||||
private Integer id;
|
||||
@Excel(name = "id")
|
||||
private String id;
|
||||
// @JSONField(serialize = false)
|
||||
private Integer yearMonth;
|
||||
@JSONField(serialize = false)
|
||||
private Integer lastYearMonth;
|
||||
@Excel(name = "楼栋ID")
|
||||
@Excel(name = "楼栋ID-平台")
|
||||
private String buildingId;
|
||||
@Excel(name = "小区ID")
|
||||
@Excel(name = "小区ID-平台")
|
||||
private String communityId;
|
||||
@Excel(name = "项目名称")
|
||||
private String communityName;
|
||||
@ -76,9 +76,9 @@ public class UltimateOfficeBasePrice extends BaseEntity {
|
||||
private BigDecimal yearCoefficient;
|
||||
@Excel(name = "基价楼栋系数")
|
||||
private BigDecimal buildingCoefficient;
|
||||
@Excel(name = "更新日期")
|
||||
// @Excel(name = "更新日期")
|
||||
private Date updateDate;
|
||||
@Excel(name = "状态")
|
||||
// @Excel(name = "状态")
|
||||
private Boolean status;
|
||||
@Excel(name = "是否标准楼栋")
|
||||
private Boolean isStandardBuilding;
|
||||
@ -109,11 +109,11 @@ public class UltimateOfficeBasePrice extends BaseEntity {
|
||||
this.pageSize = pageSize;
|
||||
}
|
||||
|
||||
public Integer getId() {
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Integer id) {
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@ -364,4 +364,5 @@ public class UltimateOfficeBasePrice extends BaseEntity {
|
||||
public void setAdjustPriceComment(String adjustPriceComment) {
|
||||
this.adjustPriceComment = adjustPriceComment;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -22,14 +22,14 @@ public interface UltimateOfficeBasePriceMapper {
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
UltimateOfficeBasePrice getById(Integer yearMonth, Integer lastYearMonth, Integer id);
|
||||
UltimateOfficeBasePrice getById(Integer yearMonth, Integer lastYearMonth, String id);
|
||||
|
||||
/**
|
||||
* @param yearMonth
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
UltimateOfficeBasePrice getByRouteId(Integer yearMonth, Integer id);
|
||||
UltimateOfficeBasePrice getByRouteId(Integer yearMonth, String id);
|
||||
|
||||
/**
|
||||
* @param yearMonth
|
||||
@ -69,4 +69,12 @@ public interface UltimateOfficeBasePriceMapper {
|
||||
*/
|
||||
List<VueSelectModel> getYearMonthList();
|
||||
|
||||
/**
|
||||
* 插入人工修正的办公基价
|
||||
*
|
||||
* @param ultimateOfficeBasePrice
|
||||
* @return
|
||||
*/
|
||||
int insertArtificialOfficeBasePrice(UltimateOfficeBasePrice ultimateOfficeBasePrice);
|
||||
|
||||
}
|
||||
|
@ -21,13 +21,18 @@ public interface IUltimateOfficeBasePriceService {
|
||||
*/
|
||||
List<UltimateOfficeBasePrice> selectOfficeBasePriceUltimateList(UltimateOfficeBasePrice officeBasePriceUltimate);
|
||||
|
||||
/**
|
||||
*
|
||||
* @param officeBasePriceUltimate
|
||||
* @return
|
||||
*/
|
||||
int selectOfficeBasePriceUltimateListCount(UltimateOfficeBasePrice officeBasePriceUltimate);
|
||||
|
||||
/**
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
UltimateOfficeBasePrice getById(Integer yearMonth, Integer id);
|
||||
UltimateOfficeBasePrice getById(Integer yearMonth, String id);
|
||||
|
||||
/**
|
||||
* 可能修改当期的价格、也可能修改往期
|
||||
|
@ -3,6 +3,7 @@ package com.ruoyi.project.data.price.service.impl;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import com.ruoyi.common.exception.CustomException;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
@ -56,7 +57,7 @@ public class UltimateOfficeBasePriceServiceImpl implements IUltimateOfficeBasePr
|
||||
}
|
||||
|
||||
@Override
|
||||
public UltimateOfficeBasePrice getById(Integer yearMonth, Integer id) {
|
||||
public UltimateOfficeBasePrice getById(Integer yearMonth, String id) {
|
||||
Integer lastYearMonth = getLastYearMonth(yearMonth);
|
||||
return officeBasePriceUltimateMapper.getById(yearMonth, lastYearMonth, id);
|
||||
}
|
||||
@ -74,8 +75,12 @@ public class UltimateOfficeBasePriceServiceImpl implements IUltimateOfficeBasePr
|
||||
StringBuilder failureMsg = new StringBuilder();
|
||||
Integer lastYearMonth = getLastYearMonth(yearMonth);
|
||||
|
||||
// 批量插入
|
||||
|
||||
for (UltimateOfficeBasePrice inputModel : officeBasePriceUltimates) {
|
||||
try {
|
||||
inputModel.setYearMonth(yearMonth);
|
||||
officeBasePriceUltimateMapper.insertArtificialOfficeBasePrice(inputModel);
|
||||
// 验证是否存在这个用户
|
||||
UltimateOfficeBasePrice currentUltimateOfficeBasePrice =
|
||||
officeBasePriceUltimateMapper.getById(yearMonth, lastYearMonth,
|
||||
@ -83,13 +88,10 @@ public class UltimateOfficeBasePriceServiceImpl implements IUltimateOfficeBasePr
|
||||
UltimateOfficeBasePrice lastUltimateOfficeBasePrice =
|
||||
officeBasePriceUltimateMapper.getByBuildingId(lastYearMonth,
|
||||
inputModel.getBuildingId());
|
||||
if (!StringUtils.isNotNull(currentUltimateOfficeBasePrice)) {
|
||||
if (currentUltimateOfficeBasePrice.getMainPrice().subtract(inputModel.getMainPrice()).compareTo(BigDecimal.ZERO) != 0
|
||||
|| currentUltimateOfficeBasePrice.getMainPriceRent().subtract(inputModel.getMainPriceRent()).compareTo(BigDecimal.ZERO) != 0) {
|
||||
updateBasePrice(inputModel, currentUltimateOfficeBasePrice, lastUltimateOfficeBasePrice);
|
||||
successNum++;
|
||||
successMsg.append("<br/>" + successNum + "、ID= " + inputModel.getId() + " 更新成功");
|
||||
}
|
||||
if (StringUtils.isNotNull(currentUltimateOfficeBasePrice)) {
|
||||
updateBasePrice(inputModel, currentUltimateOfficeBasePrice, lastUltimateOfficeBasePrice);
|
||||
successNum++;
|
||||
successMsg.append("<br/>" + successNum + "、ID= " + inputModel.getId() + " 更新成功");
|
||||
} else {
|
||||
failureNum++;
|
||||
failureMsg.append("<br/>" + failureNum + "、ID= " + inputModel.getId() + " 失败");
|
||||
@ -148,44 +150,82 @@ public class UltimateOfficeBasePriceServiceImpl implements IUltimateOfficeBasePr
|
||||
private void updateBasePrice(UltimateOfficeBasePrice inputModel,
|
||||
UltimateOfficeBasePrice currentUltimateOfficeBasePrice,
|
||||
UltimateOfficeBasePrice lastUltimateOfficeBasePrice) {
|
||||
// 上期价格比较
|
||||
if (StringUtils.isNotNull(lastUltimateOfficeBasePrice) &&
|
||||
StringUtils.isNotNull(lastUltimateOfficeBasePrice.getMainPrice()) &&
|
||||
StringUtils.isNotNull(lastUltimateOfficeBasePrice.getMainPriceRent()) &&
|
||||
(lastUltimateOfficeBasePrice.getMainPrice().compareTo(inputModel.getMainPrice_1()) != 0 ||
|
||||
lastUltimateOfficeBasePrice.getMainPriceRent().compareTo(inputModel.getMainPriceRent_1()) != 0)) {
|
||||
OfficeBasePriceModifyModel officeBasePriceModifyModel =
|
||||
new OfficeBasePriceModifyModel(lastUltimateOfficeBasePrice.getId(),
|
||||
lastUltimateOfficeBasePrice.getYearMonth());
|
||||
officeBasePriceModifyModel.setMainPrice(inputModel.getMainPrice_1());
|
||||
officeBasePriceModifyModel.setMainPricePst(lastUltimateOfficeBasePrice.getMainPricePst());
|
||||
officeBasePriceModifyModel.setMainPriceRent(inputModel.getMainPriceRent_1());
|
||||
officeBasePriceModifyModel.setMainPriceRentPst(lastUltimateOfficeBasePrice.getMainPriceRentPst());
|
||||
// 上期价格
|
||||
|
||||
OfficeBasePriceModifyModel officeBasePriceModifyModel = compareYearMonth(inputModel,
|
||||
currentUltimateOfficeBasePrice, lastUltimateOfficeBasePrice);
|
||||
if (null != officeBasePriceModifyModel) {
|
||||
officeBasePriceUltimateMapper.updateBasePrice(officeBasePriceModifyModel);
|
||||
}
|
||||
|
||||
// 本期价格比较
|
||||
if (StringUtils.isNotNull(currentUltimateOfficeBasePrice) &&
|
||||
StringUtils.isNotNull(currentUltimateOfficeBasePrice.getMainPrice()) &&
|
||||
StringUtils.isNotNull(currentUltimateOfficeBasePrice.getMainPriceRent()) &&
|
||||
(currentUltimateOfficeBasePrice.getMainPrice().compareTo(inputModel.getMainPrice()) != 0 ||
|
||||
currentUltimateOfficeBasePrice.getMainPriceRent().compareTo(inputModel.getMainPriceRent()) != 0)) {
|
||||
OfficeBasePriceModifyModel officeBasePriceModifyModel = new OfficeBasePriceModifyModel(inputModel.getId()
|
||||
, inputModel.getYearMonth());
|
||||
officeBasePriceModifyModel.setMainPrice(inputModel.getMainPrice());
|
||||
BigDecimal mainPricePst =
|
||||
inputModel.getMainPrice().divide(lastUltimateOfficeBasePrice.getMainPrice(), 4);
|
||||
officeBasePriceModifyModel.setMainPricePst(mainPricePst);
|
||||
officeBasePriceModifyModel.setMainPriceRent(inputModel.getMainPriceRent());
|
||||
BigDecimal mainPriceRentPst =
|
||||
inputModel.getMainPriceRent().divide(lastUltimateOfficeBasePrice.getMainPriceRent(),
|
||||
4);
|
||||
officeBasePriceModifyModel.setMainPriceRentPst(mainPriceRentPst);
|
||||
if(StringUtils.isNotNull(inputModel.getAdjustPriceComment()))
|
||||
officeBasePriceModifyModel.setComment(inputModel.getAdjustPriceComment());
|
||||
// 上期价格
|
||||
officeBasePriceModifyModel = compareLastYearMonth(inputModel, lastUltimateOfficeBasePrice);
|
||||
if (null != officeBasePriceModifyModel) {
|
||||
officeBasePriceUltimateMapper.updateBasePrice(officeBasePriceModifyModel);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 上期价格
|
||||
*
|
||||
* @param inputModel
|
||||
* @param ultimateOfficeBasePrice
|
||||
* @return
|
||||
*/
|
||||
private OfficeBasePriceModifyModel compareYearMonth(UltimateOfficeBasePrice inputModel,
|
||||
UltimateOfficeBasePrice ultimateOfficeBasePrice,
|
||||
UltimateOfficeBasePrice lastUltimateOfficeBasePrice) {
|
||||
BigDecimal inputMainPrice = inputModel.getMainPrice();
|
||||
BigDecimal mainPrice = ultimateOfficeBasePrice.getMainPrice();
|
||||
BigDecimal inputMainPriceRent = inputModel.getMainPriceRent();
|
||||
BigDecimal mainPriceRent = ultimateOfficeBasePrice.getMainPriceRent();
|
||||
if (Objects.equals(inputMainPrice, mainPrice) && Objects.equals(inputMainPriceRent, mainPriceRent)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
OfficeBasePriceModifyModel officeBasePriceModifyModel =
|
||||
new OfficeBasePriceModifyModel(inputModel.getId(),
|
||||
inputModel.getYearMonth());
|
||||
officeBasePriceModifyModel.setMainPrice(inputModel.getMainPrice_1());
|
||||
if (null != lastUltimateOfficeBasePrice.getMainPrice() && lastUltimateOfficeBasePrice.getMainPrice().compareTo(BigDecimal.ZERO) != 0) {
|
||||
BigDecimal mainPricePst =
|
||||
inputModel.getMainPrice().divide(lastUltimateOfficeBasePrice.getMainPrice(), 4);
|
||||
officeBasePriceModifyModel.setMainPricePst(mainPricePst);
|
||||
}
|
||||
|
||||
officeBasePriceModifyModel.setMainPriceRent(inputModel.getMainPriceRent_1());
|
||||
if (null != lastUltimateOfficeBasePrice.getMainPriceRent() && lastUltimateOfficeBasePrice.getMainPriceRent().compareTo(BigDecimal.ZERO) != 0) {
|
||||
BigDecimal mainPriceRentPst =
|
||||
inputModel.getMainPriceRent().divide(lastUltimateOfficeBasePrice.getMainPriceRent(), 4);
|
||||
officeBasePriceModifyModel.setMainPriceRentPst(mainPriceRentPst);
|
||||
}
|
||||
|
||||
return officeBasePriceModifyModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* 上期价格
|
||||
*
|
||||
* @param inputModel
|
||||
* @param lastUltimateOfficeBasePrice
|
||||
* @return
|
||||
*/
|
||||
private OfficeBasePriceModifyModel compareLastYearMonth(UltimateOfficeBasePrice inputModel,
|
||||
UltimateOfficeBasePrice lastUltimateOfficeBasePrice) {
|
||||
BigDecimal inputMainPrice = inputModel.getMainPrice_1();
|
||||
BigDecimal mainPrice_1 = lastUltimateOfficeBasePrice.getMainPrice();
|
||||
BigDecimal inputMainPriceRent = inputModel.getMainPriceRent_1();
|
||||
BigDecimal mainPriceRent_1 = lastUltimateOfficeBasePrice.getMainPriceRent();
|
||||
if (Objects.equals(inputMainPrice, mainPrice_1) && Objects.equals(inputMainPriceRent, mainPriceRent_1)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
OfficeBasePriceModifyModel officeBasePriceModifyModel =
|
||||
new OfficeBasePriceModifyModel(lastUltimateOfficeBasePrice.getId(),
|
||||
lastUltimateOfficeBasePrice.getYearMonth());
|
||||
officeBasePriceModifyModel.setMainPrice(inputModel.getMainPrice_1());
|
||||
officeBasePriceModifyModel.setMainPricePst(lastUltimateOfficeBasePrice.getMainPricePst());
|
||||
officeBasePriceModifyModel.setMainPriceRent(inputModel.getMainPriceRent_1());
|
||||
officeBasePriceModifyModel.setMainPriceRentPst(lastUltimateOfficeBasePrice.getMainPriceRentPst());
|
||||
|
||||
return officeBasePriceModifyModel;
|
||||
}
|
||||
}
|
||||
|
@ -85,7 +85,7 @@
|
||||
left join ODS_OFFICE_BUILDING_PRICE_INFO_${lastYearMonth} c on a.BuildingID_P = c.BuildingID_P
|
||||
WHERE b.EffDate <![CDATA[ <= ]]> getdate() AND b.ExpirDate <![CDATA[ > ]]> getdate() AND c.Status=1
|
||||
<if test="communityId != null">
|
||||
AND a.PROJECTID_P = #{communityId}
|
||||
AND a.PROJECTID_P = #{communityId}
|
||||
</if>
|
||||
<if test="buildingId != null">
|
||||
AND a.BUILDINGID_P = #{buildingId}
|
||||
@ -99,7 +99,7 @@
|
||||
resultMap="OfficeBasePriceUltimateResult">
|
||||
<include refid="getById"/>
|
||||
<if test="communityId != null">
|
||||
AND a.PROJECTID_P = #{communityId}
|
||||
AND a.PROJECTID_P = #{communityId}
|
||||
</if>
|
||||
<if test="buildingId != null">
|
||||
AND a.BUILDINGID_P = #{buildingId}
|
||||
@ -157,7 +157,7 @@
|
||||
<select id="getYearMonthList" resultType="com.ruoyi.project.common.VueSelectModel">
|
||||
SELECT right(name,6) as value, right(name,6) as label
|
||||
FROM sys.tables
|
||||
where name like 'ODS_OFFICE_BUILDING_PRICE_INFO_%'
|
||||
where name like 'ODS_OFFICE_BUILDING_PRICE_INFO_%' and name not like '%_bak'
|
||||
order by cast(right(name,6) as int) desc
|
||||
</select>
|
||||
<!-- -->
|
||||
@ -196,4 +196,10 @@
|
||||
FROM dbo.ODS_OFFICE_BUILDING_PRICE_INFO_${yearMonth}
|
||||
WHERE ID=#{id}
|
||||
</select>
|
||||
<!-- 插入人工修正办公基价 -->
|
||||
<insert id="insertArtificialOfficeBasePrice"
|
||||
parameterType="com.ruoyi.project.data.price.domain.UltimateOfficeBasePrice">
|
||||
insert into
|
||||
dbo.DWA_PROJECTBASEPRICE_OFFICE_MANU_${yearMonth}(ID,BuildingID,ProjectID,County,"Loop",Block,ProjectAddr,ProjectName,Year,AvgArea,TotalFloorSum,UpperFloorSum,OfficeClass,Grade,MainPrice_1,MainPriceRent_1,MainPrice,MainPriceRent,ModifyDate) values(#{id},#{buildingId},#{communityId},#{countyName},#{loopName},#{blockName},#{communityAddress},#{communityName},#{year},#{avgArea},#{totalFloorSum},#{upperFloorSum},#{officeClass},#{officeLevel},#{mainPrice_1},#{mainPriceRent_1},#{mainPrice},#{mainPriceRent},getdate())
|
||||
</insert>
|
||||
</mapper>
|
Loading…
x
Reference in New Issue
Block a user