库存导入bug修复,外貌重构初步
This commit is contained in:
@@ -70,7 +70,6 @@ public class SysOssController extends BaseController {
|
|||||||
@Log(title = "OSS对象存储", businessType = BusinessType.INSERT)
|
@Log(title = "OSS对象存储", businessType = BusinessType.INSERT)
|
||||||
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||||
public R<Map<String, String>> upload(@RequestPart("file") MultipartFile file,
|
public R<Map<String, String>> upload(@RequestPart("file") MultipartFile file,
|
||||||
// ★ 接收 isPublic,默认 0
|
|
||||||
@RequestParam(name = "isPublic", defaultValue = "0") Long isPublic) {
|
@RequestParam(name = "isPublic", defaultValue = "0") Long isPublic) {
|
||||||
if (ObjectUtil.isNull(file)) {
|
if (ObjectUtil.isNull(file)) {
|
||||||
return R.fail("上传文件不能为空");
|
return R.fail("上传文件不能为空");
|
||||||
|
|||||||
@@ -103,17 +103,6 @@ public class OaProgressController extends BaseController {
|
|||||||
ExcelUtil.exportExcel(list, "进度管理", OaProgressVo.class, response);
|
ExcelUtil.exportExcel(list, "进度管理", OaProgressVo.class, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取进度管理详细信息
|
|
||||||
*
|
|
||||||
* @param progressId 主键
|
|
||||||
*/
|
|
||||||
@GetMapping("/{progressId}")
|
|
||||||
public R<OaProgressVo> getInfo(@NotNull(message = "主键不能为空")
|
|
||||||
@PathVariable Long progressId) {
|
|
||||||
return R.ok(iOaProgressService.queryById(progressId));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增进度管理
|
* 新增进度管理
|
||||||
*/
|
*/
|
||||||
@@ -151,4 +140,19 @@ public class OaProgressController extends BaseController {
|
|||||||
public R<List<OaProgressDetail>> getKeyList() {
|
public R<List<OaProgressDetail>> getKeyList() {
|
||||||
return R.ok(iOaProgressService.getKeyList());
|
return R.ok(iOaProgressService.getKeyList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取进度管理详细信息
|
||||||
|
*
|
||||||
|
* @param projectId 主键
|
||||||
|
*/
|
||||||
|
@GetMapping("/{projectId}")
|
||||||
|
public R<List<OaProgressVo>> getInfo(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable("projectId") Long projectId) {
|
||||||
|
List<OaProgressVo> progressVos = iOaProgressService.queryByProjectId(projectId);
|
||||||
|
return R.ok(progressVos);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,4 +140,16 @@ public class SysOaProjectController extends BaseController {
|
|||||||
public TableDataInfo<SysOaProjectVo> files(SysOaWarehouseDetailBo bo, PageQuery pageQuery) {
|
public TableDataInfo<SysOaProjectVo> files(SysOaWarehouseDetailBo bo, PageQuery pageQuery) {
|
||||||
return iSysOaProjectService.queryFiles(bo, pageQuery);
|
return iSysOaProjectService.queryFiles(bo, pageQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询进度管理列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/progress-list")
|
||||||
|
public TableDataInfo<SysOaProjectVo> progressList(SysOaProjectBo bo, PageQuery pageQuery) {
|
||||||
|
bo.setTradeType(1L);
|
||||||
|
return iSysOaProjectService.listProjects(bo, pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -13,6 +13,7 @@ import java.util.List;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.ruoyi.common.core.domain.BaseEntity;
|
import com.ruoyi.common.core.domain.BaseEntity;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出库单管理业务对象 sys_oa_warehouse_master
|
* 出库单管理业务对象 sys_oa_warehouse_master
|
||||||
@@ -45,6 +46,8 @@ public class SysOaWarehouseMasterBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 编写日期
|
* 编写日期
|
||||||
*/
|
*/
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||||
private Date signTime;
|
private Date signTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -92,6 +92,8 @@ public class OaProgressVo {
|
|||||||
|
|
||||||
private List<OaProgressVo> children;
|
private List<OaProgressVo> children;
|
||||||
|
|
||||||
|
private List<OaProgressDetailVo> tasks;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 联系人电话
|
* 联系人电话
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -230,6 +230,11 @@ public class SysOaProjectVo {
|
|||||||
*/
|
*/
|
||||||
private Long tradeType;
|
private Long tradeType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 总完成度
|
||||||
|
*/
|
||||||
|
private Long progress;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 预付款
|
* 预付款
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class SysOaWarehouseVo extends SysOaWarehouse {
|
|||||||
* 序号
|
* 序号
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "序号")
|
@ExcelProperty(value = "序号")
|
||||||
private Long temp;
|
private String temp;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ public class SysOaWarehouseListener extends AnalysisEventListener<SysOaWarehouse
|
|||||||
|
|
||||||
public SysOaWarehouseListener(Boolean isUpdateSupport) {
|
public SysOaWarehouseListener(Boolean isUpdateSupport) {
|
||||||
this.warehouseMasterService = SpringUtils.getBean(ISysOaWarehouseMasterService.class);
|
this.warehouseMasterService = SpringUtils.getBean(ISysOaWarehouseMasterService.class);
|
||||||
// String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword");
|
|
||||||
this.sysOaWarehouseService = SpringUtils.getBean(ISysOaWarehouseService.class);
|
this.sysOaWarehouseService = SpringUtils.getBean(ISysOaWarehouseService.class);
|
||||||
this.isUpdateSupport = isUpdateSupport;
|
this.isUpdateSupport = isUpdateSupport;
|
||||||
|
|
||||||
@@ -53,9 +52,13 @@ public class SysOaWarehouseListener extends AnalysisEventListener<SysOaWarehouse
|
|||||||
@Override
|
@Override
|
||||||
public void invoke(SysOaWarehouseVo sysOaWarehouseVo, AnalysisContext context) {
|
public void invoke(SysOaWarehouseVo sysOaWarehouseVo, AnalysisContext context) {
|
||||||
SysOaWarehouseBo bo = new SysOaWarehouseBo();
|
SysOaWarehouseBo bo = new SysOaWarehouseBo();
|
||||||
|
sysOaWarehouseVo.setId(null);
|
||||||
bo.setName(sysOaWarehouseVo.getName());
|
bo.setName(sysOaWarehouseVo.getName());
|
||||||
if (Objects.nonNull(sysOaWarehouseVo.getModel())){
|
if (Objects.nonNull(sysOaWarehouseVo.getModel())){
|
||||||
bo.setModel(sysOaWarehouseVo.getModel().trim());
|
bo.setModel(sysOaWarehouseVo.getModel().trim());
|
||||||
|
|
||||||
|
}
|
||||||
|
if(Objects.nonNull(sysOaWarehouseVo.getBrand())){
|
||||||
bo.setBrand(sysOaWarehouseVo.getBrand().trim());
|
bo.setBrand(sysOaWarehouseVo.getBrand().trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,9 +66,13 @@ public class SysOaWarehouseListener extends AnalysisEventListener<SysOaWarehouse
|
|||||||
try {
|
try {
|
||||||
// 验证是否存在这个物料
|
// 验证是否存在这个物料
|
||||||
if (complaintVo.isEmpty()) {
|
if (complaintVo.isEmpty()) {
|
||||||
|
|
||||||
|
if (Objects.isNull(sysOaWarehouseVo.getPrice())) {
|
||||||
|
sysOaWarehouseVo.setPrice(0.0);
|
||||||
|
}
|
||||||
SysOaWarehouseBo add = BeanUtil.toBean(sysOaWarehouseVo, SysOaWarehouseBo.class);
|
SysOaWarehouseBo add = BeanUtil.toBean(sysOaWarehouseVo, SysOaWarehouseBo.class);
|
||||||
ValidatorUtils.validate(complaintVo);
|
Long warehouseId = sysOaWarehouseService.insertByBo2(add);
|
||||||
sysOaWarehouseService.insertByBo(add);
|
sysOaWarehouseVo.setId(warehouseId);
|
||||||
successNum++;
|
successNum++;
|
||||||
successMsg.append("<br/>").append(successNum).append("、物料名称: ").append(add.getName()).append(" 导入成功");
|
successMsg.append("<br/>").append(successNum).append("、物料名称: ").append(add.getName()).append(" 导入成功");
|
||||||
} else if (isUpdateSupport) {
|
} else if (isUpdateSupport) {
|
||||||
@@ -76,9 +83,15 @@ public class SysOaWarehouseListener extends AnalysisEventListener<SysOaWarehouse
|
|||||||
update.setId(warehouseVo.getId());
|
update.setId(warehouseVo.getId());
|
||||||
update.setInventory(warehouseVo.getInventory()+sysOaWarehouseVo.getInventory());
|
update.setInventory(warehouseVo.getInventory()+sysOaWarehouseVo.getInventory());
|
||||||
// 价格算加权平均
|
// 价格算加权平均
|
||||||
update.setPrice(warehouseVo.getPrice()*warehouseVo.getInventory()+sysOaWarehouseVo.getPrice()*sysOaWarehouseVo.getInventory()/(warehouseVo.getInventory()+sysOaWarehouseVo.getInventory()));
|
if (Objects.nonNull(sysOaWarehouseVo.getPrice()) && Objects.nonNull(sysOaWarehouseVo.getInventory())) {
|
||||||
|
update.setPrice((warehouseVo.getPrice()*warehouseVo.getInventory()+sysOaWarehouseVo.getPrice()*sysOaWarehouseVo.getInventory())/(warehouseVo.getInventory()+sysOaWarehouseVo.getInventory()));
|
||||||
|
}
|
||||||
ValidatorUtils.validate(complaintVo);
|
ValidatorUtils.validate(complaintVo);
|
||||||
sysOaWarehouseService.updateByBo(update);
|
sysOaWarehouseService.updateByBo(update);
|
||||||
|
warehouseVo.setInventory(sysOaWarehouseVo.getInventory());
|
||||||
|
warehouseVo.setPrice(sysOaWarehouseVo.getPrice());
|
||||||
|
sysOaWarehouseVo = warehouseVo;
|
||||||
|
|
||||||
successNum++;
|
successNum++;
|
||||||
successMsg.append("<br/>").append(successNum).append("、物料名称: ").append(update.getName()).append(" 更新成功");
|
successMsg.append("<br/>").append(successNum).append("、物料名称: ").append(update.getName()).append(" 更新成功");
|
||||||
}
|
}
|
||||||
@@ -87,7 +100,6 @@ public class SysOaWarehouseListener extends AnalysisEventListener<SysOaWarehouse
|
|||||||
failureNum++;
|
failureNum++;
|
||||||
String msg = "<br/>" + failureNum + "、物料名称: " + sysOaWarehouseVo.getName() + " 导入失败:";
|
String msg = "<br/>" + failureNum + "、物料名称: " + sysOaWarehouseVo.getName() + " 导入失败:";
|
||||||
failureMsg.append(msg).append(e.getMessage());
|
failureMsg.append(msg).append(e.getMessage());
|
||||||
log.error(msg, e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,4 +26,7 @@ public interface OaProgressMapper extends BaseMapperPlus<OaProgressMapper, OaPro
|
|||||||
List<OaProgressDetail> getKeyList();
|
List<OaProgressDetail> getKeyList();
|
||||||
|
|
||||||
Page<OaProgressVo> selectVoPagePlus(@Param("page") Page<Object> build,@Param(Constants.WRAPPER) QueryWrapper<OaProgress> lqw);
|
Page<OaProgressVo> selectVoPagePlus(@Param("page") Page<Object> build,@Param(Constants.WRAPPER) QueryWrapper<OaProgress> lqw);
|
||||||
|
|
||||||
|
|
||||||
|
List<OaProgressVo> queryByProjectId(Long projectId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,4 +43,12 @@ public interface SysOaProjectMapper extends BaseMapperPlus<SysOaProjectMapper, S
|
|||||||
Page<SysOaProjectVo> selectFileVoList(@Param("page") Page<Object> build, @Param(Constants.WRAPPER) QueryWrapper<SysOaProject> sysOaProjectQueryWrapper);
|
Page<SysOaProjectVo> selectFileVoList(@Param("page") Page<Object> build, @Param(Constants.WRAPPER) QueryWrapper<SysOaProject> sysOaProjectQueryWrapper);
|
||||||
|
|
||||||
Page<SysOaProjectVo> selectVoAndProgress(@Param("page") Page<Object> build, @Param(Constants.WRAPPER) LambdaQueryWrapper<SysOaProject> sysOaProjectQueryWrapper);
|
Page<SysOaProjectVo> selectVoAndProgress(@Param("page") Page<Object> build, @Param(Constants.WRAPPER) LambdaQueryWrapper<SysOaProject> sysOaProjectQueryWrapper);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 外贸进度使用list
|
||||||
|
* @param build
|
||||||
|
* @param bo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Page<SysOaProjectVo> selectVoListPage(@Param("page") Page<SysOaProjectVo> build,@Param(Constants.WRAPPER) QueryWrapper<SysOaProject> bo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.ruoyi.oa.domain.bo.OaProgressBo;
|
|||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -54,4 +55,7 @@ public interface IOaProgressService {
|
|||||||
*/
|
*/
|
||||||
List<OaProgressDetail> getKeyList();
|
List<OaProgressDetail> getKeyList();
|
||||||
|
|
||||||
|
|
||||||
|
List<OaProgressVo> queryByProjectId(Long projectId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,4 +74,6 @@ public interface ISysOaProjectService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
TableDataInfo<SysOaProjectVo> queryPageList2(SysOaProjectBo bo, PageQuery pageQuery);
|
TableDataInfo<SysOaProjectVo> queryPageList2(SysOaProjectBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
TableDataInfo<SysOaProjectVo> listProjects(SysOaProjectBo bo, PageQuery pageQuery);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,13 @@ public interface ISysOaWarehouseService {
|
|||||||
*/
|
*/
|
||||||
Long insertByBo(SysOaWarehouseBo bo);
|
Long insertByBo(SysOaWarehouseBo bo);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增仓库管理
|
||||||
|
*/
|
||||||
|
Long insertByBo2(SysOaWarehouseBo bo);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改仓库管理
|
* 修改仓库管理
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import com.ruoyi.oa.domain.OaProgress;
|
|||||||
import com.ruoyi.oa.mapper.OaProgressMapper;
|
import com.ruoyi.oa.mapper.OaProgressMapper;
|
||||||
import com.ruoyi.oa.service.IOaProgressService;
|
import com.ruoyi.oa.service.IOaProgressService;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -132,4 +133,10 @@ public class OaProgressServiceImpl implements IOaProgressService {
|
|||||||
public List<OaProgressDetail> getKeyList() {
|
public List<OaProgressDetail> getKeyList() {
|
||||||
return baseMapper.getKeyList();
|
return baseMapper.getKeyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OaProgressVo> queryByProjectId(Long projectId) {
|
||||||
|
|
||||||
|
return baseMapper.queryByProjectId(projectId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当月每个项目的人力资源成本
|
* 获取当月每个项目的人力资源成本
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@@ -147,6 +148,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 统计数据需要
|
* 统计数据需要
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@@ -210,6 +212,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 进度使用的查询接口
|
* 进度使用的查询接口
|
||||||
|
*
|
||||||
* @param bo
|
* @param bo
|
||||||
* @param pageQuery
|
* @param pageQuery
|
||||||
* @return
|
* @return
|
||||||
@@ -221,6 +224,25 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
|||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询项目 进度使用
|
||||||
|
*
|
||||||
|
* @param bo
|
||||||
|
* @param pageQuery
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<SysOaProjectVo> listProjects(SysOaProjectBo bo, PageQuery pageQuery) {
|
||||||
|
QueryWrapper<SysOaProject> qw = new QueryWrapper<SysOaProject>();
|
||||||
|
qw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.project_name", bo.getProjectName());
|
||||||
|
qw.eq("sop.trade_type", bo.getTradeType());
|
||||||
|
qw.like(StringUtils.isNotBlank(bo.getProjectNum()), "sop.project_num", bo.getProjectNum());
|
||||||
|
qw.groupBy("sop.project_id");
|
||||||
|
Page<SysOaProjectVo> result = baseMapper.selectVoListPage(pageQuery.build(),qw);
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private QueryWrapper<SysOaProject> buildOutWareQueryWrapper(SysOaWarehouseDetailBo bo) {
|
private QueryWrapper<SysOaProject> buildOutWareQueryWrapper(SysOaWarehouseDetailBo bo) {
|
||||||
QueryWrapper<SysOaProject> lqw = Wrappers.query();
|
QueryWrapper<SysOaProject> lqw = Wrappers.query();
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName());
|
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName());
|
||||||
@@ -230,7 +252,6 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private Date getFirstDay(Date time) {
|
private Date getFirstDay(Date time) {
|
||||||
String firstDay = DateUtils.parseDateToStr("yyyy-MM-01", time);
|
String firstDay = DateUtils.parseDateToStr("yyyy-MM-01", time);
|
||||||
return DateUtils.parseDate(firstDay);
|
return DateUtils.parseDate(firstDay);
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ public class SysOaTaskServiceImpl implements ISysOaTaskService {
|
|||||||
public Boolean insertByBo(SysOaTaskBo bo) {
|
public Boolean insertByBo(SysOaTaskBo bo) {
|
||||||
List<Long> workerIdList = new ArrayList<>();
|
List<Long> workerIdList = new ArrayList<>();
|
||||||
// 拿到所有的执行人id列表进行遍历添加
|
// 拿到所有的执行人id列表进行遍历添加
|
||||||
if (bo.getWorkerId()!=null) {
|
if (bo.getWorkerIds()!=null) {
|
||||||
workerIdList = Arrays.stream(bo.getWorkerIds().split(","))
|
workerIdList = Arrays.stream(bo.getWorkerIds().split(","))
|
||||||
.map(Long::valueOf)
|
.map(Long::valueOf)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ public class SysOaWarehouseDetailServiceImpl implements ISysOaWarehouseDetailSer
|
|||||||
SysOaWarehouseDetail decrease = toBean(bo, SysOaWarehouseDetail.class);
|
SysOaWarehouseDetail decrease = toBean(bo, SysOaWarehouseDetail.class);
|
||||||
validEntityBeforeSave(decrease);
|
validEntityBeforeSave(decrease);
|
||||||
|
|
||||||
if (!Objects.nonNull(bo.getType()) || bo.getType() != 1) {
|
if (Objects.isNull(bo.getType()) || bo.getType() != 1L) {
|
||||||
SysOaWarehouse warehouse = warehouseMapper.selectById(decrease.getWarehouseId());
|
SysOaWarehouse warehouse = warehouseMapper.selectById(decrease.getWarehouseId());
|
||||||
// 1 如果对应仓库表项目数量-将要出库数量<0,出库失败, 繁殖 , 增加该条
|
// 1 如果对应仓库表项目数量-将要出库数量<0,出库失败, 繁殖 , 增加该条
|
||||||
if(warehouse == null) {
|
if(warehouse == null) {
|
||||||
@@ -153,8 +153,6 @@ public class SysOaWarehouseDetailServiceImpl implements ISysOaWarehouseDetailSer
|
|||||||
warehouseMapper.updateById(warehouse);
|
warehouseMapper.updateById(warehouse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2、减少仓库表中对应项目的数量
|
|
||||||
return baseMapper.insert(decrease) > 0;
|
return baseMapper.insert(decrease) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,8 +40,6 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
|
|||||||
private final ISysOaWarehouseDetailService warehouseDetailService;
|
private final ISysOaWarehouseDetailService warehouseDetailService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询出库单管理
|
* 查询出库单管理
|
||||||
*/
|
*/
|
||||||
@@ -74,7 +72,14 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
|
|||||||
QueryWrapper<SysOaWarehouseMaster> lqw = Wrappers.query();
|
QueryWrapper<SysOaWarehouseMaster> lqw = Wrappers.query();
|
||||||
lqw.eq(bo.getType() != null, "sowm.type", bo.getType());
|
lqw.eq(bo.getType() != null, "sowm.type", bo.getType());
|
||||||
lqw.eq(bo.getProjectId() != null, "sowm.project_id", bo.getProjectId());
|
lqw.eq(bo.getProjectId() != null, "sowm.project_id", bo.getProjectId());
|
||||||
lqw.eq(bo.getSignTime() != null, "sowm.sign_time", bo.getSignTime());
|
|
||||||
|
if (bo.getSignTime() != null) {
|
||||||
|
long time = bo.getSignTime().getTime();
|
||||||
|
lqw.apply(
|
||||||
|
"DATE(sowm.sign_time) = {0}", // MySQL DATE() 抽取日期部分
|
||||||
|
new Date(time)); // 2025‑05‑13
|
||||||
|
}
|
||||||
|
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getSignUser()), "sowm.sign_user", bo.getSignUser());
|
lqw.like(StringUtils.isNotBlank(bo.getSignUser()), "sowm.sign_user", bo.getSignUser());
|
||||||
lqw.eq("sowm.del_flag", 0L);
|
lqw.eq("sowm.del_flag", 0L);
|
||||||
lqw.orderByDesc("sowm.create_time");
|
lqw.orderByDesc("sowm.create_time");
|
||||||
@@ -95,6 +100,7 @@ public class SysOaWarehouseMasterServiceImpl implements ISysOaWarehouseMasterSer
|
|||||||
// 单子新增后 新增出库元素同时减去现有的,这里要记录一个出库时单价
|
// 单子新增后 新增出库元素同时减去现有的,这里要记录一个出库时单价
|
||||||
for (SysOaWarehouseDetailBo sysOaWarehouseDetailBo : bo.getWarehouseList()) {
|
for (SysOaWarehouseDetailBo sysOaWarehouseDetailBo : bo.getWarehouseList()) {
|
||||||
sysOaWarehouseDetailBo.setMasterId(add.getMasterId());
|
sysOaWarehouseDetailBo.setMasterId(add.getMasterId());
|
||||||
|
sysOaWarehouseDetailBo.setType(bo.getType());
|
||||||
warehouseDetailService.insertByBo(sysOaWarehouseDetailBo);
|
warehouseDetailService.insertByBo(sysOaWarehouseDetailBo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,13 +53,16 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService {
|
|||||||
@Override
|
@Override
|
||||||
public TableDataInfo<SysOaWarehouseVo> queryPageList(SysOaWarehouseBo bo, PageQuery pageQuery) {
|
public TableDataInfo<SysOaWarehouseVo> queryPageList(SysOaWarehouseBo bo, PageQuery pageQuery) {
|
||||||
QueryWrapper<SysOaWarehouse> lqw = new QueryWrapper<>();
|
QueryWrapper<SysOaWarehouse> lqw = new QueryWrapper<>();
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getName()), "sow.name", bo.getName()).or()
|
|
||||||
.like(StringUtils.isNotBlank(bo.getName()), "sow.brand", bo.getName()).or()
|
|
||||||
.like(StringUtils.isNotBlank(bo.getName()), "sow.model", bo.getName());
|
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getModel()), "sow.model", bo.getModel());
|
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getBrand()), "sow.brand", bo.getBrand());
|
|
||||||
lqw.eq("sow.del_flag", 0);
|
lqw.eq("sow.del_flag", 0);
|
||||||
|
lqw.and(StringUtils.isNotBlank(bo.getName()),qw -> qw
|
||||||
|
.like( "sow.name", bo.getName())
|
||||||
|
.or()
|
||||||
|
.like("sow.brand", bo.getName())
|
||||||
|
.or()
|
||||||
|
.like("sow.model", bo.getName())
|
||||||
|
)
|
||||||
|
.eq(StringUtils.isNotBlank(bo.getModel()), "sow.model", bo.getModel())
|
||||||
|
.eq(StringUtils.isNotBlank(bo.getBrand()), "sow.brand", bo.getBrand());
|
||||||
Page<SysOaWarehouseVo> result = baseMapper.selectListVoPage(pageQuery.build(), lqw);
|
Page<SysOaWarehouseVo> result = baseMapper.selectListVoPage(pageQuery.build(), lqw);
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
@@ -67,17 +70,25 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService {
|
|||||||
@Override
|
@Override
|
||||||
public TableDataInfo<SysOaWarehouseVo> queryPageListThreshold(SysOaWarehouseBo bo, PageQuery pageQuery, boolean b) {
|
public TableDataInfo<SysOaWarehouseVo> queryPageListThreshold(SysOaWarehouseBo bo, PageQuery pageQuery, boolean b) {
|
||||||
QueryWrapper<SysOaWarehouse> lqw = new QueryWrapper<>();
|
QueryWrapper<SysOaWarehouse> lqw = new QueryWrapper<>();
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getName()), "sow.name", bo.getName()).or()
|
|
||||||
.like(StringUtils.isNotBlank(bo.getName()), "sow.brand", bo.getName()).or()
|
|
||||||
.like(StringUtils.isNotBlank(bo.getName()), "sow.model", bo.getName());
|
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getModel()), "sow.model", bo.getModel());
|
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getBrand()), "sow.brand", bo.getBrand());
|
|
||||||
lqw.eq("sow.del_flag", 0);
|
lqw.eq("sow.del_flag", 0);
|
||||||
if (b){
|
if (b){
|
||||||
lqw.apply("sow.inventory < sow.threshold");
|
lqw.apply("sow.inventory < sow.threshold");
|
||||||
}else{
|
}else{
|
||||||
lqw.apply("sow.inventory >= sow.threshold");
|
lqw.apply("sow.inventory >= sow.threshold");
|
||||||
}
|
}
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getModel()), "sow.model", bo.getModel());
|
||||||
|
lqw.eq(StringUtils.isNotBlank(bo.getBrand()), "sow.brand", bo.getBrand());
|
||||||
|
|
||||||
|
lqw.and(StringUtils.isNotBlank(bo.getName()),qw -> qw
|
||||||
|
.like( "sow.name", bo.getName())
|
||||||
|
.or()
|
||||||
|
.like("sow.brand", bo.getName())
|
||||||
|
.or()
|
||||||
|
.like("sow.model", bo.getName())
|
||||||
|
)
|
||||||
|
.eq(StringUtils.isNotBlank(bo.getModel()), "sow.model", bo.getModel())
|
||||||
|
.eq(StringUtils.isNotBlank(bo.getBrand()), "sow.brand", bo.getBrand());
|
||||||
|
|
||||||
Page<SysOaWarehouseVo> result = baseMapper.selectListVoPage(pageQuery.build(), lqw);
|
Page<SysOaWarehouseVo> result = baseMapper.selectListVoPage(pageQuery.build(), lqw);
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
@@ -164,6 +175,7 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService {
|
|||||||
/**
|
/**
|
||||||
* 新增仓库管理
|
* 新增仓库管理
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public Long insertByBo2(SysOaWarehouseBo bo) {
|
public Long insertByBo2(SysOaWarehouseBo bo) {
|
||||||
SysOaWarehouse add = BeanUtil.toBean(bo, SysOaWarehouse.class);
|
SysOaWarehouse add = BeanUtil.toBean(bo, SysOaWarehouse.class);
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
@@ -172,7 +184,6 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService {
|
|||||||
lqw.eq(SysOaWarehouse::getName, bo.getName());
|
lqw.eq(SysOaWarehouse::getName, bo.getName());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getModel()), SysOaWarehouse::getModel, bo.getModel());
|
lqw.eq(StringUtils.isNotBlank(bo.getModel()), SysOaWarehouse::getModel, bo.getModel());
|
||||||
SysOaWarehouse select = baseMapper.selectOne(lqw);
|
SysOaWarehouse select = baseMapper.selectOne(lqw);
|
||||||
System.out.println(select);
|
|
||||||
// 2、 无则直接新增项目 有则直接增加库存数量
|
// 2、 无则直接新增项目 有则直接增加库存数量
|
||||||
if (select == null) {
|
if (select == null) {
|
||||||
baseMapper.insert(add);
|
baseMapper.insert(add);
|
||||||
|
|||||||
@@ -4,24 +4,118 @@
|
|||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.ruoyi.oa.mapper.OaProgressMapper">
|
<mapper namespace="com.ruoyi.oa.mapper.OaProgressMapper">
|
||||||
|
|
||||||
<resultMap type="com.ruoyi.oa.domain.OaProgress" id="OaProgressResult">
|
<!-- 1. 定义 OaProgressVo 的映射:同时嵌套子阶段和子任务 -->
|
||||||
<result property="progressId" column="progress_id"/>
|
<resultMap id="OaProgressResult" type="com.ruoyi.oa.domain.vo.OaProgressVo">
|
||||||
|
<id property="progressId" column="progress_id"/>
|
||||||
<result property="projectId" column="project_id"/>
|
<result property="projectId" column="project_id"/>
|
||||||
<result property="type" column="type"/>
|
<result property="type" column="type"/>
|
||||||
<result property="progressName" column="progress_name"/>
|
<result property="progressName" column="progress_name"/>
|
||||||
<result property="parentId" column="parent_id"/>
|
<result property="parentId" column="parent_id"/>
|
||||||
<result property="createBy" column="create_by"/>
|
|
||||||
<result property="createTime" column="create_time"/>
|
|
||||||
<result property="updateBy" column="update_by"/>
|
|
||||||
<result property="updateTime" column="update_time"/>
|
|
||||||
<result property="delFlag" column="del_flag"/>
|
|
||||||
<result property="sort" column="sort"/>
|
<result property="sort" column="sort"/>
|
||||||
<result property="remark" column="remark"/>
|
<result property="remark" column="remark"/>
|
||||||
<result property="status" column="status"/>
|
<result property="status" column="status"/>
|
||||||
<result property="timeRemark" column="time_remark"/>
|
<result property="timeRemark" column="time_remark"/>
|
||||||
<result property="contactPhone" column="contact_phone"/>
|
<result property="contactPhone" column="contact_phone"/>
|
||||||
|
|
||||||
|
<!-- 嵌套查询一级或二级子阶段 -->
|
||||||
|
<collection property="children"
|
||||||
|
ofType="com.ruoyi.oa.domain.vo.OaProgressVo"
|
||||||
|
javaType="list"
|
||||||
|
select="queryByParentId"
|
||||||
|
column="progress_id"/>
|
||||||
|
|
||||||
|
<!-- 嵌套查询本阶段下的所有任务明细 -->
|
||||||
|
<collection property="tasks"
|
||||||
|
ofType="com.ruoyi.oa.domain.vo.OaProgressDetailVo"
|
||||||
|
javaType="list"
|
||||||
|
select="queryDetailsByProgressId"
|
||||||
|
column="progress_id"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 2. 定义 OaProgressDetailVo 的映射 -->
|
||||||
|
<resultMap id="OaProgressDetailResult" type="com.ruoyi.oa.domain.vo.OaProgressDetailVo">
|
||||||
|
<id property="detailId" column="detail_id"/>
|
||||||
|
<result property="progressId" column="progress_id"/>
|
||||||
|
<result property="detailName" column="detail_name"/>
|
||||||
|
<result property="planStartDate" column="plan_start_date"/>
|
||||||
|
<result property="planEndDate" column="plan_end_date"/>
|
||||||
|
<result property="actualStartDate" column="actual_start_date"/>
|
||||||
|
<result property="actualEndDate" column="actual_end_date"/>
|
||||||
|
<result property="completePercent" column="complete_percent"/>
|
||||||
|
<result property="planPayDate" column="plan_pay_date"/>
|
||||||
|
<result property="payAmount" column="pay_amount"/>
|
||||||
|
<result property="paidAmount" column="paid_amount"/>
|
||||||
|
<result property="remark" column="remark"/>
|
||||||
|
<result property="detailStatus" column="detail_status"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 3. 查询所有父进度(parent_id = 0)-->
|
||||||
|
<select id="queryByProjectId"
|
||||||
|
parameterType="java.lang.Long"
|
||||||
|
resultMap="OaProgressResult">
|
||||||
|
SELECT
|
||||||
|
progress_id,
|
||||||
|
project_id,
|
||||||
|
type,
|
||||||
|
progress_name,
|
||||||
|
parent_id,
|
||||||
|
sort,
|
||||||
|
remark,
|
||||||
|
status,
|
||||||
|
time_remark,
|
||||||
|
contact_phone
|
||||||
|
FROM oa_progress
|
||||||
|
WHERE project_id = #{projectId}
|
||||||
|
AND parent_id = 0
|
||||||
|
AND del_flag = 0
|
||||||
|
ORDER BY sort
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 4. 根据 parentId 查询子进度 -->
|
||||||
|
<select id="queryByParentId"
|
||||||
|
parameterType="java.lang.Long"
|
||||||
|
resultMap="OaProgressResult">
|
||||||
|
SELECT
|
||||||
|
progress_id,
|
||||||
|
project_id,
|
||||||
|
type,
|
||||||
|
progress_name,
|
||||||
|
parent_id,
|
||||||
|
sort,
|
||||||
|
remark,
|
||||||
|
status,
|
||||||
|
time_remark,
|
||||||
|
contact_phone
|
||||||
|
FROM oa_progress
|
||||||
|
WHERE parent_id = #{parentId}
|
||||||
|
AND del_flag = 0
|
||||||
|
ORDER BY sort
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 5. 根据 progressId 查询对应的所有任务明细 -->
|
||||||
|
<select id="queryDetailsByProgressId"
|
||||||
|
parameterType="java.lang.Long"
|
||||||
|
resultMap="OaProgressDetailResult">
|
||||||
|
SELECT
|
||||||
|
detail_id,
|
||||||
|
progress_id,
|
||||||
|
detail_name,
|
||||||
|
plan_start_date,
|
||||||
|
plan_end_date,
|
||||||
|
actual_start_date,
|
||||||
|
actual_end_date,
|
||||||
|
complete_percent,
|
||||||
|
plan_pay_date,
|
||||||
|
pay_amount,
|
||||||
|
paid_amount,
|
||||||
|
remark,
|
||||||
|
detail_status
|
||||||
|
FROM oa_progress_detail
|
||||||
|
WHERE progress_id = #{progressId}
|
||||||
|
AND del_flag = 0
|
||||||
|
ORDER BY plan_start_date
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<select id="getKeyList" resultType="com.ruoyi.oa.domain.OaProgressDetail">
|
<select id="getKeyList" resultType="com.ruoyi.oa.domain.OaProgressDetail">
|
||||||
select distinct detail_name, department
|
select distinct detail_name, department
|
||||||
@@ -101,4 +195,6 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -480,5 +480,28 @@
|
|||||||
${ew.getCustomSqlSegment}
|
${ew.getCustomSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectVoListPage" resultType="com.ruoyi.oa.domain.vo.SysOaProjectVo">
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
sop.project_id,
|
||||||
|
sop.project_name,
|
||||||
|
sop.project_num,
|
||||||
|
sop.begin_time,
|
||||||
|
sop.finish_time,
|
||||||
|
sop.functionary,
|
||||||
|
IFNULL(
|
||||||
|
SUM(CASE WHEN d.detail_status = 1 THEN 1 ELSE 0 END) * 100
|
||||||
|
/ NULLIF(COUNT(d.detail_id), 0)
|
||||||
|
, 0) AS progress
|
||||||
|
FROM sys_oa_project sop
|
||||||
|
LEFT JOIN oa_progress pr
|
||||||
|
ON pr.project_id = sop.project_id
|
||||||
|
AND pr.del_flag = 0
|
||||||
|
LEFT JOIN oa_progress_detail d
|
||||||
|
ON d.progress_id = pr.progress_id
|
||||||
|
AND d.del_flag = 0
|
||||||
|
${ ew.getCustomSqlSegment}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -69,6 +69,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
left join sys_oa_warehouse_master sowm on sowm.master_id = sowt.master_id
|
left join sys_oa_warehouse_master sowm on sowm.master_id = sowt.master_id
|
||||||
where sowt.warehouse_id = sow.id
|
where sowt.warehouse_id = sow.id
|
||||||
and sowm.type = 2
|
and sowm.type = 2
|
||||||
|
and sowt.del_flag = '0'
|
||||||
|
and sowm.del_flag = '0'
|
||||||
and sowm.status = 0
|
and sowm.status = 0
|
||||||
) as task_inventory
|
) as task_inventory
|
||||||
from sys_oa_warehouse sow
|
from sys_oa_warehouse sow
|
||||||
|
|||||||
97
script/sql/progress.sql
Normal file
97
script/sql/progress.sql
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
create table if not exists sys_oa_project
|
||||||
|
(
|
||||||
|
project_id bigint not null comment 'ID'
|
||||||
|
primary key,
|
||||||
|
project_name varchar(126) default '' null comment '项目名称',
|
||||||
|
project_num varchar(64) default '' null comment '项目编号',
|
||||||
|
project_type char null comment '项目类型(1中标,2其他)',
|
||||||
|
address varchar(126) default '' null comment '项目地址',
|
||||||
|
funds decimal(24, 2) null comment '项目总款',
|
||||||
|
functionary varchar(32) default '' null comment '项目负责人',
|
||||||
|
begin_time datetime null comment '开始日期',
|
||||||
|
finish_time datetime null comment '结束日期',
|
||||||
|
delivery varchar(64) null comment '交货期',
|
||||||
|
guarantee varchar(64) null comment '质保期',
|
||||||
|
introduction varchar(256) default '' null comment '项目介绍',
|
||||||
|
project_grade char default '0' null comment '优先级(0一般 1中 2高)',
|
||||||
|
project_status char default '0' null comment '状态(0进行中 1完结)',
|
||||||
|
contract_id bigint null comment '关联合同ID',
|
||||||
|
invoice_name varchar(64) collate utf8mb4_general_ci null comment '开票单位名称',
|
||||||
|
invoice_number varchar(32) collate utf8mb4_general_ci null comment '纳税人识别号',
|
||||||
|
invoice_address varchar(128) collate utf8mb4_general_ci null comment '开票地址电话',
|
||||||
|
invoice_bank varchar(128) collate utf8mb4_general_ci null comment '开户行及账号',
|
||||||
|
accessory text null comment '附件',
|
||||||
|
bail json null comment '履约保证金',
|
||||||
|
remark varchar(256) null comment '备注',
|
||||||
|
create_by varchar(32) default '' null comment '创建者',
|
||||||
|
create_time datetime null comment '创建时间',
|
||||||
|
update_by varchar(32) default '' null comment '更新者',
|
||||||
|
update_time datetime null comment '更新时间',
|
||||||
|
is_postpone int default 0 null comment '是否延期',
|
||||||
|
postpone_reason varchar(1024) null comment '延期原因',
|
||||||
|
postpone_time datetime null comment '延期至日期',
|
||||||
|
color varchar(20) null comment '代表颜色',
|
||||||
|
trade_type int default 0 null comment '交易类型',
|
||||||
|
pre_pay double default 0 null comment '预付款'
|
||||||
|
)
|
||||||
|
comment '项目管理表' charset = utf8mb4;
|
||||||
|
|
||||||
|
create table if not exists oa_progress
|
||||||
|
(
|
||||||
|
progress_id bigint auto_increment comment '主键ID'
|
||||||
|
primary key,
|
||||||
|
project_id bigint default 0 not null comment '所属项目ID(可根据实际需要)',
|
||||||
|
type tinyint default 1 not null comment '进度类型:1-项目进度;2-付款进度(可根据实际约定)',
|
||||||
|
progress_name varchar(200) default '' not null comment '进度名称',
|
||||||
|
parent_id bigint default 0 not null comment '父进度ID,0或NULL表示没有父节点',
|
||||||
|
create_by varchar(40) default '' not null comment '创建者',
|
||||||
|
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
update_by varchar(40) default '' not null comment '更新者',
|
||||||
|
update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
|
||||||
|
del_flag tinyint default 0 not null comment '删除标志:0-正常;1-删除',
|
||||||
|
sort int default 0 not null comment '排序字段(如需)',
|
||||||
|
remark varchar(500) default '' not null comment '备注(如需)',
|
||||||
|
status int default 0 null comment '状态位',
|
||||||
|
amount int default 0 null comment '设备数量',
|
||||||
|
time_remark varchar(200) null comment '时间(备注)',
|
||||||
|
contact_phone varchar(20) null comment '联系人电话'
|
||||||
|
)
|
||||||
|
comment '项目进度主表';
|
||||||
|
|
||||||
|
create index idx_parent_id
|
||||||
|
on oa_progress (parent_id);
|
||||||
|
|
||||||
|
create index idx_project_id
|
||||||
|
on oa_progress (project_id);
|
||||||
|
|
||||||
|
create index idx_type
|
||||||
|
on oa_progress (type);
|
||||||
|
|
||||||
|
create table if not exists oa_progress_detail
|
||||||
|
(
|
||||||
|
detail_id bigint auto_increment comment '主键ID'
|
||||||
|
primary key,
|
||||||
|
progress_id bigint not null comment '关联的进度ID,关联 project_progress.id',
|
||||||
|
detail_name varchar(50) null comment '子进度名称',
|
||||||
|
plan_start_date date null comment '计划开始日期(项目进度)',
|
||||||
|
plan_end_date date null comment '计划结束日期(项目进度)',
|
||||||
|
actual_start_date date null comment '实际开始日期(项目进度)',
|
||||||
|
actual_end_date date null comment '实际结束日期(项目进度)',
|
||||||
|
complete_percent decimal(5, 2) default 0.00 not null comment '完成百分比(项目进度)',
|
||||||
|
plan_pay_date date null comment '计划付款日期(付款进度)',
|
||||||
|
pay_amount decimal(18, 2) default 0.00 not null comment '应付金额(付款进度)',
|
||||||
|
paid_amount decimal(18, 2) default 0.00 not null comment '已付金额(付款进度)',
|
||||||
|
detail_status int default 0 null comment '子进度状态',
|
||||||
|
create_by varchar(40) default '' not null comment '创建者',
|
||||||
|
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
|
||||||
|
update_by varchar(40) default '' not null comment '更新者',
|
||||||
|
update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
|
||||||
|
del_flag tinyint default 0 not null comment '删除标志:0-正常;1-删除',
|
||||||
|
remark varchar(500) default '' not null comment '备注(如需)',
|
||||||
|
department varchar(30) null comment '负责部门'
|
||||||
|
)
|
||||||
|
comment '项目进度/付款进度扩展表';
|
||||||
|
|
||||||
|
create index idx_progress_id
|
||||||
|
on oa_progress_detail (progress_id);
|
||||||
|
|
||||||
Reference in New Issue
Block a user