package cn.com.goldenwater.dcproj.service.impl; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.dao.AttProjectInsuranceRecordDao; import cn.com.goldenwater.dcproj.dao.BisInspAnzeRecordDao; import cn.com.goldenwater.dcproj.dao.BisInspAnzeRgstrDao; import cn.com.goldenwater.dcproj.model.AttProjectInsurance; import cn.com.goldenwater.dcproj.model.AttProjectInsuranceRecord; import cn.com.goldenwater.dcproj.model.BisInspAnzeRecord; import cn.com.goldenwater.dcproj.model.BisInspAnzeRgstr; import cn.com.goldenwater.dcproj.param.BisInspAnzeRecordParam; import cn.com.goldenwater.dcproj.service.BisInspAnzeRecordService; import cn.com.goldenwater.id.util.UuidUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Calendar; import java.util.Date; import java.util.List; /** * @author lql * @date 2026-4-21 */ @Service @Transactional public class BisInspAnzeRecordServiceImpl extends AbstractCrudService implements BisInspAnzeRecordService { @Autowired private BisInspAnzeRgstrDao bisInspAnzeRgstrDao; @Autowired private BisInspAnzeRecordDao bisInspAnzeRecordDao; @Autowired private AttProjectInsuranceRecordDao attProjectInsuranceRecordDao; public BisInspAnzeRecordServiceImpl(BisInspAnzeRecordDao bisInspAnzeRecordDao) { super(bisInspAnzeRecordDao); this.bisInspAnzeRecordDao = bisInspAnzeRecordDao; } @Override public int insert(BisInspAnzeRecord bisInspAnzeRecord) { updateState(bisInspAnzeRecord); String uuid = UuidUtil.uuid(); bisInspAnzeRecord.setId(uuid); bisInspAnzeRecord.setIntm(new Date()); bisInspAnzeRecord.setUptm(new Date()); bisInspAnzeRecord.setDataStat("0"); int ret = this.bisInspAnzeRecordDao.insert(bisInspAnzeRecord); updateRgstrState(bisInspAnzeRecord); return ret; } @Override public int update(BisInspAnzeRecord bisInspAnzeRecord) { updateState(bisInspAnzeRecord); bisInspAnzeRecord.setUptm(new Date()); int ret = this.bisInspAnzeRecordDao.update(bisInspAnzeRecord); updateRgstrState(bisInspAnzeRecord); return ret; } private void updateRgstrState(BisInspAnzeRecord bisInspAnzeRecord) { boolean flag = false; AttProjectInsurance base = bisInspAnzeRgstrDao.getBaseById(bisInspAnzeRecord.getRgstrId()); AttProjectInsuranceRecord attProjectInsuranceRecord = attProjectInsuranceRecordDao.getByNew(base.getId()); // 投保时间 Date insuranceDate = attProjectInsuranceRecord.getInsuranceDate(); // 第一次填报日期 + 3月 Calendar calendar = Calendar.getInstance(); calendar.setTime(attProjectInsuranceRecord.getInsuranceDate()); calendar.add(Calendar.MONTH, 3); Date firstRecordTime = calendar.getTime(); // 投保截止时间 + 1年 Calendar calendar2 = Calendar.getInstance(); calendar2.setTime(attProjectInsuranceRecord.getInsuranceDate()); calendar2.add(Calendar.YEAR, 1); Date endTime = calendar2.getTime(); BisInspAnzeRecordParam param = new BisInspAnzeRecordParam(); param.setRgstrId(bisInspAnzeRecord.getRgstrId()); param.setStartTime(insuranceDate); param.setEndTime(endTime); param.setState("1"); List list = bisInspAnzeRecordDao.findList(param); double investment = Double.parseDouble(base.getInvestment()); // 判断当前时间是否在有效期内 Date now = new Date(); if (now.before(firstRecordTime)) { if (list.stream().count() >= 1) { flag = true; } } else { if (investment < 3000 && list.stream().count() >= 2) { flag = true; } else if (investment < 10000 && list.stream().count() >= 3) { flag = true; } else if (list.stream().count() >= 4) { flag = true; } } if (flag) { AttProjectInsuranceRecord attProjectInsuranceRecord2 = new AttProjectInsuranceRecord(); attProjectInsuranceRecord2.setId(attProjectInsuranceRecord.getId()); attProjectInsuranceRecord2.setState("1"); attProjectInsuranceRecordDao.update(attProjectInsuranceRecord2); BisInspAnzeRgstr bisInspAnzeRgstr = new BisInspAnzeRgstr(); bisInspAnzeRgstr.setId(bisInspAnzeRecord.getRgstrId()); bisInspAnzeRgstr.setState("2"); bisInspAnzeRgstrDao.update(bisInspAnzeRgstr); } } private void updateState(BisInspAnzeRecord bisInspAnzeRecord) { AttProjectInsurance base = bisInspAnzeRgstrDao.getBaseById(bisInspAnzeRecord.getRgstrId()); double investment = Double.parseDouble(base.getInvestment()); if (investment < 3000) { if ("1".equals(bisInspAnzeRecord.getSafetyEducation()) && "1".equals(bisInspAnzeRecord.getHazardInvestigation()) ) { bisInspAnzeRecord.setState("1"); return; } } else if (investment < 10000) { if ("1".equals(bisInspAnzeRecord.getSafetyEducation()) && "1".equals(bisInspAnzeRecord.getRiskAssessment()) && "1".equals(bisInspAnzeRecord.getHazardInvestigation()) && "1".equals(bisInspAnzeRecord.getStandardization()) && "1".equals(bisInspAnzeRecord.getEmergencyPlan()) ) { bisInspAnzeRecord.setState("1"); return; } } else { if ("1".equals(bisInspAnzeRecord.getSafetyEducation()) && "1".equals(bisInspAnzeRecord.getRiskAssessment()) && "1".equals(bisInspAnzeRecord.getHazardInvestigation()) && "1".equals(bisInspAnzeRecord.getStandardization()) && "1".equals(bisInspAnzeRecord.getEmergencyPlan()) && "1".equals(bisInspAnzeRecord.getTechPromotion()) ) { bisInspAnzeRecord.setState("1"); return; } } bisInspAnzeRecord.setState("0"); } @Override public int delete(String id) { // 删除 return this.bisInspAnzeRecordDao.delete(id); } }