Merge remote-tracking branch 'origin/dev' into dev
| | |
| | | * 夿æ¯å¦åå¨é |
| | | * */ |
| | | public boolean existLock(String key,String value){ |
| | | if(null==this.redisTemplate.opsForValue().get(key)){ |
| | | return false; |
| | | } |
| | | return this.redisTemplate.opsForValue().get(key).equals(value); |
| | | } |
| | | |
| | |
| | | @Tag(name = "æ°ä½ç®¡è·¯äº§è½è§å", description = "æ°ä½ç®¡è·¯äº§è½è§åæ¥å£") |
| | | @RestController |
| | | @RequestMapping("/gasPipelineCapacityPlan") |
| | | public class ApsGasPipelineCapacityPlanController extends BaseController |
| | | { |
| | | public class ApsGasPipelineCapacityPlanController extends BaseController { |
| | | @Autowired |
| | | private IApsGasPipelineCapacityPlanService apsGasPipelineCapacityPlanService; |
| | | |
| | |
| | | @Operation(summary = "æ¥è¯¢æ°ä½ç®¡è·¯äº§è½è§åå表", description = "å页æ¥è¯¢") |
| | | @RequiresPermissions("aps:gasPipelineCapacityPlan:list") |
| | | @GetMapping("/list") |
| | | public TableDataInfo list(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) |
| | | { |
| | | public TableDataInfo list(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) { |
| | | // startPage(); |
| | | List<ApsGasPipelineCapacityPlan> list = apsGasPipelineCapacityPlanService.selectApsGasPipelineCapacityPlanList(apsGasPipelineCapacityPlan); |
| | | ApsStandardProcess apsStandardProcess = new ApsStandardProcess(); |
| | |
| | | @RequiresPermissions("aps:gasPipelineCapacityPlan:export") |
| | | @Log(title = "æ°ä½ç®¡è·¯äº§è½è§å", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/export") |
| | | public void export(HttpServletResponse response, ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) |
| | | { |
| | | public void export(HttpServletResponse response, ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) { |
| | | List<ApsGasPipelineCapacityPlan> list = apsGasPipelineCapacityPlanService.selectApsGasPipelineCapacityPlanList(apsGasPipelineCapacityPlan); |
| | | ExcelUtil<ApsGasPipelineCapacityPlan> util = new ExcelUtil<ApsGasPipelineCapacityPlan>(ApsGasPipelineCapacityPlan.class); |
| | | util.exportExcel(response, list, "æ°ä½ç®¡è·¯äº§è½è§åæ°æ®"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * å¤å¶æ°ä½ç®¡è·¯äº§è½è§å |
| | | */ |
| | | @Operation(summary = "å¤å¶æ°ä½ç®¡è·¯äº§è½è§å", description = "å¤å¶") |
| | | // @RequiresPermissions("aps:gasPipelineCapacityPlan:copy") |
| | | @Log(title = "å¤å¶æ°ä½ç®¡è·¯äº§è½è§å", businessType = BusinessType.INSERT) |
| | | @PutMapping("/copy") |
| | | public AjaxResult copy( |
| | | // æ ¼å¼ï¼yyyy-MM |
| | | @RequestParam String date, |
| | | @RequestParam String factory, |
| | | @RequestParam String major, |
| | | // æ ¼å¼ï¼yyyy-MM |
| | | @RequestParam String toStart, |
| | | // æ ¼å¼ï¼yyyy-MM |
| | | @RequestParam String toEnd) { |
| | | apsGasPipelineCapacityPlanService.copyPlan(date, factory, major, toStart, toEnd); |
| | | return success(); |
| | | } |
| | | |
| | | /** |
| | |
| | | @Operation(summary = "è·åæ°ä½ç®¡è·¯äº§è½è§å详ç»ä¿¡æ¯", description = "æ ¹æ®idè·å") |
| | | @RequiresPermissions("aps:gasPipelineCapacityPlan:query") |
| | | @GetMapping(value = "/{id}") |
| | | public AjaxResult getInfo(@PathVariable("id") Long id) |
| | | { |
| | | public AjaxResult getInfo(@PathVariable("id") Long id) { |
| | | return success(apsGasPipelineCapacityPlanService.selectApsGasPipelineCapacityPlanById(id)); |
| | | } |
| | | |
| | |
| | | @RequiresPermissions("aps:gasPipelineCapacityPlan:add") |
| | | @Log(title = "æ°ä½ç®¡è·¯äº§è½è§å", businessType = BusinessType.INSERT) |
| | | @PostMapping |
| | | public AjaxResult add(@RequestBody List<ApsGasPipelineCapacityPlan> apsGasPipelineCapacityPlan) |
| | | { |
| | | public AjaxResult add(@RequestBody List<ApsGasPipelineCapacityPlan> apsGasPipelineCapacityPlan) { |
| | | apsGasPipelineCapacityPlan.forEach(apsGasPipelineCapacityPlanTemp -> { |
| | | if(apsGasPipelineCapacityPlanTemp.getId()==null){ |
| | | apsGasPipelineCapacityPlanTemp.setCreateBy(SecurityUtils.getUsername()); |
| | |
| | | @RequiresPermissions("aps:gasPipelineCapacityPlan:edit") |
| | | @Log(title = "æ°ä½ç®¡è·¯äº§è½è§å", businessType = BusinessType.UPDATE) |
| | | @PutMapping |
| | | public AjaxResult edit(@RequestBody ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) |
| | | { |
| | | public AjaxResult edit(@RequestBody ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) { |
| | | return toAjax(apsGasPipelineCapacityPlanService.updateApsGasPipelineCapacityPlan(apsGasPipelineCapacityPlan)); |
| | | } |
| | | |
| | |
| | | @RequiresPermissions("aps:gasPipelineCapacityPlan:remove") |
| | | @Log(title = "æ°ä½ç®¡è·¯äº§è½è§å", businessType = BusinessType.DELETE) |
| | | @DeleteMapping("/{ids}") |
| | | public AjaxResult remove(@PathVariable Long[] ids) |
| | | { |
| | | public AjaxResult remove(@PathVariable Long[] ids) { |
| | | return toAjax(apsGasPipelineCapacityPlanService.deleteApsGasPipelineCapacityPlanByIds(ids)); |
| | | } |
| | | } |
| | |
| | | @PostMapping("/setBomDataToRedis") |
| | | public void setBomDataToRedis() |
| | | { |
| | | apsBomHeaderService.setBomDataToRedis(""); |
| | | apsBomHeaderService.setBomDataToRedis("FORTUNA"); |
| | | //apsBomHeaderService.setBomDataToRedis("FORTUNE"); |
| | | } |
| | | |
| | | @PostMapping("/test") |
| | |
| | | { |
| | | apsBomHeaderService.setBomDataToRedis("FORTUNA"); |
| | | } |
| | | |
| | | @GetMapping("/getBomRdsCount/{orgCode}") |
| | | public Integer getBomRdsCount(String orgCode) |
| | | { |
| | | return apsBomHeaderService.getBomKeys(orgCode); |
| | | } |
| | | } |
| | |
| | | */ |
| | | @SneakyThrows |
| | | @Operation(summary = "ä¸è½½æ°ä½å·¥åæ°æ®å¯¼å
¥æ¨¡æ¿", description = "ä¸è½½æ°ä½å·¥åæ°æ®å¯¼å
¥æ¨¡æ¿") |
| | | @RequiresPermissions("gasPipeline:mo:template") |
| | | @Log(title = "ä¸è½½æ°ä½å·¥åæ°æ®å¯¼å
¥æ¨¡æ¿", businessType = BusinessType.EXPORT) |
| | | // @RequiresPermissions("gasPipeline:mo:template") |
| | | // @Log(title = "ä¸è½½æ°ä½å·¥åæ°æ®å¯¼å
¥æ¨¡æ¿", businessType = BusinessType.EXPORT) |
| | | @GetMapping("/template") |
| | | public ResponseEntity<ByteArrayResource> exportTemplate() { |
| | | byte[] file = IOUtils.resourceToByteArray("/templates/ä¸ä¼ æ°ä½å·¥åæ°æ®æ¨¡æ¿.xlsx"); |
| | | byte[] file = IOUtils.resourceToByteArray("/templates/æ°ä½å·¥åæ°æ®æ¨¡æ¿v1.0.xlsx"); |
| | | ByteArrayResource resource = new ByteArrayResource(file); |
| | | return ResponseEntity.ok() |
| | | .header("Access-Control-Expose-Headers", HttpHeaders.CONTENT_DISPOSITION) |
| | | .header(HttpHeaders.CONTENT_DISPOSITION, |
| | | String.format("attachment;filename=%s", URLEncoder.encode("æ°ä½å·¥åæ°æ®æ¨¡æ¿.xlsx", StandardCharsets.UTF_8))) |
| | | .header(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") |
| | |
| | | */ |
| | | @SneakyThrows |
| | | @Operation(summary = "ä¸è½½æ°ä½é¢æµæ°æ®å¯¼å
¥æ¨¡æ¿", description = "ä¸è½½æ°ä½é¢æµæ°æ®å¯¼å
¥æ¨¡æ¿") |
| | | @RequiresPermissions("gasPipeline:prediction:template") |
| | | @Log(title = "ä¸è½½æ°ä½é¢æµæ°æ®å¯¼å
¥æ¨¡æ¿", businessType = BusinessType.EXPORT) |
| | | // @RequiresPermissions("gasPipeline:prediction:template") |
| | | // @Log(title = "ä¸è½½æ°ä½é¢æµæ°æ®å¯¼å
¥æ¨¡æ¿", businessType = BusinessType.EXPORT) |
| | | @GetMapping("/template") |
| | | public ResponseEntity<ByteArrayResource> exportTemplate() { |
| | | byte[] file = IOUtils.resourceToByteArray("/templates/ä¸ä¼ æ°ä½é¢æµæ°æ®æ¨¡æ¿.xlsx"); |
| | | byte[] file = IOUtils.resourceToByteArray("/templates/æ°ä½é¢æµæ°æ®æ¨¡æ¿v1.0.xlsx"); |
| | | ByteArrayResource resource = new ByteArrayResource(file); |
| | | return ResponseEntity.ok() |
| | | .header("Access-Control-Expose-Headers", HttpHeaders.CONTENT_DISPOSITION) |
| | | .header(HttpHeaders.CONTENT_DISPOSITION, |
| | | String.format("attachment;filename=%s", URLEncoder.encode("æ°ä½é¢æµæ°æ®æ¨¡æ¿.xlsx", StandardCharsets.UTF_8))) |
| | | .header(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") |
| | |
| | | |
| | | import com.aps.common.core.annotation.Excel; |
| | | import com.aps.common.core.web.domain.BaseEntity; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import lombok.Data; |
| | | import org.apache.commons.lang3.builder.ToStringBuilder; |
| | | import org.apache.commons.lang3.builder.ToStringStyle; |
| | | import org.springframework.data.annotation.Id; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | |
| | | * @author hjy |
| | | * @date 2025-04-24 |
| | | */ |
| | | @Data |
| | | @Schema(description = "æ°ä½ç®¡è·¯äº§è½è§åå®ä½ç±»") |
| | | public class ApsGasPipelineCapacityPlan extends BaseEntity |
| | | { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @Id |
| | | @TableId(type = IdType.AUTO) |
| | | /** 主é®id */ |
| | | @JsonFormat(shape = JsonFormat.Shape.STRING) |
| | | @Schema(description = "主é®id", type = "Long") |
| | | private Long id; |
| | | |
| | |
| | | @Schema(description = "æ¥äº§åºåä½", type = "String") |
| | | private String dayProduceUnit; |
| | | |
| | | |
| | | /** äººåæ°é */ |
| | | @Excel(name = "äººåæ°é") |
| | | @Schema(description = "äººåæ°é", type = "BigDecimal") |
| | |
| | | @Schema(description = "å·¥å代ç ", type = "String") |
| | | private String orgCode; |
| | | |
| | | |
| | | /** è½¦é´ */ |
| | | @Excel(name = "车é´") |
| | | @Schema(description = "车é´", type = "String") |
| | | private String workshop; |
| | | |
| | | public void setOrgCode(String orgCode) |
| | | { |
| | | this.orgCode = orgCode; |
| | |
| | | |
| | | public enum PLAN_TASK_STATUS { |
| | | IN_PROCESS("InProgress","è¿è¡ä¸"), |
| | | FINISHED("Finished","宿"); |
| | | |
| | | FINISHED("Finished","宿"), |
| | | ERROR("Error","失败"); |
| | | private String code; |
| | | private String desc; |
| | | |
| | |
| | | package com.aps.core.mapper; |
| | | |
| | | import com.aps.core.domain.ApsGasPipelineCapacityPlan; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | |
| | | * @date 2025-04-24 |
| | | */ |
| | | @Mapper |
| | | public interface ApsGasPipelineCapacityPlanMapper |
| | | public interface ApsGasPipelineCapacityPlanMapper extends BaseMapper<ApsGasPipelineCapacityPlan> |
| | | { |
| | | /** |
| | | * æ¥è¯¢æ°ä½ç®¡è·¯äº§è½è§å |
| | |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteApsGasPipelineCapacityPlanByIds(Long[] ids); |
| | | |
| | | void deleteByDateAndFactory(String year, String month, String factory, String major); |
| | | } |
| | |
| | | String getNewBatchNumber(); |
| | | |
| | | @Transactional |
| | | void initRequireBatch(); |
| | | void initRequireBatch(String batchNumber); |
| | | } |
| | |
| | | package com.aps.core.service.ApsPlate; |
| | | |
| | | import java.util.List; |
| | | |
| | | import com.aps.core.domain.ApsPlate.ApsPlateStandardRequire; |
| | | import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireError; |
| | | |
| | | /** |
| | |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteApsPlateStandardRequireErrorById(Long id); |
| | | |
| | | void saveRequireError(ApsPlateStandardRequire require, String message); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | public boolean setBomDataToRedis(String orgCode); |
| | | |
| | | Integer getBomKeys(String orgCode); |
| | | } |
| | |
| | | * @return ç»æ |
| | | */ |
| | | public int deleteApsGasPipelineCapacityPlanById(Long id); |
| | | |
| | | void copyPlan(String date, String factory, String major, String toStart, String toEnd); |
| | | } |
| | |
| | | } |
| | | return true; |
| | | } |
| | | @Override |
| | | public Integer getBomKeys(String orgCode){ |
| | | return redisTemplate.keys("BOM:BOM_"+orgCode+"*").size(); |
| | | } |
| | | } |
| | |
| | | bomLineList.add(apsBom); |
| | | } |
| | | } |
| | | // else { |
| | | // bomLineList = selectApsBomLineList(plant, itemNumber); |
| | | // } |
| | | |
| | | return bomLineList; |
| | | } |
| | | } |
| | |
| | | import com.aps.core.domain.ApsGasPipelineCapacityPlan; |
| | | import com.aps.core.mapper.ApsGasPipelineCapacityPlanMapper; |
| | | import com.aps.core.service.IApsGasPipelineCapacityPlanService; |
| | | import lombok.SneakyThrows; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.sql.Timestamp; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | * @date 2025-04-24 |
| | | */ |
| | | @Service |
| | | public class ApsGasPipelineCapacityPlanServiceImpl implements IApsGasPipelineCapacityPlanService |
| | | { |
| | | public class ApsGasPipelineCapacityPlanServiceImpl implements IApsGasPipelineCapacityPlanService { |
| | | @Autowired |
| | | private ApsGasPipelineCapacityPlanMapper apsGasPipelineCapacityPlanMapper; |
| | | |
| | |
| | | * @return æ°ä½ç®¡è·¯äº§è½è§å |
| | | */ |
| | | @Override |
| | | public ApsGasPipelineCapacityPlan selectApsGasPipelineCapacityPlanById(Long id) |
| | | { |
| | | public ApsGasPipelineCapacityPlan selectApsGasPipelineCapacityPlanById(Long id) { |
| | | return apsGasPipelineCapacityPlanMapper.selectApsGasPipelineCapacityPlanById(id); |
| | | } |
| | | |
| | |
| | | * @return æ°ä½ç®¡è·¯äº§è½è§å |
| | | */ |
| | | @Override |
| | | public List<ApsGasPipelineCapacityPlan> selectApsGasPipelineCapacityPlanList(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) |
| | | { |
| | | public List<ApsGasPipelineCapacityPlan> selectApsGasPipelineCapacityPlanList(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) { |
| | | return apsGasPipelineCapacityPlanMapper.selectApsGasPipelineCapacityPlanList(apsGasPipelineCapacityPlan); |
| | | } |
| | | |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int insertApsGasPipelineCapacityPlan(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) |
| | | { |
| | | public int insertApsGasPipelineCapacityPlan(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) { |
| | | apsGasPipelineCapacityPlan.setCreateTime(DateUtils.getNowDate()); |
| | | apsGasPipelineCapacityPlan.setCreateBy(SecurityUtils.getUsername()); |
| | | return apsGasPipelineCapacityPlanMapper.insertApsGasPipelineCapacityPlan(apsGasPipelineCapacityPlan); |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int updateApsGasPipelineCapacityPlan(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) |
| | | { |
| | | public int updateApsGasPipelineCapacityPlan(ApsGasPipelineCapacityPlan apsGasPipelineCapacityPlan) { |
| | | apsGasPipelineCapacityPlan.setUpdateTime(DateUtils.getNowDate()); |
| | | apsGasPipelineCapacityPlan.setUpdateBy(SecurityUtils.getUsername()); |
| | | return apsGasPipelineCapacityPlanMapper.updateApsGasPipelineCapacityPlan(apsGasPipelineCapacityPlan); |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int deleteApsGasPipelineCapacityPlanByIds(Long[] ids) |
| | | { |
| | | public int deleteApsGasPipelineCapacityPlanByIds(Long[] ids) { |
| | | return apsGasPipelineCapacityPlanMapper.deleteApsGasPipelineCapacityPlanByIds(ids); |
| | | } |
| | | |
| | |
| | | * @return ç»æ |
| | | */ |
| | | @Override |
| | | public int deleteApsGasPipelineCapacityPlanById(Long id) |
| | | { |
| | | public int deleteApsGasPipelineCapacityPlanById(Long id) { |
| | | return apsGasPipelineCapacityPlanMapper.deleteApsGasPipelineCapacityPlanById(id); |
| | | } |
| | | |
| | | @SneakyThrows |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void copyPlan(String date, String factory, String major, String toStart, String toEnd) { |
| | | |
| | | String[] dtSrc = date.split("-"); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); |
| | | Calendar dtStart = Calendar.getInstance(); |
| | | dtStart.setTime(sdf.parse(toStart)); |
| | | dtStart.set(Calendar.DAY_OF_MONTH, 1); |
| | | Calendar dtEnd = Calendar.getInstance(); |
| | | dtEnd.setTime(sdf.parse(toEnd)); |
| | | dtEnd.set(Calendar.DAY_OF_MONTH, 2); |
| | | |
| | | ApsGasPipelineCapacityPlan plan = new ApsGasPipelineCapacityPlan(); |
| | | plan.setYear(Integer.valueOf(dtSrc[0]).toString()); |
| | | plan.setMonth(Integer.valueOf(dtSrc[1]).toString()); |
| | | plan.setOrgCode(factory); |
| | | plan.setMajor(major); |
| | | List<ApsGasPipelineCapacityPlan> templatePlans = apsGasPipelineCapacityPlanMapper.selectApsGasPipelineCapacityPlanList(plan); |
| | | templatePlans.forEach(p -> { |
| | | p.setCreateBy(SecurityUtils.getUsername()); |
| | | p.setCreateTime(new Date()); |
| | | p.setUpdateBy(null); |
| | | p.setUpdateTime(null); |
| | | // apsGasPipelineCapacityPlanMapper.insertApsGasPipelineCapacityPlan(p); |
| | | }); |
| | | |
| | | while (dtStart.before(dtEnd)) { |
| | | String year = dtStart.get(Calendar.YEAR) + ""; |
| | | String month = (dtStart.get(Calendar.MONTH) + 1) + ""; |
| | | apsGasPipelineCapacityPlanMapper.deleteByDateAndFactory( |
| | | year, |
| | | month, |
| | | factory, |
| | | major |
| | | ); |
| | | templatePlans.forEach(p -> { |
| | | p.setId(null); |
| | | p.setYear(year); |
| | | p.setMonth(month); |
| | | // apsGasPipelineCapacityPlanMapper.insertApsGasPipelineCapacityPlan(p); |
| | | }); |
| | | apsGasPipelineCapacityPlanMapper.insert(templatePlans); |
| | | |
| | | dtStart.add(Calendar.MONTH, 1); |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | public AjaxResult generatorPlan() |
| | | { |
| | | public AjaxResult generatorPlan() { |
| | | String plateOrderPlanKey = PLATE_ORDER_PLAN.getKey(); |
| | | boolean existsLock = redisLockUtils.existLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_PLAN.getCode()); |
| | | if (existsLock){ |
| | |
| | | if (existsDbTask){ |
| | | return AjaxResult.warn("é£éå·¥å计å任塿£å¨æ§è¡ä¸!!"); |
| | | } |
| | | String currentBatchNum = requireBatchService.getNewBatchNumber(); |
| | | try { |
| | | redisLockUtils.getLock(plateOrderPlanKey,PLAN_TASK_TYPE.PLATE_PLAN.getCode(), 3*60L); |
| | | String batchNum= requireBatchService.getNewBatchNumber(); |
| | | this.savePlanTask(batchNum); |
| | | apsPlateStandardRequireService.generatorPlan(batchNum); |
| | | this.updateTaskStatus(batchNum, PLAN_TASK_STATUS.FINISHED); |
| | | redisLockUtils.getLock(plateOrderPlanKey, PLAN_TASK_TYPE.PLATE_PLAN.getCode(), 15 * 60L); |
| | | this.savePlanTask(currentBatchNum); |
| | | //Thread.sleep(60*1000); |
| | | apsPlateStandardRequireService.generatorPlan(currentBatchNum); |
| | | /*æ¸
é¤å·²ç»åå¨ç å·¥å计åå®å·¥æ¶é´*/ |
| | | orderEndDayMapper.batchRemove(); |
| | | log.info("计å任塿§è¡å®æ!"+batchNum); |
| | | this.updateTaskStatus(currentBatchNum, PLAN_TASK_STATUS.FINISHED); |
| | | log.info("计å任塿§è¡å®æ!" + currentBatchNum); |
| | | return success(); |
| | | }catch (Exception e){ |
| | | redisLockUtils.releaseLock(plateOrderPlanKey,PLAN_TASK_TYPE.PLATE_PLAN.getCode()); |
| | | log.error("计å任塿§è¡å¤±è´¥!"+e.getMessage()); |
| | | this.updateTaskStatus(currentBatchNum, PLAN_TASK_STATUS.ERROR); |
| | | return AjaxResult.error("计å任塿§è¡å¤±è´¥!"+e.getMessage()); |
| | | }finally { |
| | | redisLockUtils.releaseLock(plateOrderPlanKey,PLAN_TASK_TYPE.PLATE_PLAN.getCode()); |
| | |
| | | import com.aps.core.domain.ApsPlate.ApsPlateProcessShopStat; |
| | | import com.aps.core.domain.ApsPlate.ApsPlateProcessStat; |
| | | import com.aps.core.mapper.*; |
| | | import com.aps.core.service.ApsPlate.IApsPlateProcessStatService; |
| | | import com.aps.system.api.domain.SysDictData; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.databind.node.ObjectNode; |
| | |
| | | |
| | | @Resource |
| | | private ApsPlatePlanMapper apsPlatePlanMapper; |
| | | @Autowired |
| | | private IApsPlateProcessStatService apsPlateProcessStatService; |
| | | |
| | | |
| | | |
| | | /** |
| | |
| | | @Override |
| | | public void saveShopStat() { |
| | | try { |
| | | apsPlateProcessStatService.savePlateProcessStat(); |
| | | // å¼å§ä¹åå
å 餿æå岿°æ® |
| | | apsPlateProcessShopStatMapper.deleteAll(); |
| | | |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.*; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import cn.hutool.core.util.IdUtil; |
| | | import com.aps.common.core.utils.uuid.IdUtils; |
| | | import com.aps.common.security.utils.SecurityUtils; |
| | | import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomOrderDetail; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import com.aps.core.mapper.ApsPlateProcessStatMapper; |
| | |
| | | public void savePlateProcessStat() { |
| | | String batchNum = IdUtils.fastSimpleUUID(); |
| | | List<ApsPlateProcessStat> tempList = apsPlateProcessStatMapper.queryTempStat(); |
| | | ApsPlateProcessStat apsPlateProcessStat = tempList.stream().filter(x -> x.getWorkOrderNo().equals("MO-250409003498")).findFirst().get(); |
| | | Map<String, List<ApsPlateProcessStat>> groupByOrderNo = tempList.stream().collect(groupingBy(ApsPlateProcessStat::getWorkOrderNo)); |
| | | Boolean hasBefore = false; |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | List<ApsPlateProcessStat> totalList=new ArrayList<>(); |
| | | for (Map.Entry<String, List<ApsPlateProcessStat>> entry : groupByOrderNo.entrySet()) { |
| | | List<ApsPlateProcessStat> statPerOrder = entry.getValue(); |
| | | /*num ä¸ºæ ¹æ®å®å·¥æ¶é´æåºåºçåºå·ï¼ææ¤æåºï¼å¯ä¿è¯æ¯æå®å·¥æ¶é´ååæå*/ |
| | |
| | | } |
| | | } |
| | | last = stat; |
| | | apsPlateProcessStatMapper.insertApsPlateProcessStat(stat); |
| | | totalList.add(stat); |
| | | //apsPlateProcessStatMapper.insertApsPlateProcessStat(stat); |
| | | } |
| | | hasBefore=false; |
| | | |
| | | } |
| | | apsPlateProcessStatMapper.removeOtherStat(batchNum); |
| | | |
| | | if(!totalList.isEmpty()){ |
| | | int batchSize = 1000; |
| | | totalList.forEach(x->x.setId(String.valueOf(IdUtil.getSnowflakeNextId()))); |
| | | for (int i = 0; i < totalList.size(); i += batchSize) { |
| | | int end = Math.min(i + batchSize, totalList.size()); |
| | | List<ApsPlateProcessStat> batch = totalList.subList(i, end); |
| | | apsPlateProcessStatMapper.batchInsertPlateStat(batch); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | @Transactional |
| | | @Override |
| | | public void initRequireBatch() { |
| | | ApsPlateStandardRequireBatch batch=apsPlateStandardRequireBatchMapper.selectLastRequireBatch(); |
| | | if (batch!=null){ |
| | | String batchNumber = batch.getBatchNumber(); |
| | | apsPlateStandardRequireMapper.deleteLastPatch(batchNumber); |
| | | apsPlateStandardRequireBomOrderDetailMapper.deleteLastPatch(batchNumber); |
| | | apsPlateStandardRequireBomStockDetailMapper.deleteLastPatch(batchNumber); |
| | | apsPlateStandardRequireErrorMapper.deleteLastPatch(batchNumber); |
| | | public void initRequireBatch(String currentBatchNumber) { |
| | | apsPlateStandardRequireMapper.deleteLastPatch(currentBatchNumber); |
| | | apsPlateStandardRequireBomOrderDetailMapper.deleteLastPatch(currentBatchNumber); |
| | | apsPlateStandardRequireBomStockDetailMapper.deleteLastPatch(currentBatchNumber); |
| | | apsPlateStandardRequireErrorMapper.deleteLastPatch(currentBatchNumber); |
| | | apsPlatePlanMapper.initUnMatchQty(); |
| | | apsMaterialStorageManagementMapper.initRemainderStock(); |
| | | } |
| | | } |
| | | } |
| | |
| | | package com.aps.core.service.impl.ApsPlate; |
| | | |
| | | import java.util.List; |
| | | |
| | | import cn.hutool.core.util.IdUtil; |
| | | import com.aps.common.core.utils.DateUtils; |
| | | import com.aps.common.security.utils.SecurityUtils; |
| | | import com.aps.core.domain.ApsPlate.ApsPlateStandardRequire; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import com.aps.core.mapper.ApsPlateStandardRequireErrorMapper; |
| | |
| | | { |
| | | return apsPlateStandardRequireErrorMapper.deleteApsPlateStandardRequireErrorById(id); |
| | | } |
| | | |
| | | @Override |
| | | public void saveRequireError(ApsPlateStandardRequire require, String message) { |
| | | ApsPlateStandardRequireError data = ApsPlateStandardRequireError.builder() |
| | | .id(IdUtil.getSnowflakeNextId()) |
| | | .requireId(require.getId()) |
| | | .batchNumber(require.getBatchNumber()) |
| | | .docNum(require.getDocNum()) |
| | | .itemNum(require.getBomLineCode()) |
| | | .orgCode(require.getOrgCode()) |
| | | .message(message) |
| | | .delFlag("0") |
| | | .build(); |
| | | data.setCreateBy(SecurityUtils.getUsername()); |
| | | data.setCreateTime(DateUtils.getNowDate()); |
| | | apsPlateStandardRequireErrorMapper.insertApsPlateStandardRequireError(data); |
| | | } |
| | | } |
| | |
| | | package com.aps.core.service.impl.ApsPlate; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | |
| | | import cn.hutool.core.util.IdUtil; |
| | | import com.aps.common.core.utils.DateUtils; |
| | | import com.aps.common.security.utils.DictUtils; |
| | | import com.aps.common.security.utils.SecurityUtils; |
| | | import com.aps.core.domain.*; |
| | | import com.aps.core.domain.ApsPlate.ApsPlatePlan; |
| | | import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomOrderDetail; |
| | | import com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomStockDetail; |
| | | import com.aps.core.domain.ApsBom; |
| | | import com.aps.core.domain.ApsMaterialStorageManagement; |
| | | import com.aps.core.domain.ApsPlate.*; |
| | | import com.aps.core.domain.ApsStandardProcessRouteLine; |
| | | import com.aps.core.mapper.*; |
| | | import com.aps.core.service.*; |
| | | import com.aps.core.service.ApsPlate.*; |
| | | import com.aps.core.service.IApsBomService; |
| | | import com.aps.core.service.IApsMaterialStorageManagementService; |
| | | import com.aps.core.service.IApsStandardProcessRouteLineService; |
| | | import com.aps.system.api.domain.SysDictData; |
| | | import jakarta.annotation.Resource; |
| | | import com.aps.core.domain.ApsPlate.ApsPlateStandardRequire; |
| | | import com.aps.core.mapper.ApsPlateStandardRequireMapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * é£éå·¥åæ åéæ±Serviceä¸å¡å±å¤ç |
| | |
| | | private ApsPlateStandardRequireMapper apsPlateStandardRequireMapper; |
| | | |
| | | @Resource |
| | | private ApsPlateStandardRequireBatchMapper requireBatchMapper; |
| | | |
| | | @Resource |
| | | ApsPlatePlanMapper platePlanMapper; |
| | | |
| | | @Resource |
| | | ApsBomHeaderMapper bomHeaderMapper; |
| | | @Resource |
| | | IApsBomService bomLineService; |
| | | |
| | | @Resource |
| | | ApsMaterialStorageManagementMapper itemStorageMapper; |
| | | |
| | | @Resource |
| | | ApsPlateStandardRequireBomStockDetailMapper plateBomStockDetailMapper; |
| | | |
| | | @Resource |
| | | IApsPlateStandardRequireBomStockDetailService bomStockDetailService; |
| | | @Resource |
| | | ApsStandardProcessRouteHeaderMapper standardProcessRouteHeaderMapper; |
| | | |
| | | @Resource |
| | | ApsStandardProcessRouteLineMapper ApsStandardProcessRouteLineMapper; |
| | | |
| | | @Resource |
| | | ApsPlateStandardRequireBomOrderDetailMapper plateBomOrderDetailMapper; |
| | |
| | | IApsStandardProcessRouteLineService routeLineService; |
| | | |
| | | @Resource |
| | | IApsPlateStandardRequireBatchService requireBatchService; |
| | | IApsPlateStandardRequireErrorService requireErrorService; |
| | | @Resource |
| | | private IApsMaterialStorageManagementService storageManagementService; |
| | | |
| | | @Resource |
| | | IApsPlateStandardRequireBatchService requireBatchService; |
| | | /** |
| | | * æ¥è¯¢é£éå·¥åæ åéæ± |
| | | * |
| | |
| | | @Transactional |
| | | @Override |
| | | public void generatorPlan(String batchNum){ |
| | | |
| | | /*åå§åæ°æ®*/ |
| | | requireBatchService.initRequireBatch(); |
| | | requireBatchService.initRequireBatch(batchNum); |
| | | /*å®ä¹å·¥å为åé */ |
| | | String plantCode="FORTUNA"; |
| | | /*è·åé£é主åä¿¡æ¯*/ |
| | |
| | | if (itemStorageOpt.isPresent()) { |
| | | |
| | | ApsMaterialStorageManagement itemStorage=itemStorageOpt.get(); |
| | | BigDecimal remainderStock =itemStorage.getRemainderStock(); |
| | | BigDecimal remainderStock =BigDecimal.ZERO; |
| | | if(null!=itemStorage.getRemainderStock()){ |
| | | remainderStock = itemStorage.getRemainderStock(); |
| | | } |
| | | /*计ç®åéæ± é»è®¤=éæ±æ°é*/ |
| | | if (remainderStock.compareTo(BigDecimal.ZERO) == 0) { |
| | | require.setNetRequirement(require.getBomUseAmount()); |
| | |
| | | import com.aps.core.domain.ApsStandardProcessRouteHeader; |
| | | import com.aps.core.mapper.ApsPlateStandardRequireErrorMapper; |
| | | import com.aps.core.mapper.ApsStandardProcessRouteHeaderMapper; |
| | | import com.aps.core.service.ApsPlate.IApsPlateStandardRequireErrorService; |
| | | import jakarta.annotation.Resource; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | |
| | | @Resource |
| | | ApsStandardProcessRouteHeaderMapper standardProcessRouteHeaderMapper; |
| | | @Resource |
| | | ApsPlateStandardRequireErrorMapper requireErrorMapper; |
| | | IApsPlateStandardRequireErrorService requireErrorService; |
| | | @Resource |
| | | private RedisTemplate redisTemplate; |
| | | |
| | |
| | | ret.setRouteTime(totalRouteTime); |
| | | ret.setRouteId(routeHeader.getRouteId()); |
| | | }else { |
| | | saveRequireError(require,"æ åå·¥èºè·¯çº¿ä¸åå¨"); |
| | | requireErrorService.saveRequireError(require,"æ åå·¥èºè·¯çº¿ä¸åå¨"); |
| | | } |
| | | // è¿åæ»å·¥æ¶ |
| | | return ret; |
| | |
| | | ret.setRouteTime(totalRouteTime.multiply(netRequirement)); |
| | | return ret; |
| | | } else { |
| | | saveRequireError(require,"æ åå·¥èºè·¯çº¿ä¸åå¨"); |
| | | requireErrorService.saveRequireError(require,"æ åå·¥èºè·¯çº¿ä¸åå¨"); |
| | | /*// æ¥è¯¢æ åå·¥èºè·¯çº¿å¤´é¨ä¿¡æ¯ |
| | | Optional<ApsStandardProcessRouteHeader> firstProcessRoute = standardProcessRouteHeaderMapper.queryStandardProcessRouteHeaderByPlantAndItemCode(plant, itemCode).stream().findFirst(); |
| | | if (firstProcessRoute.isPresent()) { |
| | |
| | | } |
| | | } |
| | | |
| | | private void saveRequireError(ApsPlateStandardRequire require,String message) { |
| | | ApsPlateStandardRequireError data = ApsPlateStandardRequireError.builder() |
| | | .id(IdUtil.getSnowflakeNextId()) |
| | | .requireId(require.getId()) |
| | | .batchNumber(require.getBatchNumber()) |
| | | .docNum(require.getDocNum()) |
| | | .itemNum(require.getBomLineCode()) |
| | | .orgCode(require.getOrgCode()) |
| | | .message(message) |
| | | .delFlag("0") |
| | | .build(); |
| | | data.setCreateBy(SecurityUtils.getUsername()); |
| | | data.setCreateTime(DateUtils.getNowDate()); |
| | | requireErrorMapper.insertApsPlateStandardRequireError(data); |
| | | } |
| | | } |
| | |
| | | LEFT JOIN aps_bom_line b on a.bom_header_id=b.bom_header_id |
| | | LEFT JOIN aps_material_management d on b.item_code=d.item_number |
| | | LEFT JOIN aps_material_management c on a.item_code=c.item_number |
| | | <where> |
| | | where d.material_type='å¶é ä»¶' and c.material_type='å¶é ä»¶' |
| | | <if test="orgCode != null and orgCode != ''"> |
| | | and a.org_code=#{orgCode} and d.applicable_factories=#{orgCode} |
| | | </if> |
| | | and d.material_type='å¶é ä»¶' |
| | | and c.material_type='å¶é ä»¶' |
| | | </where> |
| | | ORDER BY mainItemCode |
| | | </select> |
| | | </mapper> |
| | |
| | | <result property="year" column="year" /> |
| | | <result property="month" column="month" /> |
| | | <result property="major" column="major" /> |
| | | <result property="workshop" column="workshop" /> |
| | | <result property="dayProduceType" column="day_produce_type" /> |
| | | <result property="dayProduceNum" column="day_produce_num" /> |
| | | <result property="dayProduceUnit" column="day_produce_unit" /> |
| | |
| | | </resultMap> |
| | | |
| | | <sql id="selectApsGasPipelineCapacityPlanVo"> |
| | | select id, process_name, year, month, major, day_produce_type, day_produce_num, day_produce_unit, personnel_number, day_produce_all_num, days, month_produce_all_num, remark, create_by, create_time, update_by, update_time, org_code from aps_gas_pipeline_capacity_plan |
| | | select id, process_name, year, month, major, workshop, day_produce_type, day_produce_num, day_produce_unit, personnel_number, day_produce_all_num, days, month_produce_all_num, remark, create_by, create_time, update_by, update_time, org_code from aps_gas_pipeline_capacity_plan |
| | | </sql> |
| | | |
| | | <select id="selectApsGasPipelineCapacityPlanList" parameterType="com.aps.core.domain.ApsGasPipelineCapacityPlan" resultMap="ApsGasPipelineCapacityPlanResult"> |
| | |
| | | <if test="year != null and year != ''"> and year = #{year}</if> |
| | | <if test="month != null and month != ''"> and month = #{month}</if> |
| | | <if test="major != null and major != ''"> and major = #{major}</if> |
| | | <if test="workshop != null and workshop != ''"> and workshop = #{workshop}</if> |
| | | <if test="dayProduceType != null and dayProduceType != ''"> and day_produce_type = #{dayProduceType}</if> |
| | | <if test="dayProduceNum != null "> and day_produce_num = #{dayProduceNum}</if> |
| | | <if test="dayProduceUnit != null and dayProduceUnit != ''"> and day_produce_unit = #{dayProduceUnit}</if> |
| | |
| | | <if test="year != null">year,</if> |
| | | <if test="month != null">month,</if> |
| | | <if test="major != null">major,</if> |
| | | <if test="workshop != null">workshop,</if> |
| | | <if test="dayProduceType != null">day_produce_type,</if> |
| | | <if test="dayProduceNum != null">day_produce_num,</if> |
| | | <if test="dayProduceUnit != null">day_produce_unit,</if> |
| | |
| | | <if test="year != null">#{year},</if> |
| | | <if test="month != null">#{month},</if> |
| | | <if test="major != null">#{major},</if> |
| | | <if test="workshop != null">workshop,</if> |
| | | <if test="dayProduceType != null">#{dayProduceType},</if> |
| | | <if test="dayProduceNum != null">#{dayProduceNum},</if> |
| | | <if test="dayProduceUnit != null">#{dayProduceUnit},</if> |
| | |
| | | <if test="year != null">year = #{year},</if> |
| | | <if test="month != null">month = #{month},</if> |
| | | <if test="major != null">major = #{major},</if> |
| | | <if test="workshop != null">workshop,</if> |
| | | <if test="dayProduceType != null">day_produce_type = #{dayProduceType},</if> |
| | | <if test="dayProduceNum != null">day_produce_num = #{dayProduceNum},</if> |
| | | <if test="dayProduceUnit != null">day_produce_unit = #{dayProduceUnit},</if> |
| | |
| | | #{id} |
| | | </foreach> |
| | | </delete> |
| | | |
| | | <delete id="deleteByDateAndFactory" > |
| | | delete from aps_gas_pipeline_capacity_plan |
| | | where year = #{year} |
| | | and month = #{month} |
| | | and org_code = #{factory} |
| | | and major = #{major} |
| | | </delete> |
| | | </mapper> |
| | |
| | | production_quantity, |
| | | standard_time, |
| | | process_total_time, |
| | | process_plan_start_day, |
| | | process_plan_end_day, |
| | | order_plan_end_day, |
| | | batch_number, |
| | | create_by, |
| | | del_flag |
| | | del_flag, |
| | | warning |
| | | ) |
| | | values |
| | | <foreach collection="list" item="item" index="index" separator=","> |
| | |
| | | #{item.productionQuantity}, |
| | | #{item.standardTime}, |
| | | #{item.processTotalTime}, |
| | | #{item.processPlanStartDay}, |
| | | #{item.processPlanEndDay}, |
| | | #{item.orderPlanEndDay}, |
| | | #{item.batchNumber}, |
| | | #{item.createBy}, |
| | | '0' |
| | | '0', |
| | | #{item.warning} |
| | | ) |
| | | </foreach> |
| | | </insert> |
| | |
| | | </delete> |
| | | |
| | | <update id="deleteLastPatch" parameterType="String"> |
| | | update aps_plate_standard_require_bom_order_detail set del_flag = '1' where batch_number = #{batchNumber} |
| | | update aps_plate_standard_require_bom_order_detail set del_flag = '1' where del_flag = '0' and batch_number != #{batchNumber} |
| | | </update> |
| | | |
| | | <insert id="batchInsert" parameterType="com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomOrderDetail"> |
| | |
| | | </delete> |
| | | |
| | | <update id="deleteLastPatch" parameterType="String"> |
| | | update aps_plate_standard_require_bom_stock_detail set del_flag = '1' where batch_number = #{batchNumber} |
| | | update aps_plate_standard_require_bom_stock_detail |
| | | set del_flag = '1' |
| | | where del_flag = '0' and batch_number != #{batchNumber} |
| | | </update> |
| | | |
| | | <insert id="batchInsert" parameterType="com.aps.core.domain.ApsPlate.ApsPlateStandardRequireBomStockDetail"> |
| | |
| | | </foreach> |
| | | </delete> |
| | | <update id="deleteLastPatch" parameterType="String"> |
| | | update aps_plate_standard_require_error set del_flag = '1' where batch_number = #{batchNumber} |
| | | update aps_plate_standard_require_error |
| | | set del_flag = '1' |
| | | where del_flag = '0' and batch_number != #{batchNumber} |
| | | </update> |
| | | </mapper> |
| | |
| | | </foreach> |
| | | </insert> |
| | | <update id="deleteLastPatch" parameterType="String"> |
| | | update aps_plate_standard_require set del_flag = '1' where batch_number = #{batchNumber} |
| | | update aps_plate_standard_require set del_flag = '1' where del_flag = '0' and batch_number != #{batchNumber} |
| | | </update> |
| | | </mapper> |
| | |
| | | package com.aps.job.service.impl; |
| | | |
| | | import cn.hutool.core.collection.ListUtil; |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.alibaba.fastjson2.JSONArray; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | |
| | | deleteAllApsWeldSeamStandardJob(); |
| | | |
| | | // æ¹éæå
¥æ°æ°æ® |
| | | batchInsertApsWeldSeamStandardJob(jobList); |
| | | List<List<ApsWeldSeamStandardJob>> dataGroupInterface = ListUtil.split(jobList, 1000); |
| | | for (List<ApsWeldSeamStandardJob> data : dataGroupInterface) { |
| | | batchInsertApsWeldSeamStandardJob(data); |
| | | } |
| | | |
| | | // åæ¥æ°æ®å°ä¸å¡è¡¨ |
| | | syncToBizTable(jobList); |
| | | |
| | | List<List<ApsWeldSeamStandardJob>> dataGroup = ListUtil.split(jobList, 1000); |
| | | for (List<ApsWeldSeamStandardJob> data : dataGroup) { |
| | | syncToBizTable(data); |
| | | } |
| | | return true; |
| | | } catch (Exception e) { |
| | | log.error("åæ¥ç©ææ åçç¼æ°æ®å¼å¸¸", e); |
| | |
| | | sysJobLog.setStartTime(startTime); |
| | | sysJobLog.setStopTime(new Date()); |
| | | long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime(); |
| | | sysJobLog.setJobMessage(sysJobLog.getJobName() + " æ»å
±èæ¶ï¼" + runMs + "毫ç§"); |
| | | long totalSeconds = runMs / 1000; |
| | | long minutes = totalSeconds / 60; |
| | | long seconds = totalSeconds % 60; |
| | | String formattedTime = minutes + "å" + seconds + "ç§"; |
| | | sysJobLog.setJobMessage(sysJobLog.getJobName() + " æ»å
±èæ¶ï¼" +formattedTime); |
| | | if (e != null) |
| | | { |
| | | sysJobLog.setStatus("1"); |