| | |
| | | import cn.hutool.core.util.ObjUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.by4cloud.platformx.admin.api.entity.SysDept; |
| | | import com.by4cloud.platformx.admin.api.feign.RemoteDeptService; |
| | | import com.by4cloud.platformx.business.api.feign.RemoteFlowProcessService; |
| | | import com.by4cloud.platformx.business.constant.FlowNameEnum; |
| | | import com.by4cloud.platformx.business.dto.ContracQueryDTO; |
| | | import com.by4cloud.platformx.business.dto.ContractAddDTO; |
| | | import com.by4cloud.platformx.business.dto.ContractUpdateDTO; |
| | | import com.by4cloud.platformx.business.dto.DelayOutApprovalDTO; |
| | | import com.by4cloud.platformx.business.entity.*; |
| | | import com.by4cloud.platformx.business.mapper.*; |
| | | import com.by4cloud.platformx.business.service.ContractService; |
| | | import com.by4cloud.platformx.business.utils.ContractNumberGenerator; |
| | | import com.by4cloud.platformx.business.vo.ContractDetailVo; |
| | | import com.by4cloud.platformx.common.core.util.R; |
| | | import com.by4cloud.platformx.common.data.datascope.DataScope; |
| | | import com.by4cloud.platformx.common.security.util.SecurityUtils; |
| | | import com.by4cloud.platformx.flow.task.dto.ProcessInstanceParamDto; |
| | | import com.deepoove.poi.XWPFTemplate; |
| | |
| | | private final RemoteFlowProcessService remoteFlowProcessService; |
| | | private final ProductMapper productMapper; |
| | | private final RemoteDeptService remoteDeptService; |
| | | |
| | | @Value("${file.local.base-path}") |
| | | private String basePath; |
| | | private final ContractDelayOutMapper contractDelayOutMapper; |
| | | |
| | | @Override |
| | | public R add(ContractAddDTO addDTO) { |
| | |
| | | contract.setPaidAmount(new BigDecimal("0")); |
| | | contract.setBillingStatus("0"); |
| | | contract.setErpPushFlag("0"); |
| | | List<Contract> contracts; |
| | | contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, contract.getContractNo())); |
| | | |
| | | if (StrUtil.isNotEmpty(addDTO.getContractCategory()) && ( |
| | | StrUtil.equals(addDTO.getContractCategory(), "ymjgkcpmm")||StrUtil.equals(addDTO.getContractCategory(), "ymjgypmm"))) { |
| | | contract.setExpirationDate(DateUtil.offsetDay(contract.getSignDate(),contract.getDeliveryCycle())); |
| | | } |
| | | List<Contract> contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, contract.getContractNo())); |
| | | while (ArrayUtil.isNotEmpty(contracts.toArray())) { |
| | | contract.setContractNo(ContractNumberGenerator.generateContractNumber()); |
| | | contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo, contract.getContractNo())); |
| | |
| | | record.setBusGuestName(contract.getPartyA()); |
| | | record.setMeterReadTime(new Date()); |
| | | meterReadRecordMapper.insert(record); |
| | | } |
| | | if (StrUtil.isNotEmpty(addDTO.getContractCategory()) && StrUtil.equals(addDTO.getContractCategory(), "ymjcg") |
| | | &&ObjUtil.isNotNull(subjectMatter.getPlannedDeliveryDate())&&ObjUtil.isNotNull(contract.getExpirationDate()) |
| | | &&DateUtil.compare(contract.getExpirationDate(),subjectMatter.getPlannedDeliveryDate())>0) { |
| | | contract.setExpirationDate(subjectMatter.getPlannedDeliveryDate()); |
| | | baseMapper.updateById(contract); |
| | | } |
| | | }); |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | if (StrUtil.isNotEmpty(addDTO.getContractCategory()) && StrUtil.equals(addDTO.getContractCategory(), "water_house")) { |
| | | |
| | | } |
| | | |
| | | return R.ok(); |
| | | } |
| | |
| | | if (StrUtil.isNotEmpty(contract.getContractCategory()) && StrUtil.equals(contract.getContractCategory(), "water_house")) { |
| | | List<ContractSubjectMatter> subjectMatterList = contractSubjectMatterMapper.selectList(Wrappers.<ContractSubjectMatter>lambdaQuery() |
| | | .eq(ContractSubjectMatter::getContractId,id)); |
| | | |
| | | if (ArrayUtil.isNotEmpty(subjectMatterList.toArray())) { |
| | | subjectMatterList.stream().forEach(contractSubjectMatter -> { |
| | | |
| | | //循环日期 |
| | | Date execDate0 = DateUtil.offsetDay(contract.getSignDate(), contract.getExecDay()); |
| | | for (int i = 0; i < contract.getExecTimes(); i++) { |
| | | if (StrUtil.equals(contract.getExecFrequency(), "1")) { |
| | | if (StrUtil.equals(contract.getExecFrequency(), "1")) { |
| | | Long weeksTrue = DateUtil.betweenWeek(DateUtil.beginOfWeek(contract.getEffectiveDate()), |
| | | DateUtil.endOfWeek(contract.getExpirationDate()), true); |
| | | //循环日期 |
| | | Date execDate0 = DateUtil.offsetDay(DateUtil.beginOfWeek(contract.getEffectiveDate()), contract.getExecDay()); |
| | | for (int i = 0; i < weeksTrue.intValue(); i++) { |
| | | Date execDatei = DateUtil.offsetWeek(execDate0, i); |
| | | ContractExecDate execDate = new ContractExecDate(); |
| | | execDate.setContractId(contract.getId()); |
| | | execDate.setMatterId(contractSubjectMatter.getId()); |
| | | execDate.setExecDate(execDatei); |
| | | execDate.setGenFlag("0"); |
| | | contractExecDateMapper.insert(execDate); |
| | | } |
| | | if (StrUtil.equals(contract.getExecFrequency(), "2")) { |
| | | Date execDatei = DateUtil.offsetMonth(execDate0, i ); |
| | | ContractExecDate execDate = new ContractExecDate(); |
| | | execDate.setContractId(contract.getId()); |
| | | execDate.setMatterId(contractSubjectMatter.getId()); |
| | | execDate.setExecDate(execDatei); |
| | | execDate.setGenFlag("0"); |
| | | contractExecDateMapper.insert(execDate); |
| | | } |
| | | if (StrUtil.equals(contract.getExecFrequency(), "3")) { |
| | | Date execDatei = DateUtil.offsetMonth(execDate0, i * 3); |
| | | ContractExecDate execDate = new ContractExecDate(); |
| | | execDate.setContractId(contract.getId()); |
| | | execDate.setMatterId(contractSubjectMatter.getId()); |
| | | execDate.setExecDate(execDatei); |
| | | execDate.setGenFlag("0"); |
| | | contractExecDateMapper.insert(execDate); |
| | | } |
| | | if (StrUtil.equals(contract.getExecFrequency(), "4")) { |
| | | Date execDatei = DateUtil.offsetMonth(execDate0, i * 6); |
| | | ContractExecDate execDate = new ContractExecDate(); |
| | | execDate.setContractId(contract.getId()); |
| | | execDate.setMatterId(contractSubjectMatter.getId()); |
| | | execDate.setExecDate(execDatei); |
| | | execDate.setGenFlag("0"); |
| | | contractExecDateMapper.insert(execDate); |
| | | } |
| | | if (StrUtil.equals(contract.getExecFrequency(), "5")) { |
| | | Date execDatei = DateUtil.offsetYear(execDate0, i); |
| | | ContractExecDate execDate = new ContractExecDate(); |
| | | execDate.setContractId(contract.getId()); |
| | | execDate.setMatterId(contractSubjectMatter.getId()); |
| | | execDate.setExecDate(execDatei); |
| | | execDate.setGenFlag("0"); |
| | | contractExecDateMapper.insert(execDate); |
| | | if (DateUtil.isIn(execDatei,contract.getEffectiveDate(),contract.getExpirationDate())) { |
| | | contractExecDateMapper.insert(execDate); |
| | | } |
| | | } |
| | | } |
| | | if (StrUtil.equals(contract.getExecFrequency(), "2")) { |
| | | Long weeksTrue = DateUtil.betweenMonth(DateUtil.beginOfMonth(contract.getEffectiveDate()), |
| | | DateUtil.endOfMonth(contract.getExpirationDate()), true); |
| | | //循环日期 |
| | | Date execDate0 = DateUtil.offsetDay(DateUtil.beginOfMonth(contract.getEffectiveDate()), contract.getExecDay()); |
| | | for (int i = 0; i < weeksTrue.intValue(); i++) { |
| | | Date execDatei = DateUtil.offsetMonth(execDate0, i); |
| | | ContractExecDate execDate = new ContractExecDate(); |
| | | execDate.setContractId(contract.getId()); |
| | | execDate.setMatterId(contractSubjectMatter.getId()); |
| | | execDate.setExecDate(execDatei); |
| | | execDate.setGenFlag("0"); |
| | | if (DateUtil.isIn(execDatei,contract.getEffectiveDate(),contract.getExpirationDate())) { |
| | | contractExecDateMapper.insert(execDate); |
| | | } |
| | | } |
| | | } |
| | | if (StrUtil.equals(contract.getExecFrequency(), "3")) { |
| | | Long weeksTrue = DateUtil.betweenMonth(DateUtil.beginOfQuarter(contract.getEffectiveDate()), |
| | | DateUtil.endOfQuarter(contract.getExpirationDate()), true)/3; |
| | | |
| | | //循环日期 |
| | | Date execDate0 = DateUtil.offsetDay(DateUtil.beginOfWeek(contract.getExpirationDate()), contract.getExecDay()); |
| | | for (int i = 0; i < weeksTrue.intValue(); i++) { |
| | | Date execDatei = DateUtil.offsetMonth(execDate0, i*3); |
| | | ContractExecDate execDate = new ContractExecDate(); |
| | | execDate.setContractId(contract.getId()); |
| | | execDate.setMatterId(contractSubjectMatter.getId()); |
| | | execDate.setExecDate(execDatei); |
| | | execDate.setGenFlag("0"); |
| | | if (DateUtil.isIn(execDatei,contract.getEffectiveDate(),contract.getExpirationDate())) { |
| | | contractExecDateMapper.insert(execDate); |
| | | } |
| | | } |
| | | } |
| | | if (StrUtil.equals(contract.getExecFrequency(), "4")) { |
| | | Date startDate = contract.getEffectiveDate(); |
| | | Date endDate = contract.getExpirationDate(); |
| | | Integer startMonth = DateUtil.month(contract.getEffectiveDate()); |
| | | Integer endMonth = DateUtil.month(contract.getExpirationDate()); |
| | | if (1<=startMonth&&startMonth<=6){ |
| | | startDate = DateUtil.beginOfYear(startDate); |
| | | } |
| | | if (7<=startMonth&&startMonth<=12){ |
| | | startDate = DateUtil.offsetMonth(DateUtil.beginOfYear(startDate),6); |
| | | } |
| | | if (1<=endMonth&&endMonth<=6){ |
| | | endDate = DateUtil.offsetMonth(DateUtil.endOfYear(endDate),-6); |
| | | } |
| | | if (7<=endMonth&&endMonth<=12){ |
| | | endDate = DateUtil.endOfYear(endDate); |
| | | } |
| | | Long weeksTrue = DateUtil.betweenMonth(startDate,endDate, true)/6; |
| | | //循环日期 |
| | | Date execDate0 = DateUtil.offsetDay(DateUtil.beginOfWeek(contract.getExpirationDate()), contract.getExecDay()); |
| | | for (int i = 0; i < weeksTrue.intValue(); i++) { |
| | | Date execDatei = DateUtil.offsetMonth(execDate0, i*6); |
| | | ContractExecDate execDate = new ContractExecDate(); |
| | | execDate.setContractId(contract.getId()); |
| | | execDate.setMatterId(contractSubjectMatter.getId()); |
| | | execDate.setExecDate(execDatei); |
| | | execDate.setGenFlag("0"); |
| | | if (DateUtil.isIn(execDatei,contract.getEffectiveDate(),contract.getExpirationDate())) { |
| | | contractExecDateMapper.insert(execDate); |
| | | } |
| | | } |
| | | } |
| | | if (StrUtil.equals(contract.getExecFrequency(), "5")) { |
| | | Long weeksTrue = DateUtil.betweenWeek(DateUtil.beginOfYear(contract.getEffectiveDate()), |
| | | DateUtil.endOfYear(contract.getExpirationDate()), true); |
| | | //循环日期 |
| | | Date execDate0 = DateUtil.offsetDay(DateUtil.beginOfYear(contract.getEffectiveDate()), contract.getExecDay()); |
| | | for (int i = 0; i < weeksTrue.intValue(); i++) { |
| | | Date execDatei = DateUtil.offsetWeek(execDate0, i); |
| | | ContractExecDate execDate = new ContractExecDate(); |
| | | execDate.setContractId(contract.getId()); |
| | | execDate.setMatterId(contractSubjectMatter.getId()); |
| | | execDate.setExecDate(execDatei); |
| | | execDate.setGenFlag("0"); |
| | | if (DateUtil.isIn(execDatei,contract.getEffectiveDate(),contract.getExpirationDate())) { |
| | | contractExecDateMapper.insert(execDate); |
| | | } |
| | | } |
| | | } |
| | | |
| | | }); |
| | | } |
| | | } else { |
| | |
| | | map.put("court",contract.getCourt()); |
| | | map.put("contractAttchment",contract.getContractAttchment()); |
| | | map.put("invoiceNotice",contract.getInvoiceNotice()); |
| | | map.put("city",contract.getCity()); |
| | | map.put("region",contract.getRegion()); |
| | | |
| | | //标的物 |
| | | List<Map<String, Object>> items = new ArrayList<>(); |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public R delayOutApproval(DelayOutApprovalDTO dto) { |
| | | Contract contract = baseMapper.selectById(dto.getContractId()); |
| | | ContractDelayOut delayOut = BeanUtil.copyProperties(dto,ContractDelayOut.class); |
| | | delayOut.setApplyTime(new Date()); |
| | | delayOut.setApplyName(SecurityUtils.getUser().getUsername()); |
| | | delayOut.setDelayStatus("0"); |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("contractId",contract.getId()); |
| | | map.put("contractName",contract.getContractName()); |
| | | map.put("delayDay",dto.getDelayDay()); |
| | | map.put("applyName",SecurityUtils.getUser().getUsername()); |
| | | map.put("applyTime",DateUtil.format(delayOut.getApplyTime(),DatePattern.NORM_DATETIME_FORMAT)); |
| | | //启动流程 |
| | | ProcessInstanceParamDto paramDto = new ProcessInstanceParamDto(); |
| | | paramDto.setParamMap(map); |
| | | paramDto.setFlowName(FlowNameEnum.延期出货审批.name()); |
| | | R r1 = remoteFlowProcessService.startProcessInstance(paramDto); |
| | | if (r1.getCode() == 1) { |
| | | return R.failed("流程启动失败"); |
| | | } |
| | | contractDelayOutMapper.insert(delayOut); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public Page pageScope(Page page, ContracQueryDTO queryDTO) { |
| | | |
| | | return baseMapper.pageScope(page,queryDTO, DataScope.of("comp_id")); |
| | | } |
| | | } |