|
|
@ -1,6 +1,7 @@ |
|
|
|
package com.win.module.wms.service.container; |
|
|
|
|
|
|
|
import com.win.framework.common.pojo.CustomConditions; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
import com.win.module.system.api.serialnumber.SerialNumberApi; |
|
|
|
import com.win.module.system.api.user.AdminUserApi; |
|
|
|
import com.win.module.system.enums.serialNumber.RuleCodeEnum; |
|
|
@ -8,30 +9,31 @@ import com.win.module.wms.controller.container.vo.ContainerDetailCreateReqVO; |
|
|
|
import com.win.module.wms.controller.container.vo.ContainerDetailExportReqVO; |
|
|
|
import com.win.module.wms.controller.container.vo.ContainerDetailPageReqVO; |
|
|
|
import com.win.module.wms.controller.container.vo.ContainerDetailUpdateReqVO; |
|
|
|
import com.win.module.wms.convert.container.ContainerDetailConvert; |
|
|
|
import com.win.module.wms.dal.dataobject.container.ContainerDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.container.ContainerMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.containerBind.ContainerBindRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.containerBind.ContainerBindRecordMainDO; |
|
|
|
import com.win.module.wms.dal.dataobject.containerUnbind.ContainerUnbindRecordDetailDO; |
|
|
|
import com.win.module.wms.dal.dataobject.containerUnbind.ContainerUnbindRecordMainDO; |
|
|
|
import com.win.module.wms.dal.mysql.container.ContainerDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.container.ContainerMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.containerBind.ContainerBindRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.containerBind.ContainerBindRecordMainMapper; |
|
|
|
import com.win.module.wms.dal.mysql.containerUnbind.ContainerUnbindRecordDetailMapper; |
|
|
|
import com.win.module.wms.dal.mysql.containerUnbind.ContainerUnbindRecordMainMapper; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import javax.annotation.Resource; |
|
|
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
import org.springframework.validation.annotation.Validated; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
import com.win.module.wms.dal.dataobject.container.ContainerDetailDO; |
|
|
|
import com.win.framework.common.pojo.PageResult; |
|
|
|
|
|
|
|
import com.win.module.wms.convert.container.ContainerDetailConvert; |
|
|
|
import com.win.module.wms.dal.mysql.container.ContainerDetailMapper; |
|
|
|
import java.util.Collection; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; |
|
|
|
import static com.win.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.*; |
|
|
|
import static com.win.module.wms.enums.ErrorCodeConstants.CONTAINER_DETAIL_NOT_EXISTS; |
|
|
|
|
|
|
|
/** |
|
|
|
* 器具子 Service 实现类 |
|
|
@ -54,11 +56,15 @@ public class ContainerDetailServiceImpl implements ContainerDetailService { |
|
|
|
private SerialNumberApi serialNumberApi; |
|
|
|
@Resource |
|
|
|
private AdminUserApi userApi; |
|
|
|
@Resource |
|
|
|
private ContainerUnbindRecordMainMapper containerUnbindRecordMainMapper; |
|
|
|
@Resource |
|
|
|
private ContainerUnbindRecordDetailMapper containerUnbindRecordDetailMapper; |
|
|
|
|
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public String createContainerDetail(ContainerDetailCreateReqVO createReqVO) { |
|
|
|
public Long createContainerDetail(ContainerDetailCreateReqVO createReqVO) { |
|
|
|
// 插入
|
|
|
|
ContainerDetailDO containerDetail = ContainerDetailConvert.INSTANCE.convert(createReqVO); |
|
|
|
containerDetailMapper.insert(containerDetail); |
|
|
@ -69,16 +75,22 @@ public class ContainerDetailServiceImpl implements ContainerDetailService { |
|
|
|
} |
|
|
|
|
|
|
|
public void createContainerBindRecord(ContainerDetailDO containerDetail) { |
|
|
|
// 器具绑定主表保存
|
|
|
|
ContainerBindRecordMainDO containerBindRecordMainDO = new ContainerBindRecordMainDO(); |
|
|
|
ContainerMainDO containerMainDO = containerMainMapper.selectById(containerDetail.getMasterId()); |
|
|
|
containerBindRecordMainDO.setFromWarehouseCode(containerMainDO.getWarehouseCode()); |
|
|
|
containerBindRecordMainDO.setContainerNumber(containerMainDO.getNumber()); |
|
|
|
containerBindRecordMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); |
|
|
|
containerBindRecordMainDO.setCreateTime(LocalDateTime.now()); |
|
|
|
String number = serialNumberApi.generateCode(RuleCodeEnum.CONTAINER_BIND_RECORD.getCode()); |
|
|
|
containerBindRecordMainDO.setNumber(number); |
|
|
|
containerBindRecordMainMapper.insert(containerBindRecordMainDO); |
|
|
|
ContainerBindRecordMainDO containerBindRecordMainDO = containerBindRecordMainMapper.queryByContainerNumber(containerMainDO.getNumber()); |
|
|
|
String number = null; |
|
|
|
if(containerBindRecordMainDO == null ){ |
|
|
|
// 器具绑定主表保存
|
|
|
|
containerBindRecordMainDO = new ContainerBindRecordMainDO(); |
|
|
|
containerBindRecordMainDO.setFromWarehouseCode(containerMainDO.getWarehouseCode()); |
|
|
|
containerBindRecordMainDO.setContainerNumber(containerMainDO.getNumber()); |
|
|
|
containerBindRecordMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); |
|
|
|
containerBindRecordMainDO.setCreateTime(LocalDateTime.now()); |
|
|
|
number = serialNumberApi.generateCode(RuleCodeEnum.CONTAINER_BIND_RECORD.getCode()); |
|
|
|
containerBindRecordMainDO.setNumber(number); |
|
|
|
containerBindRecordMainMapper.insert(containerBindRecordMainDO); |
|
|
|
}else { |
|
|
|
number = containerBindRecordMainDO.getNumber(); |
|
|
|
} |
|
|
|
// 器具绑定子表保存
|
|
|
|
ContainerBindRecordDetailDO containerBindRecordDetailDO = new ContainerBindRecordDetailDO(); |
|
|
|
containerBindRecordDetailDO.setMasterId(containerBindRecordMainDO.getId()); |
|
|
@ -102,18 +114,54 @@ public class ContainerDetailServiceImpl implements ContainerDetailService { |
|
|
|
containerDetailMapper.updateById(updateObj); |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional |
|
|
|
@Override |
|
|
|
public void deleteContainerDetail(Long id) { |
|
|
|
// 校验存在
|
|
|
|
validateContainerDetailExists(id); |
|
|
|
ContainerDetailDO containerDetailDO = validateContainerDetailExists(id); |
|
|
|
// 删除
|
|
|
|
containerDetailMapper.deleteById(id); |
|
|
|
// 添加到器具解绑记录表
|
|
|
|
createContainerUnbindRecord(containerDetailDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void createContainerUnbindRecord(ContainerDetailDO containerDetailDO) { |
|
|
|
ContainerMainDO containerMainDO = containerMainMapper.selectById(containerDetailDO.getMasterId()); |
|
|
|
ContainerUnbindRecordMainDO containerUnbindRecordMainDO = containerUnbindRecordMainMapper.queryByContainerNumber(containerMainDO.getNumber()); |
|
|
|
String number = null; |
|
|
|
if(containerUnbindRecordMainDO == null){ |
|
|
|
// 器具绑定主表保存
|
|
|
|
containerUnbindRecordMainDO = new ContainerUnbindRecordMainDO(); |
|
|
|
containerUnbindRecordMainDO.setFromWarehouseCode(containerMainDO.getWarehouseCode()); |
|
|
|
containerUnbindRecordMainDO.setContainerNumber(containerMainDO.getNumber()); |
|
|
|
containerUnbindRecordMainDO.setDepartmentCode(userApi.getUser(getLoginUserId()).getDeptId().toString()); |
|
|
|
containerUnbindRecordMainDO.setCreateTime(LocalDateTime.now()); |
|
|
|
number = serialNumberApi.generateCode(RuleCodeEnum.CONTAINER_UNBIND_RECORD.getCode()); |
|
|
|
containerUnbindRecordMainDO.setNumber(number); |
|
|
|
containerUnbindRecordMainMapper.insert(containerUnbindRecordMainDO); |
|
|
|
}else { |
|
|
|
number = containerUnbindRecordMainDO.getNumber(); |
|
|
|
} |
|
|
|
// 器具绑定子表保存
|
|
|
|
ContainerUnbindRecordDetailDO containerUnbindRecordDetailDO = new ContainerUnbindRecordDetailDO(); |
|
|
|
containerUnbindRecordDetailDO.setMasterId(containerUnbindRecordMainDO.getId()); |
|
|
|
containerUnbindRecordDetailDO.setNumber(number); |
|
|
|
containerUnbindRecordDetailDO.setContainerContentType(containerDetailDO.getContainerContentType()); |
|
|
|
containerUnbindRecordDetailDO.setContentNumber(containerDetailDO.getContentNumber()); |
|
|
|
containerUnbindRecordDetailDO.setItemCode(containerDetailDO.getItemCode()); |
|
|
|
containerUnbindRecordDetailDO.setBatch(containerDetailDO.getBatch()); |
|
|
|
containerUnbindRecordDetailDO.setInventoryStatus(containerDetailDO.getInventoryStatus()); |
|
|
|
containerUnbindRecordDetailDO.setUom(containerDetailDO.getUom()); |
|
|
|
containerUnbindRecordDetailDO.setQty(containerDetailDO.getQty()); |
|
|
|
containerUnbindRecordDetailMapper.insert(containerUnbindRecordDetailDO); |
|
|
|
} |
|
|
|
|
|
|
|
private void validateContainerDetailExists(Long id) { |
|
|
|
if (containerDetailMapper.selectById(id) == null) { |
|
|
|
private ContainerDetailDO validateContainerDetailExists(Long id) { |
|
|
|
ContainerDetailDO containerDetailDO = containerDetailMapper.selectById(id); |
|
|
|
if (containerDetailDO == null) { |
|
|
|
throw exception(CONTAINER_DETAIL_NOT_EXISTS); |
|
|
|
} |
|
|
|
return containerDetailDO; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|