1. 办公基价导入修改

This commit is contained in:
purple 2020-06-05 18:40:42 +08:00
parent 23db85a2c1
commit 555c840303
8 changed files with 131 additions and 62 deletions

View File

@ -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">提示仅允许导入xlsxlsx格式文件</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 (

View File

@ -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);

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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);
/**
* 可能修改当期的价格也可能修改往期

View File

@ -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;
}
}

View File

@ -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>