diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/PurchaseAccessoryController.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/PurchaseAccessoryController.java new file mode 100644 index 00000000..cead3540 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/controller/PurchaseAccessoryController.java @@ -0,0 +1,47 @@ +package com.bonus.sgzb.material.controller; + +import com.bonus.sgzb.common.core.utils.poi.ExcelUtil; +import com.bonus.sgzb.common.core.web.controller.BaseController; +import com.bonus.sgzb.common.core.web.domain.AjaxResult; +import com.bonus.sgzb.common.core.web.page.TableDataInfo; +import com.bonus.sgzb.common.log.annotation.Log; +import com.bonus.sgzb.common.log.enums.BusinessType; +import com.bonus.sgzb.material.domain.PurchaseCheckInfo; +import com.bonus.sgzb.material.domain.PurchaseInput; +import com.bonus.sgzb.material.domain.PurchasePartInfo; +import com.bonus.sgzb.material.service.IPurchaseAccessoryService; +import com.bonus.sgzb.material.service.IPurchaseCheckInfoService; +import com.bonus.sgzb.material.vo.NoticeInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** +* @description 新购配件任务 +* @author hay +* @date 2024/1/16 11:28 +*/ +@RestController +@Api(value = "新购配件任务") +@RequestMapping("/purchaseAccessory") +public class PurchaseAccessoryController extends BaseController +{ + @Autowired + private IPurchaseAccessoryService purchaseAccessoryService; + + /** + * 新增新购配件任务 + */ + @ApiOperation("新增新购配件任务") + @Log(title = "新购配件任务", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody PurchasePartInfo purchasePartInfo) + { + return toAjax(purchaseAccessoryService.insertPurchaseAccessory(purchasePartInfo)); + } + +} diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/PurchasePartDetails.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/PurchasePartDetails.java new file mode 100644 index 00000000..0fb36cb9 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/PurchasePartDetails.java @@ -0,0 +1,342 @@ +package com.bonus.sgzb.material.domain; + +import com.bonus.sgzb.common.core.web.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; +import java.util.Date; + +/** +* @description 新购配件任务详细 purchase_part_details对象 +* @author hay +* @date 2024/1/16 13:54 +*/ +public class PurchasePartDetails extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键id */ + private Long id; + + /** 任务ID */ + @ApiModelProperty(value = "任务ID") + private Long taskId; + + /** 规格id */ + @ApiModelProperty(value = "规格id") + private Long partId; + + /** 采购单价 */ + @ApiModelProperty(value = "采购单价") + private String purchasePrice; + + /** 采购数量 */ + @ApiModelProperty(value = "采购数量") + private Long purchaseNum; + + /** 验收数量 */ + @ApiModelProperty(value = "验收数量") + private BigDecimal checkNum; + + /** 绑定数量 */ + @ApiModelProperty(value = "绑定数量") + private Integer bindNum; + + /** 验收结论 */ + @ApiModelProperty(value = "验收结论") + private String checkResult; + + /** 供应商id */ + @ApiModelProperty(value = "供应商id") + private Long supplierId; + + /** 供应商id */ + @ApiModelProperty(value = "供应商名称") + private String supplier; + + /** 验收状态0,未验收 1,已验收 2,待通知 */ + @ApiModelProperty(value = "验收状态0,未验收 1,已验收 2,待通知") + private Integer status; + + /** 出厂日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "出厂日期") + private Date productionTime; + + /** 入库数量 */ + @ApiModelProperty(value = "入库数量") + private BigDecimal inputNum; + + /** 验收图片 */ + @ApiModelProperty(value = "验收图片") + private String checkUrlName; + + /** 验收图片名称 */ + @ApiModelProperty(value = "验收图片名称") + private String checkUrl; + + /** 验收附件名称 */ + @ApiModelProperty(value = "验收附件名称") + private String fileName; + + /** 验收附件 */ + @ApiModelProperty(value = "验收附件") + private String fileUrl; + + /** 数据所属组织 */ + @ApiModelProperty(value = "数据所属组织") + private Long companyId; + + /** + * 规格型号 + */ + @ApiModelProperty(value = "规格型号") + private String specificationType; + + @ApiModelProperty(value = "规格型号") + private String typeName; + + @ApiModelProperty(value = "单位") + private String unitName; + + @ApiModelProperty(value = "机具类型名称") + private String machineTypeName; + + @ApiModelProperty(value = "管理方式(0编号 1计数)") + private String manageType; + + @ApiModelProperty(value = "采购单号") + private String code; + + @ApiModelProperty(value = "关键字筛选") + private String keyWord; + + public void setTaskId(Long taskId) + { + this.taskId = taskId; + } + + public Long getTaskId() + { + return taskId; + } + + public Long getPartId() { + return partId; + } + + public void setPartId(Long partId) { + this.partId = partId; + } + + public void setPurchasePrice(String purchasePrice) + { + this.purchasePrice = purchasePrice; + } + + public String getPurchasePrice() + { + return purchasePrice; + } + public void setPurchaseNum(Long purchaseNum) + { + this.purchaseNum = purchaseNum; + } + + public Long getPurchaseNum() + { + return purchaseNum; + } + public void setSupplierId(Long supplierId) + { + this.supplierId = supplierId; + } + + public Long getSupplierId() + { + return supplierId; + } + public void setProductionTime(Date productionTime) + { + this.productionTime = productionTime; + } + + public Date getProductionTime() + { + return productionTime; + } + public void setCompanyId(Long companyId) + { + this.companyId = companyId; + } + + public Long getCompanyId() + { + return companyId; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSpecificationType() { + return specificationType; + } + + public void setSpecificationType(String specificationType) { + this.specificationType = specificationType; + } + + public String getSupplier() { + return supplier; + } + + public void setSupplier(String supplier) { + this.supplier = supplier; + } + + public BigDecimal getCheckNum() { + return checkNum; + } + + public void setCheckNum(BigDecimal checkNum) { + this.checkNum = checkNum; + } + + public String getCheckResult() { + return checkResult; + } + + public void setCheckResult(String checkResult) { + this.checkResult = checkResult; + } + + public String getCheckUrlName() { + return checkUrlName; + } + + public void setCheckUrlName(String checkUrlName) { + this.checkUrlName = checkUrlName; + } + + public String getCheckUrl() { + return checkUrl; + } + + public void setCheckUrl(String checkUrl) { + this.checkUrl = checkUrl; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileUrl() { + return fileUrl; + } + + public void setFileUrl(String fileUrl) { + this.fileUrl = fileUrl; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getMachineTypeName() { + return machineTypeName; + } + + public void setMachineTypeName(String machineTypeName) { + this.machineTypeName = machineTypeName; + } + + public BigDecimal getInputNum() { + return inputNum; + } + + public void setInputNum(BigDecimal inputNum) { + this.inputNum = inputNum; + } + + public String getManageType() { + return manageType; + } + + public void setManageType(String manageType) { + this.manageType = manageType; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getKeyWord() { + return keyWord; + } + + public void setKeyWord(String keyWord) { + this.keyWord = keyWord; + } + + public Integer getBindNum() { + return bindNum; + } + + public void setBindNum(Integer bindNum) { + this.bindNum = bindNum; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public String getUnitName() { + return unitName; + } + + public void setUnitName(String unitName) { + this.unitName = unitName; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("taskId", getTaskId()) + .append("partId", getPartId()) + .append("purchasePrice", getPurchasePrice()) + .append("purchaseNum", getPurchaseNum()) + .append("supplierId", getSupplierId()) + .append("createBy", getCreateBy()) + .append("productionTime", getProductionTime()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("companyId", getCompanyId()) + .toString(); + } +} diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/PurchasePartInfo.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/PurchasePartInfo.java new file mode 100644 index 00000000..be3d93f9 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/domain/PurchasePartInfo.java @@ -0,0 +1,306 @@ +package com.bonus.sgzb.material.domain; + +import com.bonus.sgzb.common.core.annotation.Excel; +import com.bonus.sgzb.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.List; + +/** +* @description 新购配件任务 +* @author hay +* @date 2024/1/16 13:52 +*/ +public class PurchasePartInfo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键id */ + @ApiModelProperty(value = "主键id") + private Long id; + + /** 任务ID */ + @ApiModelProperty(value = "任务ID") + private Long taskId; + + @ApiModelProperty(value = "采购单号") + @Excel(name = "采购单号") + private String code; + + /** 采购日期 */ + @ApiModelProperty(value = "采购日期") + @Excel(name = "采购日期") + private String purchaseTime; + + /** 到货日期 */ + @ApiModelProperty(value = "到货日期") + @Excel(name = "到货日期") + private String arrivalTime; + + /** 采购员名称 */ + @ApiModelProperty(value = "采购员名称") + @Excel(name = "采购员") + private String purchaserName; + + /** 采购员 */ + @ApiModelProperty(value = "采购员") + private Long purchaser; + + /** 采购机具设备名称 */ + @ApiModelProperty(value = "采购机具设备") + @Excel(name = "机具类型名称") + private String purchasingTypeName; + + /** 采购机具设备型号 */ + @ApiModelProperty(value = "规格型号") + @Excel(name = "规格型号") + private String purchasingTypeCode; + + /** 管理模式 */ + @ApiModelProperty(value = "管理模式") + @Excel(name = "管理模式",readConverterExp = "0=编码管理,1=计数管理") + private String manageType; + + /** 机具厂家 */ + @ApiModelProperty(value = "机具厂家") + @Excel(name = "机具厂家") + private String supplier; + + /** 采购数量 */ + @ApiModelProperty(value = "采购数量") + @Excel(name = "采购数量") + private String purchaseNum; + + /** 验收数量 */ + @ApiModelProperty(value = "验收数量") + @Excel(name = "验收数量") + private String checkNum; + + /** 采购状态 */ + @ApiModelProperty(value = "采购状态") + @Excel(name = "状态") + private String purchasingStatus; + + /** 入库人员 */ + @ApiModelProperty(value = "入库人员") + private String inputUser; + + /** 入库时间 */ + @ApiModelProperty(value = "入库时间") + private String inputTime; + + /** 入库状态 */ + @ApiModelProperty(value = "入库状态") + private String inputStatus; + + /** 数据所属组织 */ + @ApiModelProperty(value = "数据所属组织") + private Integer companyId; + + public String getKeyWord() { + return keyWord; + } + + public void setKeyWord(String keyWord) { + this.keyWord = keyWord; + } + + + + @ApiModelProperty(value = "新购配件任务详情") + private List partDetailsList; + + + + + /** + * 任务状态(定义数据字典) + */ + @ApiModelProperty(value="任务状态(数据字典)") + private Integer taskStatus; + private String keyWord; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public void setTaskId(Long taskId) + { + this.taskId = taskId; + } + + public Long getTaskId() + { + return taskId; + } + public void setPurchaseTime(String purchaseTime) + { + this.purchaseTime = purchaseTime; + } + + public String getPurchaseTime() + { + return purchaseTime; + } + public void setArrivalTime(String arrivalTime) + { + this.arrivalTime = arrivalTime; + } + + public String getArrivalTime() + { + return arrivalTime; + } + public void setPurchaser(Long purchaser) + { + this.purchaser = purchaser; + } + + public Long getPurchaser() + { + return purchaser; + } + public void setCompanyId(Integer companyId) + { + this.companyId = companyId; + } + + public Integer getCompanyId() + { + return companyId; + } + + public List getPartDetailsList() { + return partDetailsList; + } + + public void setPartDetailsList(List partDetailsList) { + this.partDetailsList = partDetailsList; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getPurchasingStatus() { + return purchasingStatus; + } + + public void setPurchasingStatus(String purchasingStatus) { + this.purchasingStatus = purchasingStatus; + } + + public String getPurchasingTypeName() { + return purchasingTypeName; + } + + public void setPurchasingTypeName(String purchasingTypeName) { + this.purchasingTypeName = purchasingTypeName; + } + + public String getPurchaserName() { + return purchaserName; + } + + public void setPurchaserName(String purchaserName) { + this.purchaserName = purchaserName; + } + + public Integer getTaskStatus() { + return taskStatus; + } + + public void setTaskStatus(Integer taskStatus) { + this.taskStatus = taskStatus; + } + + public String getPurchasingTypeCode() { + return purchasingTypeCode; + } + + public void setPurchasingTypeCode(String purchasingTypeCode) { + this.purchasingTypeCode = purchasingTypeCode; + } + + public String getSupplier() { + return supplier; + } + + public void setSupplier(String supplier) { + this.supplier = supplier; + } + + public String getPurchaseNum() { + return purchaseNum; + } + + public void setPurchaseNum(String purchaseNum) { + this.purchaseNum = purchaseNum; + } + + public String getCheckNum() { + return checkNum; + } + + public void setCheckNum(String checkNum) { + this.checkNum = checkNum; + } + + public String getManageType() { + return manageType; + } + + public void setManageType(String manageType) { + this.manageType = manageType; + } + + public String getInputUser() { + return inputUser; + } + + public void setInputUser(String inputUser) { + this.inputUser = inputUser; + } + + public String getInputTime() { + return inputTime; + } + + public void setInputTime(String inputTime) { + this.inputTime = inputTime; + } + + public String getInputStatus() { + return inputStatus; + } + + public void setInputStatus(String inputStatus) { + this.inputStatus = inputStatus; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("taskId", getTaskId()) + .append("purchaseTime", getPurchaseTime()) + .append("arrivalTime", getArrivalTime()) + .append("purchaser", getPurchaser()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .append("companyId", getCompanyId()) + .toString(); + } +} diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/PurchaseAccessoryMapper.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/PurchaseAccessoryMapper.java new file mode 100644 index 00000000..edec0deb --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/mapper/PurchaseAccessoryMapper.java @@ -0,0 +1,35 @@ +package com.bonus.sgzb.material.mapper; + +import com.bonus.sgzb.material.domain.*; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** +* @description 新购配件任务 +* @author hay +* @date 2024/1/16 13:12 +*/ +@Mapper +public interface PurchaseAccessoryMapper +{ + + + /** + * 新增新购配件任务 purchase_part_info + * + * @param purchasePartInfo 新增新购配件任务 purchase_part_info + * @return 结果 + */ + public int insertPurchasePartInfo(PurchasePartInfo purchasePartInfo); + + /** + * @param purchasePartDetailsList + * @return 结果 + * @description 新增新购任务详情 + * @author hay + * @date 2024/1/16 14:05 + */ + int insertPurchasePartDetailsList(@Param("purchasePartDetailsList") List purchasePartDetailsList); +} diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/IPurchaseAccessoryService.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/IPurchaseAccessoryService.java new file mode 100644 index 00000000..0f01f94e --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/IPurchaseAccessoryService.java @@ -0,0 +1,24 @@ +package com.bonus.sgzb.material.service; + +import com.bonus.sgzb.material.domain.PurchaseCheckInfo; +import com.bonus.sgzb.material.domain.PurchaseInput; +import com.bonus.sgzb.material.domain.PurchasePartInfo; +import com.bonus.sgzb.material.vo.NoticeInfoVO; + +import java.util.List; + +/** +* @description 新购配件 +* @author hay +* @date 2024/1/16 13:29 +*/ +public interface IPurchaseAccessoryService +{ + /** + * 新增新购配件任务 + * @param purchasePartInfo + * @return 结果 + */ + public int insertPurchaseAccessory(PurchasePartInfo purchasePartInfo); + +} diff --git a/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/PurchaseAccessoryServiceImpl.java b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/PurchaseAccessoryServiceImpl.java new file mode 100644 index 00000000..eacff273 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/java/com/bonus/sgzb/material/service/impl/PurchaseAccessoryServiceImpl.java @@ -0,0 +1,93 @@ +package com.bonus.sgzb.material.service.impl; + +import com.bonus.sgzb.base.api.domain.TmTask; +import com.bonus.sgzb.common.core.utils.DateUtils; +import com.bonus.sgzb.common.security.utils.SecurityUtils; +import com.bonus.sgzb.material.domain.*; +import com.bonus.sgzb.material.mapper.PurchaseAccessoryMapper; +import com.bonus.sgzb.material.mapper.PurchaseCheckDetailsMapper; +import com.bonus.sgzb.material.mapper.PurchaseCheckInfoMapper; +import com.bonus.sgzb.material.mapper.TaskMapper; +import com.bonus.sgzb.material.service.IPurchaseAccessoryService; +import com.bonus.sgzb.material.service.IPurchaseCheckInfoService; +import com.bonus.sgzb.material.vo.NoticeInfoVO; +import com.bonus.sgzb.system.api.RemoteUserService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +/** + * 新购验收任务Service业务层处理 + * + * @author bonus + * @date 2023-12-10 + */ +@Service +public class PurchaseAccessoryServiceImpl implements IPurchaseAccessoryService +{ + @Resource + private PurchaseAccessoryMapper purchaseAccessoryMapper; + + @Resource + private TaskMapper taskMapper; + + /** + * 新增新购验收任务 + * @param purchasePartInfo 新购验收任务 + * @return 结果 + */ + @Override + @Transactional + public int insertPurchaseAccessory(PurchasePartInfo purchasePartInfo) + { + TmTask task = new TmTask(); + // 暂定的状态字典表 + task.setTaskType(67); + task.setTaskStatus(68); + // 采购单号 + task.setCode(purchaseCodeRule()); + task.setCreateTime(DateUtils.getNowDate()); + task.setCompanyId(purchasePartInfo.getCompanyId()); + task.setCreateBy(String.valueOf(SecurityUtils.getUserId())); + // 创建任务信息 + taskMapper.insertTmTask(task); + purchasePartInfo.setTaskId(task.getTaskId()); + purchasePartInfo.setCreateTime(DateUtils.getNowDate()); + + // 批量新增新购任务详情信息 + List partDetailsList = purchasePartInfo.getPartDetailsList(); + if (partDetailsList != null) { + for (PurchasePartDetails purchasePartDetails : partDetailsList) { + purchasePartDetails.setTaskId(task.getTaskId()); +// purchaseCheckDetails.setStatus(2); + } + purchaseAccessoryMapper.insertPurchasePartDetailsList(partDetailsList); + } + // 新增任务信息 + return purchaseAccessoryMapper.insertPurchasePartInfo(purchasePartInfo); + } + + /** + * 新购配件--采购单号编码生成规则 + */ + private String purchaseCodeRule() { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); + Date nowDate = DateUtils.getNowDate(); + String format = dateFormat.format(nowDate); + int taskNum = taskMapper.selectTaskNumByMonth(nowDate,67) + 1; + String code=""; + if (taskNum>9 && taskNum<100){ + code = "XG" + format + "-00" + taskNum; + }else if (taskNum>99 && taskNum<1000){ + code = "XG" + format + "-0" + taskNum; + }else { + code = "XG" + format + "-000" + taskNum; + } + return code; + } + +} diff --git a/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseAccessoryMapper.xml b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseAccessoryMapper.xml new file mode 100644 index 00000000..70094399 --- /dev/null +++ b/sgzb-modules/sgzb-material/src/main/resources/mapper/material/PurchaseAccessoryMapper.xml @@ -0,0 +1,76 @@ + + + + + + + insert into purchase_part_details + + task_id, + part_id, + purchase_price, + purchase_num, + check_num, + check_result, + supplier_id, + create_by, + production_time, + create_time, + update_by, + update_time, + remark, + file_name, + file_url, + company_id, + + + #{partDetails.taskId}, + #{partDetails.partId}, + #{partDetails.purchasePrice}, + #{partDetails.purchaseNum}, + #{partDetails.checkNum}, + #{partDetails.checkResult}, + #{partDetails.supplierId}, + #{partDetails.createBy}, + #{partDetails.productionTime}, + #{partDetails.createTime}, + #{partDetails.updateBy}, + #{partDetails.updateTime}, + #{partDetails.remark}, + #{partDetails.fileName}, + #{partDetails.fileUrl}, + #{partDetails.companyId}, + + + + + + insert into purchase_part_info + + task_id, + purchase_time, + arrival_time, + purchaser, + create_by, + create_time, + update_by, + update_time, + remark, + company_id, + + + #{taskId}, + #{purchaseTime}, + #{arrivalTime}, + #{purchaser}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + #{companyId}, + + + \ No newline at end of file