feat(asset): 添加资产维保日期更新功能并优化维修订单处理

- 新增updateAssetMaintenanceDate方法用于更新资产上次维保日期
- 在维修订单完成后自动更新资产的last_maintenance_date字段
- 修复维修订单中的受控字段重置逻辑问题
- 优化维修完成时间验证逻辑,支持按天比较而非精确到秒
- 调整维修相关页面的时间显示格式为年月日
main
yangk 1 week ago
parent 5f15c3f1f9
commit 106cf48305

@ -134,6 +134,20 @@ public interface AmsAssetMapper
@Param("updateBy") String updateBy,
@Param("updateTime") Date updateTime);
/**
*
*
* @param assetId ID
* @param lastMaintenanceDate
* @param updateBy
* @param updateTime
* @return
*/
public int updateAssetMaintenanceDate(@Param("assetId") Long assetId,
@Param("lastMaintenanceDate") Date lastMaintenanceDate,
@Param("updateBy") String updateBy,
@Param("updateTime") Date updateTime);
/**
*
*

@ -110,7 +110,7 @@ public class AmsRepairOrderServiceImpl implements IAmsRepairOrderService
amsRepairOrder.setCreateTime(now);
// 重置受控的维修中及维修完成字段,以防篡改
amsRepairOrder.setRepairerType(REPAIRER_TYPE_INTERNAL);
amsRepairOrder.setRepairerType(null);
amsRepairOrder.setRepairUserId(null);
amsRepairOrder.setRepairUserName(null);
amsRepairOrder.setRepairOrgName(null);
@ -160,8 +160,7 @@ public class AmsRepairOrderServiceImpl implements IAmsRepairOrderService
amsRepairOrder.setUpdateTime(DateUtils.getNowDate());
// 重置受控字段
amsRepairOrder.setRepairerType(StringUtils.isEmpty(current.getRepairerType())
? REPAIRER_TYPE_INTERNAL : current.getRepairerType());
amsRepairOrder.setRepairerType(current.getRepairerType());
amsRepairOrder.setRepairUserId(null);
amsRepairOrder.setRepairUserName(null);
amsRepairOrder.setRepairOrgName(null);
@ -400,9 +399,14 @@ public class AmsRepairOrderServiceImpl implements IAmsRepairOrderService
{
throw new ServiceException("维修完成时间不能为空");
}
if (order.getRepairStartTime() != null && amsRepairOrder.getRepairFinishTime().before(order.getRepairStartTime()))
if (order.getRepairStartTime() != null)
{
throw new ServiceException("维修完成时间不能早于维修开始时间");
Date startZero = DateUtils.truncate(order.getRepairStartTime(), java.util.Calendar.DATE);
Date finishZero = DateUtils.truncate(amsRepairOrder.getRepairFinishTime(), java.util.Calendar.DATE);
if (finishZero.before(startZero))
{
throw new ServiceException("维修完成时间不能早于维修开始时间");
}
}
// 3. 悲观锁锁定资产
@ -417,7 +421,11 @@ public class AmsRepairOrderServiceImpl implements IAmsRepairOrderService
assetStatusTransitionService.finishRepair(order.getAssetId(), order.getBeforeAssetStatus(), context);
// 5. 填充完成属性
// 5. 使用维修完成时间更新资产的上次维保日期last_maintenance_date
amsAssetMapper.updateAssetMaintenanceDate(order.getAssetId(), amsRepairOrder.getRepairFinishTime(),
operateContext.getOperateLoginName(), DateUtils.getNowDate());
// 6. 填充完成属性
order.setRepairFinishTime(amsRepairOrder.getRepairFinishTime());
order.setRepairResult(StringUtils.trim(amsRepairOrder.getRepairResult()));
order.setRepairCost(amsRepairOrder.getRepairCost());

@ -313,6 +313,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and epc_code = #{epcCode}
</update>
<update id="updateAssetMaintenanceDate">
update ams_asset
set last_maintenance_date = #{lastMaintenanceDate},
update_by = #{updateBy},
update_time = #{updateTime}
where asset_id = #{assetId} and del_flag = '0'
</update>
<update id="deleteAmsAssetByAssetId" parameterType="Long">
update ams_asset set del_flag = '1' where asset_id = #{assetId}
</update>

@ -108,7 +108,7 @@
<div class="form-group">
<label class="col-sm-4 control-label">报修时间:</label>
<div class="col-sm-8">
<p class="form-control-plaintext" th:text="*{#dates.format(reportTime, 'yyyy-MM-dd HH:mm:ss')}"></p>
<p class="form-control-plaintext" th:text="*{#dates.format(reportTime, 'yyyy-MM-dd')}"></p>
</div>
</div>
</div>
@ -201,7 +201,7 @@
<div class="form-group">
<label class="col-sm-4 control-label">维修开始时间:</label>
<div class="col-sm-8">
<p class="form-control-plaintext" th:text="*{#dates.format(repairStartTime, 'yyyy-MM-dd HH:mm:ss')}"></p>
<p class="form-control-plaintext" th:text="*{#dates.format(repairStartTime, 'yyyy-MM-dd')}"></p>
</div>
</div>
</div>
@ -209,7 +209,7 @@
<div class="form-group">
<label class="col-sm-4 control-label">维修完成时间:</label>
<div class="col-sm-8">
<p class="form-control-plaintext" th:text="*{#dates.format(repairFinishTime, 'yyyy-MM-dd HH:mm:ss')}"></p>
<p class="form-control-plaintext" th:text="*{#dates.format(repairFinishTime, 'yyyy-MM-dd')}"></p>
</div>
</div>
</div>

Loading…
Cancel
Save