车间生产:
各工序增加物料到货情况和申请物料情况信息的显示
仓储:
成品出库记录完善,合并的物料可以查看明细
退库记录查看详情完善
退库审核完善
系统:
登录时增加nickname的保存,后续在保存createby时需要修改成保存nickname
master
xs 8 months ago
parent 5e64b1ff12
commit af1cdacce6

@ -68,6 +68,11 @@ public class LoginUser implements Serializable
*/ */
private Integer processFloor; private Integer processFloor;
/**
*
*/
private String nickname;
public String getToken() public String getToken()
{ {
return token; return token;
@ -173,4 +178,12 @@ public class LoginUser implements Serializable
public void setProcessFloor(Integer processFloor) { public void setProcessFloor(Integer processFloor) {
this.processFloor = processFloor; this.processFloor = processFloor;
} }
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
} }

@ -310,4 +310,11 @@ public class MesConstants {
*/ */
public static final String MES_PURCHASE_APPALY_SYNC_YES="1";//已同步 public static final String MES_PURCHASE_APPALY_SYNC_YES="1";//已同步
public static final String MES_PURCHASE_APPALY_SYNC_NO="0";//未同步 public static final String MES_PURCHASE_APPALY_SYNC_NO="0";//未同步
/**生产告警信息类型*/
public static final String MES_ALARM_INFO_TYPE_STOCK_NOTENOUGH = "1";//库存报警
/**生产告警信息处理状态*/
public static final String MES_ALARM_INFO_HANDLE_STATUS_NO= "0";//未处理
public static final String MES_ALARM_INFO_HANDLE_STATUS_YES= "1";//已处理
} }

@ -57,4 +57,9 @@ public class SecurityConstants
* *
*/ */
public static final String DETAILS_PROCESS_FLOOR = "process_floor"; public static final String DETAILS_PROCESS_FLOOR = "process_floor";
/**
*
*/
public static final String DETAILS_NICKNAME = "nickname";
} }

@ -21,7 +21,7 @@ public class WmsConstants {
public static final String WMS_OPERATION_TYPE_MANUAL = "1";//人工 public static final String WMS_OPERATION_TYPE_MANUAL = "1";//人工
public static final String WMS_OPERATION_TYPE_FORCED = "2";//强制 public static final String WMS_OPERATION_TYPE_FORCED = "2";//强制
public static final String MWS_OPERATION_TYPE_DISPATCHD = "3";//调度 public static final String MWS_OPERATION_TYPE_DISPATCHD = "3";//调度
public static final String MWS_OPERATION_TYPE_SPLIT = "4";//合并拆分
/*原材料入库记录入库类型*/ /*原材料入库记录入库类型*/
public static final String RAW_INSTOCK_INSTOCK_TYPE_PURCHASE = "1";//采购入库 public static final String RAW_INSTOCK_INSTOCK_TYPE_PURCHASE = "1";//采购入库

@ -117,4 +117,14 @@ public class SecurityContextHolder
set(SecurityConstants.DETAILS_PROCESS_FLOOR, processFloor); set(SecurityConstants.DETAILS_PROCESS_FLOOR, processFloor);
} }
public static String getNickName()
{
return get(SecurityConstants.DETAILS_NICKNAME);
}
public static void setNickName(String nickname)
{
set(SecurityConstants.DETAILS_NICKNAME, nickname);
}
} }

@ -143,4 +143,17 @@ public class JwtUtils
{ {
return getValue(claims, SecurityConstants.DETAILS_PROCESS_FLOOR); return getValue(claims, SecurityConstants.DETAILS_PROCESS_FLOOR);
} }
/**
*
*
* @param claims
* @return
*/
public static String getNickName(Claims claims)
{
return getValue(claims, SecurityConstants.DETAILS_NICKNAME);
}
} }

@ -33,6 +33,7 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor
SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY));
SecurityContextHolder.setProcessId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_PROCESS_ID)); SecurityContextHolder.setProcessId(ServletUtils.getHeader(request, SecurityConstants.DETAILS_PROCESS_ID));
SecurityContextHolder.setProcessFloor(ServletUtils.getHeader(request, SecurityConstants.DETAILS_PROCESS_FLOOR)); SecurityContextHolder.setProcessFloor(ServletUtils.getHeader(request, SecurityConstants.DETAILS_PROCESS_FLOOR));
SecurityContextHolder.setProcessFloor(ServletUtils.getHeader(request, SecurityConstants.DETAILS_NICKNAME));
String token = SecurityUtils.getToken(); String token = SecurityUtils.getToken();
if (StringUtils.isNotEmpty(token)) if (StringUtils.isNotEmpty(token))

@ -50,6 +50,7 @@ public class TokenService
String token = IdUtils.fastUUID(); String token = IdUtils.fastUUID();
Long userId = loginUser.getSysUser().getUserId(); Long userId = loginUser.getSysUser().getUserId();
String userName = loginUser.getSysUser().getUserName(); String userName = loginUser.getSysUser().getUserName();
String nickName = loginUser.getSysUser().getNickName();
loginUser.setToken(token); loginUser.setToken(token);
loginUser.setUserid(userId); loginUser.setUserid(userId);
loginUser.setUsername(userName); loginUser.setUsername(userName);
@ -63,7 +64,7 @@ public class TokenService
claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
claimsMap.put(SecurityConstants.DETAILS_PROCESS_ID, loginUser.getProcessId()); claimsMap.put(SecurityConstants.DETAILS_PROCESS_ID, loginUser.getProcessId());
claimsMap.put(SecurityConstants.DETAILS_PROCESS_FLOOR, loginUser.getProcessFloor()); claimsMap.put(SecurityConstants.DETAILS_PROCESS_FLOOR, loginUser.getProcessFloor());
claimsMap.put(SecurityConstants.DETAILS_NICKNAME, nickName);
// 接口返回信息 // 接口返回信息
Map<String, Object> rspMap = new HashMap<String, Object>(); Map<String, Object> rspMap = new HashMap<String, Object>();
rspMap.put("access_token", JwtUtils.createToken(claimsMap)); rspMap.put("access_token", JwtUtils.createToken(claimsMap));

@ -56,6 +56,14 @@ public class SecurityUtils
return SecurityContextHolder.getProcessFloor(); return SecurityContextHolder.getProcessFloor();
} }
/**
*
*/
public static String getNickname()
{
return SecurityContextHolder.getNickName();
}
/** /**
* *
*/ */

@ -165,8 +165,8 @@ public class DmsBaseDeviceLedgerServiceImpl implements IDmsBaseDeviceLedgerServi
printContentJson.put("printContent", printInfoJsonArr.toString()); printContentJson.put("printContent", printInfoJsonArr.toString());
try { try {
// String hostIp = IpUtils.getIpAddr(); String hostIp = IpUtils.getIpAddr();
String hostIp="10.10.3.119"; // String hostIp="10.10.3.119";
String printKey = "print_" + hostIp; String printKey = "print_" + hostIp;
redisTemplate.opsForList().rightPush(printKey, printContentJson.toString()); redisTemplate.opsForList().rightPush(printKey, printContentJson.toString());
redisTemplate.expire(printKey,1, TimeUnit.DAYS); redisTemplate.expire(printKey,1, TimeUnit.DAYS);

@ -3,6 +3,8 @@ package com.hw.mes.controller;
import java.util.List; import java.util.List;
import java.io.IOException; import java.io.IOException;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.hw.mes.domain.MesStockAlarmDetail;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -102,4 +104,17 @@ public class MesAlarmInfoController extends BaseController
{ {
return toAjax(mesAlarmInfoService.deleteMesAlarmInfoByAlarmInfoIds(alarmInfoIds)); return toAjax(mesAlarmInfoService.deleteMesAlarmInfoByAlarmInfoIds(alarmInfoIds));
} }
/**
*
*/
@RequiresPermissions("mes:alarmInfo:list")
@GetMapping("/listStockAlarmDetail")
public TableDataInfo listStockAlarmDetail(MesStockAlarmDetail mesStockAlarmDetail)
{
startPage();
List<MesStockAlarmDetail> list = mesAlarmInfoService.selectMesStockAlarmDetailList(mesStockAlarmDetail);
return getDataTable(list);
}
} }

@ -8,10 +8,7 @@ import com.hw.common.log.annotation.Log;
import com.hw.common.log.enums.BusinessType; import com.hw.common.log.enums.BusinessType;
import com.hw.common.security.annotation.RequiresPermissions; import com.hw.common.security.annotation.RequiresPermissions;
import com.hw.common.security.utils.SecurityUtils; import com.hw.common.security.utils.SecurityUtils;
import com.hw.mes.api.domain.MesBaseBarcodeInfo; import com.hw.mes.api.domain.*;
import com.hw.mes.api.domain.MesBaseMaterialInfo;
import com.hw.mes.api.domain.MesBaseStationInfo;
import com.hw.mes.api.domain.MesSaleOrderRelate;
import com.hw.mes.domain.MesMaterialBom; import com.hw.mes.domain.MesMaterialBom;
import com.hw.mes.domain.MesProductPlan; import com.hw.mes.domain.MesProductPlan;
import com.hw.mes.domain.MesProductPlanDetail; import com.hw.mes.domain.MesProductPlanDetail;
@ -56,6 +53,9 @@ public class MesApiController extends BaseController {
@Autowired @Autowired
private IMesSaleOrderService mesSaleOrderService; private IMesSaleOrderService mesSaleOrderService;
@Autowired
private IMesPurchaseOrderService mesPurchaseOrderService;
/** /**
* *
@ -400,4 +400,17 @@ public class MesApiController extends BaseController {
List<MesSaleOrderRelate> list = mesSaleOrderService.selectMesSaleOrderRelateJoinProductList(mesSaleOrderRelate); List<MesSaleOrderRelate> list = mesSaleOrderService.selectMesSaleOrderRelateJoinProductList(mesSaleOrderRelate);
return getDataTable(list); return getDataTable(list);
} }
/**
*
* @param mesPurchaseOrder
* @return
*/
@GetMapping("/selectBindPurchaseOrders")
public TableDataInfo selectBindPurchaseOrders(MesPurchaseOrder mesPurchaseOrder) {
startPage();
List<MesPurchaseOrder> list = mesPurchaseOrderService.selectBindPurchaseOrders(mesPurchaseOrder);
return getDataTable(list);
}
} }

@ -173,4 +173,15 @@ public class MesBaseMaterialInfoController extends BaseController
return success(list); return success(list);
} }
/**
*
*
* @return
*/
@PostMapping(("/stockAlarm"))
public AjaxResult stockAlarm() {
return toAjax(mesBaseMaterialInfoService.stockAlarm());
}
} }

@ -30,12 +30,12 @@ public class MesAlarmInfo extends BaseEntity
private String handleStatus; private String handleStatus;
/** 创建时间 */ /** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date createDate; private Date createDate;
/** 最后更新时间 */ /** 最后更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date updateDate; private Date updateDate;

@ -0,0 +1,61 @@
package com.hw.mes.mapper;
import java.util.List;
import com.hw.mes.domain.MesStockAlarmDetail;
/**
* Mapper
*
* @author xins
* @date 2024-11-21
*/
public interface MesStockAlarmDetailMapper
{
/**
*
*
* @param stockAlarmDetailId
* @return
*/
public MesStockAlarmDetail selectMesStockAlarmDetailByStockAlarmDetailId(Long stockAlarmDetailId);
/**
*
*
* @param mesStockAlarmDetail
* @return
*/
public List<MesStockAlarmDetail> selectMesStockAlarmDetailList(MesStockAlarmDetail mesStockAlarmDetail);
/**
*
*
* @param mesStockAlarmDetail
* @return
*/
public int insertMesStockAlarmDetail(MesStockAlarmDetail mesStockAlarmDetail);
/**
*
*
* @param mesStockAlarmDetail
* @return
*/
public int updateMesStockAlarmDetail(MesStockAlarmDetail mesStockAlarmDetail);
/**
*
*
* @param stockAlarmDetailId
* @return
*/
public int deleteMesStockAlarmDetailByStockAlarmDetailId(Long stockAlarmDetailId);
/**
*
*
* @param stockAlarmDetailIds
* @return
*/
public int deleteMesStockAlarmDetailByStockAlarmDetailIds(Long[] stockAlarmDetailIds);
}

@ -2,6 +2,7 @@ package com.hw.mes.service;
import java.util.List; import java.util.List;
import com.hw.mes.domain.MesAlarmInfo; import com.hw.mes.domain.MesAlarmInfo;
import com.hw.mes.domain.MesStockAlarmDetail;
/** /**
* Service * Service
@ -58,4 +59,12 @@ public interface IMesAlarmInfoService
* @return * @return
*/ */
public int deleteMesAlarmInfoByAlarmInfoId(Long alarmInfoId); public int deleteMesAlarmInfoByAlarmInfoId(Long alarmInfoId);
/**
*
*
* @param mesStockAlarmDetail
* @return
*/
public List<MesStockAlarmDetail> selectMesStockAlarmDetailList(MesStockAlarmDetail mesStockAlarmDetail);
} }

@ -2,6 +2,7 @@ package com.hw.mes.service;
import java.util.List; import java.util.List;
import com.hw.mes.api.domain.MesBaseMaterialInfo; import com.hw.mes.api.domain.MesBaseMaterialInfo;
import org.springframework.transaction.annotation.Transactional;
/** /**
* Service * Service
@ -87,4 +88,9 @@ public interface IMesBaseMaterialInfoService
* @return * @return
*/ */
public MesBaseMaterialInfo selectMesBaseMaterialInfoByErpId(Long erpId); public MesBaseMaterialInfo selectMesBaseMaterialInfoByErpId(Long erpId);
/**
*
*/
public int stockAlarm();
} }

@ -166,4 +166,12 @@ public interface IMesPurchaseOrderService
* @return * @return
*/ */
public MesPurchaseOrder selectMesPurchaseOrderJoinMaterialByPurchaseOrderId(Long purchaseOrderId); public MesPurchaseOrder selectMesPurchaseOrderJoinMaterialByPurchaseOrderId(Long purchaseOrderId);
/**
* join material
*
* @param mesPurchaseOrder
* @return
*/
public List<MesPurchaseOrder> selectBindPurchaseOrders(MesPurchaseOrder mesPurchaseOrder);
} }

@ -1,6 +1,8 @@
package com.hw.mes.service.impl; package com.hw.mes.service.impl;
import java.util.List; import java.util.List;
import com.hw.mes.mapper.MesStockAlarmDetailMapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
@ -23,6 +25,9 @@ public class MesAlarmInfoServiceImpl implements IMesAlarmInfoService
@Autowired @Autowired
private MesAlarmInfoMapper mesAlarmInfoMapper; private MesAlarmInfoMapper mesAlarmInfoMapper;
@Autowired
private MesStockAlarmDetailMapper mesStockAlarmDetailMapper;
/** /**
* *
* *
@ -128,4 +133,18 @@ public class MesAlarmInfoServiceImpl implements IMesAlarmInfoService
} }
} }
} }
/**
*
*
* @param mesStockAlarmDetail
* @return
*/
@Override
public List<MesStockAlarmDetail> selectMesStockAlarmDetailList(MesStockAlarmDetail mesStockAlarmDetail)
{
return mesStockAlarmDetailMapper.selectMesStockAlarmDetailList(mesStockAlarmDetail);
}
} }

@ -1,10 +1,15 @@
package com.hw.mes.service.impl; package com.hw.mes.service.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import com.alibaba.fastjson2.JSONObject;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.hw.common.core.constant.MesConstants; import com.hw.common.core.constant.MesConstants;
import com.hw.common.core.constant.SecurityConstants;
import com.hw.common.core.constant.SystemConstants;
import com.hw.common.core.exception.ServiceException; import com.hw.common.core.exception.ServiceException;
import com.hw.common.core.utils.DateUtils; import com.hw.common.core.utils.DateUtils;
import com.hw.common.core.utils.StringUtils; import com.hw.common.core.utils.StringUtils;
@ -13,8 +18,14 @@ import com.hw.common.core.utils.uuid.Seq;
import com.hw.common.core.web.page.PageDomain; import com.hw.common.core.web.page.PageDomain;
import com.hw.common.core.web.page.TableSupport; import com.hw.common.core.web.page.TableSupport;
import com.hw.common.security.utils.SecurityUtils; import com.hw.common.security.utils.SecurityUtils;
import com.hw.mes.api.RemoteMesService;
import com.hw.mes.domain.MesAlarmInfo;
import com.hw.mes.domain.MesStockAlarmDetail;
import com.hw.mes.mapper.MesAlarmInfoMapper;
import com.hw.mes.mapper.MesBaseBarcodeInfoMapper; import com.hw.mes.mapper.MesBaseBarcodeInfoMapper;
import com.hw.mes.mapper.MesOrderBindMapper; import com.hw.mes.mapper.MesOrderBindMapper;
import com.hw.system.api.RemoteSysCommonService;
import com.hw.system.api.domain.common.SysPointRouter;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.hw.mes.mapper.MesBaseMaterialInfoMapper; import com.hw.mes.mapper.MesBaseMaterialInfoMapper;
@ -22,6 +33,8 @@ import com.hw.mes.api.domain.MesBaseMaterialInfo;
import com.hw.mes.service.IMesBaseMaterialInfoService; import com.hw.mes.service.IMesBaseMaterialInfoService;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/** /**
* Service * Service
* *
@ -39,6 +52,12 @@ public class MesBaseMaterialInfoServiceImpl implements IMesBaseMaterialInfoServi
@Autowired @Autowired
private MesOrderBindMapper mesOrderBindMapper; private MesOrderBindMapper mesOrderBindMapper;
@Autowired
private MesAlarmInfoMapper mesAlarmInfoMapper;
@Resource
private RemoteSysCommonService remoteSysCommonService;
/** /**
* *
* *
@ -180,36 +199,89 @@ public class MesBaseMaterialInfoServiceImpl implements IMesBaseMaterialInfoServi
} }
/**
*
*/
@Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void stockAlarm(){ public int stockAlarm() {
String nickName = "auto";
Date currentDate = new Date();
MesAlarmInfo mesAlarmInfo = new MesAlarmInfo();
mesAlarmInfo.setAlarmInfoType(MesConstants.MES_BARCODE_TYPE_RAW);
mesAlarmInfo.setHandleStatus(MesConstants.MES_ALARM_INFO_HANDLE_STATUS_NO);
mesAlarmInfo.setCreateDate(currentDate);
mesAlarmInfo.setCreateBy(nickName);
mesAlarmInfoMapper.insertMesAlarmInfo(mesAlarmInfo);
//return list Long alarmInfoId = mesAlarmInfo.getAlarmInfoId();
stockAlarm(1); List<MesStockAlarmDetail> allStockAlarmDetailList = new ArrayList<>();
stockAlarm(allStockAlarmDetailList, alarmInfoId, 1, nickName, currentDate);
if (allStockAlarmDetailList.size() <= 0) {
throw new ServiceException("无报警信息");
} else {
List<SysPointRouter> sysPointRouterList = new ArrayList<>();
SysPointRouter sysPointRouter = getSysPointRouter(alarmInfoId, nickName, currentDate);
sysPointRouterList.add(sysPointRouter);
remoteSysCommonService.insertSysPointRouterPort(sysPointRouterList, SecurityConstants.INNER);
}
return 1;
} }
public void stockAlarm(Integer startRow){ private static SysPointRouter getSysPointRouter(Long alarmInfoId, String nickName, Date currentDate) {
SysPointRouter sysPointRouter = new SysPointRouter();
sysPointRouter.setModuleCode("MES");
sysPointRouter.setPointType(SystemConstants.SYS_ROUTER_POINT_TYPE_ALARM);
sysPointRouter.setRouterAddress("/mes/info/alarmInfo");
JSONObject routerAddressDetailJson = new JSONObject();
routerAddressDetailJson.put("alarmInfoId", alarmInfoId);
sysPointRouter.setRouterAddressDetail(routerAddressDetailJson.toString());
sysPointRouter.setRemark("库存不足报警");
sysPointRouter.setCreateBy(nickName);
sysPointRouter.setCreateTime(currentDate);
return sysPointRouter;
}
public void stockAlarm(List<MesStockAlarmDetail> stockAlarmDetailList, Long alarmInfoId, Integer startRow, String nickName, Date currentDate) {
List<MesStockAlarmDetail> allStockAlarmDetailList = new ArrayList<>();
MesBaseMaterialInfo queryMaterialInfo = new MesBaseMaterialInfo(); MesBaseMaterialInfo queryMaterialInfo = new MesBaseMaterialInfo();
Integer pageSize = 100; Integer pageSize = 100;
Integer pageNum = startRow/pageSize+1; Integer pageNum = startRow / pageSize + 1;
PageHelper.startPage(1, 100, ""); PageHelper.startPage(pageNum, 100, "");
List<MesBaseMaterialInfo> mesBaseMaterialInfoList = mesBaseMaterialInfoMapper.selectMaterialInfoStockInfos(queryMaterialInfo); List<MesBaseMaterialInfo> mesBaseMaterialInfoList = mesBaseMaterialInfoMapper.selectMaterialInfoStockInfos(queryMaterialInfo);
for(MesBaseMaterialInfo mesBaseMaterialInfo:mesBaseMaterialInfoList){ for (MesBaseMaterialInfo mesBaseMaterialInfo : mesBaseMaterialInfoList) {
BigDecimal safeStockAmount = mesBaseMaterialInfo.getSafeStockAmount(); BigDecimal safeStockAmount = mesBaseMaterialInfo.getSafeStockAmount();
if(safeStockAmount!=null){ if (safeStockAmount != null) {
BigDecimal stockAmount = mesBaseMaterialInfo.getStockAmount()==null?BigDecimal.ZERO:mesBaseMaterialInfo.getStockAmount(); BigDecimal stockAmount = mesBaseMaterialInfo.getStockAmount() == null ? BigDecimal.ZERO : mesBaseMaterialInfo.getStockAmount();
//如果库存数量小于安全库存 //如果库存数量小于安全库存
if(stockAmount.compareTo(safeStockAmount)<1){ if (stockAmount.compareTo(safeStockAmount) < 1) {
MesStockAlarmDetail mesStockAlarmDetail = new MesStockAlarmDetail();
mesStockAlarmDetail.setAlarmInfoId(alarmInfoId);
mesStockAlarmDetail.setMaterialId(mesBaseMaterialInfo.getMaterialId());
mesStockAlarmDetail.setMaterialCode(mesBaseMaterialInfo.getMaterialCode());
mesStockAlarmDetail.setMaterialName(mesBaseMaterialInfo.getMaterialName());
mesStockAlarmDetail.setMaterialSpec(mesBaseMaterialInfo.getMaterialSpec());
mesStockAlarmDetail.setSafeStockAmount(mesBaseMaterialInfo.getSafeStockAmount());
mesStockAlarmDetail.setStockAmount(mesBaseMaterialInfo.getStockAmount());
mesStockAlarmDetail.setCreateDate(currentDate);
mesStockAlarmDetail.setCreateBy(nickName);
stockAlarmDetailList.add(mesStockAlarmDetail);
allStockAlarmDetailList.add(mesStockAlarmDetail);
} }
} }
} }
if (stockAlarmDetailList != null && !stockAlarmDetailList.isEmpty()) {
mesAlarmInfoMapper.batchMesStockAlarmDetail(stockAlarmDetailList);
}
//如果返回的数组的数量等于分页数量,则继续获取下一页数据 //如果返回的数组的数量等于分页数量,则继续获取下一页数据
if (mesBaseMaterialInfoList.size() == pageSize) { if (mesBaseMaterialInfoList.size() == pageSize) {
//通过递归同步所有供应商,测试先不用 //通过递归同步所有供应商,测试先不用
stockAlarm(startRow + mesBaseMaterialInfoList.size()); stockAlarm(allStockAlarmDetailList, alarmInfoId, startRow + mesBaseMaterialInfoList.size(), nickName, currentDate);
} }
} }
} }

@ -597,4 +597,18 @@ public class MesPurchaseOrderServiceImpl implements IMesPurchaseOrderService {
public MesPurchaseOrder selectMesPurchaseOrderJoinMaterialByPurchaseOrderId(Long purchaseOrderId) { public MesPurchaseOrder selectMesPurchaseOrderJoinMaterialByPurchaseOrderId(Long purchaseOrderId) {
return mesPurchaseOrderMapper.selectMesPurchaseOrderJoinMaterialByPurchaseOrderId(purchaseOrderId); return mesPurchaseOrderMapper.selectMesPurchaseOrderJoinMaterialByPurchaseOrderId(purchaseOrderId);
} }
/**
* join material
*
* @param mesPurchaseOrder
* @return
*/
@Override
public List<MesPurchaseOrder> selectBindPurchaseOrders(MesPurchaseOrder mesPurchaseOrder) {
mesPurchaseOrder.setBindFlag("1");
return mesPurchaseOrderMapper.selectMesPurchaseOrderJoinList(mesPurchaseOrder);
}
} }

@ -287,6 +287,8 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService {
public int updateMesSaleOrderMaterials(List<MesSaleOrderMaterial> mesSaleOrderMaterialList) { public int updateMesSaleOrderMaterials(List<MesSaleOrderMaterial> mesSaleOrderMaterialList) {
List<MesSaleOrderMaterial> toInsertedMesSaleOrderMaterialList = new ArrayList<>(); List<MesSaleOrderMaterial> toInsertedMesSaleOrderMaterialList = new ArrayList<>();
// List<MesSaleOrderMaterial> toUpdatedMesSaleOrderMateriaList = new ArrayList<>(); // List<MesSaleOrderMaterial> toUpdatedMesSaleOrderMateriaList = new ArrayList<>();
Date currentDate = new Date();
String nickName = SecurityUtils.getLoginUser().getNickname();
for (MesSaleOrderMaterial mesSaleOrderMaterial : mesSaleOrderMaterialList) { for (MesSaleOrderMaterial mesSaleOrderMaterial : mesSaleOrderMaterialList) {
if (mesSaleOrderMaterial.getUsedAmount() != null && mesSaleOrderMaterial.getUsedAmount().compareTo(BigDecimal.ZERO) > 0) { if (mesSaleOrderMaterial.getUsedAmount() != null && mesSaleOrderMaterial.getUsedAmount().compareTo(BigDecimal.ZERO) > 0) {
BigDecimal realOutstockAmount = mesSaleOrderMaterial.getRealOutstockAmount(); BigDecimal realOutstockAmount = mesSaleOrderMaterial.getRealOutstockAmount();
@ -304,10 +306,13 @@ public class MesSaleOrderServiceImpl implements IMesSaleOrderService {
if (mesSaleOrderMaterial.getSaleOrderMaterialId() != null) { if (mesSaleOrderMaterial.getSaleOrderMaterialId() != null) {
// toUpdatedMesSaleOrderMateriaList.add(mesSaleOrderMaterial); // toUpdatedMesSaleOrderMateriaList.add(mesSaleOrderMaterial);
mesSaleOrderMaterial.setUpdateBy(nickName);
mesSaleOrderMaterial.setUpdateTime(currentDate);
mesSaleOrderMaterialMapper.updateMesSaleOrderMaterial(mesSaleOrderMaterial); mesSaleOrderMaterialMapper.updateMesSaleOrderMaterial(mesSaleOrderMaterial);
} else { } else {
mesSaleOrderMaterial.setCreateTime(currentDate);
mesSaleOrderMaterial.setCreateBy(nickName);
toInsertedMesSaleOrderMaterialList.add(mesSaleOrderMaterial); toInsertedMesSaleOrderMaterialList.add(mesSaleOrderMaterial);
} }
} }

@ -45,6 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createDate != null "> and create_date = #{createDate}</if> <if test="createDate != null "> and create_date = #{createDate}</if>
<if test="updateDate != null "> and update_date = #{updateDate}</if> <if test="updateDate != null "> and update_date = #{updateDate}</if>
</where> </where>
order by alarm_info_id desc
</select> </select>
<select id="selectMesAlarmInfoByAlarmInfoId" parameterType="Long" resultMap="MesAlarmInfoMesStockAlarmDetailResult"> <select id="selectMesAlarmInfoByAlarmInfoId" parameterType="Long" resultMap="MesAlarmInfoMesStockAlarmDetailResult">

@ -45,10 +45,6 @@
<result property="warehouseId" column="warehouse_id"/> <result property="warehouseId" column="warehouse_id"/>
<result property="purchasePriceUnitId" column="purchase_price_unit_id"/> <result property="purchasePriceUnitId" column="purchase_price_unit_id"/>
<result property="stockAmount" column="stock_amount"/> <result property="stockAmount" column="stock_amount"/>
<result property="realOutstockAmount" column="real_outstock_amount"/>
<result property="totalUsedAmount" column="total_used_amount"/>
<result property="ussedAmount" column="used_amount"/>
<result property="saleOrderMaterialId" column="sale_order_material_id"/>
</resultMap> </resultMap>
<sql id="selectMesBaseMaterialInfoVo"> <sql id="selectMesBaseMaterialInfoVo">
@ -390,7 +386,7 @@
mbmi.material_name, mbmi.material_name,
mbmi.material_spec, mbmi.material_spec,
mbmi.safe_stock_amount, mbmi.safe_stock_amount,
(select sum(total_amount) from wms_stock_total wst where wst.material_id=mbmi.material_id) as stock_amount (select ifnull(sum(total_amount),0) from wms_stock_total wst where wst.material_id=mbmi.material_id) as stock_amount
from mes_base_material_info mbmi from mes_base_material_info mbmi
<where> <where>
<if test="erpId != null ">and erp_id = #{erpId}</if> <if test="erpId != null ">and erp_id = #{erpId}</if>

@ -439,6 +439,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="srcBillNo != null and srcBillNo != ''"> and mpo.src_bill_no like concat('%', #{srcBillNo}, '%')</if> <if test="srcBillNo != null and srcBillNo != ''"> and mpo.src_bill_no like concat('%', #{srcBillNo}, '%')</if>
<if test="tondBase != null and tondBase != ''"> and mpo.tond_base like concat('%', #{tondBase}, '%')</if> <if test="tondBase != null and tondBase != ''"> and mpo.tond_base like concat('%', #{tondBase}, '%')</if>
<if test="bindFlag != null and bindFlag != ''"> and exists (select 1 from mes_order_bind mob where mob.purchase_order_id=mpo.purchase_order_id and mob.sale_order_id=#{saleOrderId})</if>
</where> </where>
order by mpo.erp_modify_date desc order by mpo.erp_modify_date desc
</select> </select>

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hw.mes.mapper.MesStockAlarmDetailMapper">
<resultMap type="MesStockAlarmDetail" id="MesStockAlarmDetailResult">
<result property="stockAlarmDetailId" column="stock_alarm_detail_id" />
<result property="alarmInfoId" column="alarm_info_id" />
<result property="materialId" column="material_id" />
<result property="materialCode" column="material_code" />
<result property="materialName" column="material_name" />
<result property="materialSpec" column="material_spec" />
<result property="safeStockAmount" column="safe_stock_amount" />
<result property="stockAmount" column="stock_amount" />
<result property="createBy" column="create_by" />
<result property="createDate" column="create_date" />
<result property="updateBy" column="update_by" />
<result property="updateDate" column="update_date" />
</resultMap>
<sql id="selectMesStockAlarmDetailVo">
select stock_alarm_detail_id, alarm_info_id, material_id, material_code, material_name, material_spec, safe_stock_amount, stock_amount, create_by, create_date, update_by, update_date from mes_stock_alarm_detail
</sql>
<select id="selectMesStockAlarmDetailList" parameterType="MesStockAlarmDetail" resultMap="MesStockAlarmDetailResult">
<include refid="selectMesStockAlarmDetailVo"/>
<where>
<if test="alarmInfoId != null "> and alarm_info_id = #{alarmInfoId}</if>
<if test="materialId != null "> and material_id = #{materialId}</if>
<if test="materialCode != null and materialCode != ''"> and material_code = #{materialCode}</if>
<if test="materialName != null and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
<if test="materialSpec != null and materialSpec != ''"> and material_spec = #{materialSpec}</if>
<if test="safeStockAmount != null "> and safe_stock_amount = #{safeStockAmount}</if>
<if test="stockAmount != null "> and stock_amount = #{stockAmount}</if>
<if test="createDate != null "> and create_date = #{createDate}</if>
<if test="updateDate != null "> and update_date = #{updateDate}</if>
</where>
</select>
<select id="selectMesStockAlarmDetailByStockAlarmDetailId" parameterType="Long" resultMap="MesStockAlarmDetailResult">
<include refid="selectMesStockAlarmDetailVo"/>
where stock_alarm_detail_id = #{stockAlarmDetailId}
</select>
<insert id="insertMesStockAlarmDetail" parameterType="MesStockAlarmDetail" useGeneratedKeys="true" keyProperty="stockAlarmDetailId">
insert into mes_stock_alarm_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="alarmInfoId != null">alarm_info_id,</if>
<if test="materialId != null">material_id,</if>
<if test="materialCode != null">material_code,</if>
<if test="materialName != null">material_name,</if>
<if test="materialSpec != null">material_spec,</if>
<if test="safeStockAmount != null">safe_stock_amount,</if>
<if test="stockAmount != null">stock_amount,</if>
<if test="createBy != null">create_by,</if>
<if test="createDate != null">create_date,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateDate != null">update_date,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="alarmInfoId != null">#{alarmInfoId},</if>
<if test="materialId != null">#{materialId},</if>
<if test="materialCode != null">#{materialCode},</if>
<if test="materialName != null">#{materialName},</if>
<if test="materialSpec != null">#{materialSpec},</if>
<if test="safeStockAmount != null">#{safeStockAmount},</if>
<if test="stockAmount != null">#{stockAmount},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createDate != null">#{createDate},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateDate != null">#{updateDate},</if>
</trim>
</insert>
<update id="updateMesStockAlarmDetail" parameterType="MesStockAlarmDetail">
update mes_stock_alarm_detail
<trim prefix="SET" suffixOverrides=",">
<if test="alarmInfoId != null">alarm_info_id = #{alarmInfoId},</if>
<if test="materialId != null">material_id = #{materialId},</if>
<if test="materialCode != null">material_code = #{materialCode},</if>
<if test="materialName != null">material_name = #{materialName},</if>
<if test="materialSpec != null">material_spec = #{materialSpec},</if>
<if test="safeStockAmount != null">safe_stock_amount = #{safeStockAmount},</if>
<if test="stockAmount != null">stock_amount = #{stockAmount},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createDate != null">create_date = #{createDate},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateDate != null">update_date = #{updateDate},</if>
</trim>
where stock_alarm_detail_id = #{stockAlarmDetailId}
</update>
<delete id="deleteMesStockAlarmDetailByStockAlarmDetailId" parameterType="Long">
delete from mes_stock_alarm_detail where stock_alarm_detail_id = #{stockAlarmDetailId}
</delete>
<delete id="deleteMesStockAlarmDetailByStockAlarmDetailIds" parameterType="String">
delete from mes_stock_alarm_detail where stock_alarm_detail_id in
<foreach item="stockAlarmDetailId" collection="array" open="(" separator="," close=")">
#{stockAlarmDetailId}
</foreach>
</delete>
</mapper>

@ -3,6 +3,7 @@ package com.hw.system.common.controller;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.hw.common.security.annotation.InnerAuth;
import com.hw.common.security.utils.SecurityUtils; import com.hw.common.security.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -104,9 +105,12 @@ public class SysPointRouterController extends BaseController {
* @param sysPointRouterList * @param sysPointRouterList
* @return * @return
*/ */
@InnerAuth
@Log(title = "提示路由信息", businessType = BusinessType.INSERT) @Log(title = "提示路由信息", businessType = BusinessType.INSERT)
@PostMapping("/insertPointRouterInfo") @PostMapping("/insertPointRouterInfo")
public AjaxResult insertPointRouterInfo(@RequestBody List<SysPointRouter> sysPointRouterList) { public AjaxResult insertPointRouterInfo(@RequestBody List<SysPointRouter> sysPointRouterList) {
return toAjax(sysPointRouterService.insertSysPointRouterList(sysPointRouterList)); return toAjax(sysPointRouterService.insertSysPointRouterList(sysPointRouterList));
} }
} }

@ -300,4 +300,14 @@ public class WmsApiController extends BaseController {
return success(wmsTransferService.checkSemiOutstock(wmsTransfer)); return success(wmsTransferService.checkSemiOutstock(wmsTransfer));
} }
/**
*
*/
@GetMapping("/getRawOutstocks")
public TableDataInfo getRawOutstocks(WmsRawOutstock wmsRawOutstock) {
startPage();
List<WmsRawOutstock> list = wmsRawOutstockService.selectWmsRawOutstockJoinMaterialList(wmsRawOutstock);
return getDataTable(list);
}
} }

@ -450,7 +450,7 @@ public class WmsMobileController extends BaseController {
@GetMapping(value = "/getMoveList") @GetMapping(value = "/getMoveList")
public TableDataInfo getMoveList(WmsMove wmsMove) { public TableDataInfo getMoveList(WmsMove wmsMove) {
startPage(); startPage();
wmsMove.setMoveWay(WmsConstants.WMS_MOVEMERGE_WAY_MANUAL); // wmsMove.setMoveWay(WmsConstants.WMS_MOVEMERGE_WAY_MANUAL);
wmsMove.setExecuteStatusStr(WmsConstants.WMS_EXECUTE_STATUS_TOEXECUTE + "," + WmsConstants.WMS_MOVE_EXECUTE_STATUS_EXECUTING + "," + WmsConstants.WMS_MOVE_EXECUTE_STATUS_OUTSTOCK_FINISH); wmsMove.setExecuteStatusStr(WmsConstants.WMS_EXECUTE_STATUS_TOEXECUTE + "," + WmsConstants.WMS_MOVE_EXECUTE_STATUS_EXECUTING + "," + WmsConstants.WMS_MOVE_EXECUTE_STATUS_OUTSTOCK_FINISH);
List<WmsMove> wmsMoves = wmsMoveService.selectWmsMoveJoinList(wmsMove); List<WmsMove> wmsMoves = wmsMoveService.selectWmsMoveJoinList(wmsMove);
return getDataTable(wmsMoves); return getDataTable(wmsMoves);

@ -4,6 +4,7 @@ import java.util.List;
import java.io.IOException; import java.io.IOException;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.hw.common.core.constant.WmsConstants;
import com.hw.common.security.annotation.InnerAuth; import com.hw.common.security.annotation.InnerAuth;
import com.hw.wms.api.domain.vo.WmsProductStockVo; import com.hw.wms.api.domain.vo.WmsProductStockVo;
import com.hw.wms.domain.vo.WmsProductOutstockAuditVo; import com.hw.wms.domain.vo.WmsProductOutstockAuditVo;
@ -48,6 +49,8 @@ public class WmsProductOutstockController extends BaseController
public TableDataInfo list(WmsProductOutstock wmsProductOutstock) public TableDataInfo list(WmsProductOutstock wmsProductOutstock)
{ {
startPage(); startPage();
wmsProductOutstock.setOperationTypeStr(WmsConstants.WMS_OPERATION_TYPE_AUTO+","+WmsConstants.WMS_OPERATION_TYPE_MANUAL+","
+WmsConstants.WMS_OPERATION_TYPE_FORCED+","+WmsConstants.MWS_OPERATION_TYPE_DISPATCHD);
List<WmsProductOutstock> list = wmsProductOutstockService.selectWmsProductOutstockJoinList(wmsProductOutstock); List<WmsProductOutstock> list = wmsProductOutstockService.selectWmsProductOutstockJoinList(wmsProductOutstock);
return getDataTable(list); return getDataTable(list);
} }

@ -76,7 +76,7 @@ public class WmsRawReturnController extends BaseController
@GetMapping(value = "/{rawReturnId}") @GetMapping(value = "/{rawReturnId}")
public AjaxResult getInfo(@PathVariable("rawReturnId") Long rawReturnId) public AjaxResult getInfo(@PathVariable("rawReturnId") Long rawReturnId)
{ {
return success(wmsRawReturnService.selectWmsRawReturnByRawReturnId(rawReturnId)); return success(wmsRawReturnService.selectWmsRawReturnJoinMaterialByRawReturnId(rawReturnId));
} }
@ -101,8 +101,8 @@ public class WmsRawReturnController extends BaseController
public TableDataInfo auditList(WmsRawReturn wmsRawReturn) public TableDataInfo auditList(WmsRawReturn wmsRawReturn)
{ {
startPage(); startPage();
// List<WmsRawReturn> list = wmsRawReturnService.selectWmsRawReturnJoinList(wmsRawReturn); //旧版不group by List<WmsRawReturn> list = wmsRawReturnService.selectWmsRawReturnJoinList(wmsRawReturn); //旧版不group by
List<WmsRawReturn> list = wmsRawReturnService.selectWmsAuditList(wmsRawReturn); // List<WmsRawReturn> list = wmsRawReturnService.selectWmsAuditList(wmsRawReturn);
return getDataTable(list); return getDataTable(list);
} }

@ -163,6 +163,9 @@ public class WmsProductOutstock extends BaseEntity {
private String executeIncompleteFlag;//执行未完成标识 private String executeIncompleteFlag;//执行未完成标识
private String operationTypeStr;
private String materialClassfication;
/** /**
* *
@ -489,6 +492,22 @@ public class WmsProductOutstock extends BaseEntity {
this.executeIncompleteFlag = executeIncompleteFlag; this.executeIncompleteFlag = executeIncompleteFlag;
} }
public String getOperationTypeStr() {
return operationTypeStr;
}
public void setOperationTypeStr(String operationTypeStr) {
this.operationTypeStr = operationTypeStr;
}
public String getMaterialClassfication() {
return materialClassfication;
}
public void setMaterialClassfication(String materialClassfication) {
this.materialClassfication = materialClassfication;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

@ -101,6 +101,9 @@ public class WmsRawOutstock extends BaseEntity {
@Excel(name = "已出库数量") @Excel(name = "已出库数量")
private BigDecimal realOutstockAmount; private BigDecimal realOutstockAmount;
/**已分摊使用的数量*/
private BigDecimal usedAmount;
/** 出库目的地 */ /** 出库目的地 */
@Excel(name = "出库目的地") @Excel(name = "出库目的地")
private String endStationCode; private String endStationCode;
@ -205,6 +208,8 @@ public class WmsRawOutstock extends BaseEntity {
private String materialName; private String materialName;
private String materialSpec;
private BigDecimal planAmount; private BigDecimal planAmount;
/** /**
@ -384,6 +389,14 @@ public class WmsRawOutstock extends BaseEntity {
this.realOutstockAmount = realOutstockAmount; this.realOutstockAmount = realOutstockAmount;
} }
public BigDecimal getUsedAmount() {
return usedAmount;
}
public void setUsedAmount(BigDecimal usedAmount) {
this.usedAmount = usedAmount;
}
public String getEndStationCode() { public String getEndStationCode() {
return endStationCode; return endStationCode;
} }
@ -552,6 +565,14 @@ public class WmsRawOutstock extends BaseEntity {
this.materialName = materialName; this.materialName = materialName;
} }
public String getMaterialSpec() {
return materialSpec;
}
public void setMaterialSpec(String materialSpec) {
this.materialSpec = materialSpec;
}
public BigDecimal getPlanAmount() { public BigDecimal getPlanAmount() {
return planAmount; return planAmount;
} }

@ -93,7 +93,7 @@ public class WmsRawReturn extends BaseEntity
private String applyBy; private String applyBy;
/** 申请时间 */ /** 申请时间 */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date applyDate; private Date applyDate;
@ -102,7 +102,7 @@ public class WmsRawReturn extends BaseEntity
private String auditBy; private String auditBy;
/** 审核时间 */ /** 审核时间 */
@JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date auditDate; private Date auditDate;

@ -62,6 +62,8 @@ public class WmsRawReturnDetail extends BaseEntity
@Excel(name = "同步ERP状态(0:失败,1成功)") @Excel(name = "同步ERP状态(0:失败,1成功)")
private String erpStatus; private String erpStatus;
private BigDecimal erpAmount;
/** 退库人 */ /** 退库人 */
@Excel(name = "退库人") @Excel(name = "退库人")
private String returnPerson; private String returnPerson;
@ -101,6 +103,8 @@ public class WmsRawReturnDetail extends BaseEntity
private String materialName; private String materialName;
private String materialSpec;
private String applyBy; private String applyBy;
private String taskType; private String taskType;
@ -198,6 +202,15 @@ public class WmsRawReturnDetail extends BaseEntity
{ {
return executeStatus; return executeStatus;
} }
public BigDecimal getErpAmount() {
return erpAmount;
}
public void setErpAmount(BigDecimal erpAmount) {
this.erpAmount = erpAmount;
}
public void setErpStatus(String erpStatus) public void setErpStatus(String erpStatus)
{ {
this.erpStatus = erpStatus; this.erpStatus = erpStatus;
@ -296,6 +309,14 @@ public class WmsRawReturnDetail extends BaseEntity
this.materialName = materialName; this.materialName = materialName;
} }
public String getMaterialSpec() {
return materialSpec;
}
public void setMaterialSpec(String materialSpec) {
this.materialSpec = materialSpec;
}
public String getApplyBy() { public String getApplyBy() {
return applyBy; return applyBy;
} }

@ -1,6 +1,7 @@
package com.hw.wms.mapper; package com.hw.wms.mapper;
import java.util.List; import java.util.List;
import com.hw.wms.domain.WmsRawReturnDetail; import com.hw.wms.domain.WmsRawReturnDetail;
/** /**
@ -9,8 +10,7 @@ import com.hw.wms.domain.WmsRawReturnDetail;
* @author xins * @author xins
* @date 2023-12-22 * @date 2023-12-22
*/ */
public interface WmsRawReturnDetailMapper public interface WmsRawReturnDetailMapper {
{
/** /**
* 退 * 退
* *
@ -60,8 +60,6 @@ public interface WmsRawReturnDetailMapper
public int deleteWmsRawReturnDetailByRawReturnDetailIds(Long[] rawReturnDetailIds); public int deleteWmsRawReturnDetailByRawReturnDetailIds(Long[] rawReturnDetailIds);
/** /**
* 退(使) * 退(使)
* *
@ -71,4 +69,11 @@ public interface WmsRawReturnDetailMapper
public List<WmsRawReturnDetail> selectAuditPassRawReturnDetails(WmsRawReturnDetail wmsRawReturnDetail); public List<WmsRawReturnDetail> selectAuditPassRawReturnDetails(WmsRawReturnDetail wmsRawReturnDetail);
/**
* 退,join material
*
* @param wmsRawReturnDetail 退
* @return 退
*/
public List<WmsRawReturnDetail> selectWmsRawReturnDetailJoinMaterialList(WmsRawReturnDetail wmsRawReturnDetail);
} }

@ -127,4 +127,13 @@ public interface WmsRawReturnMapper
* @return 退VO * @return 退VO
*/ */
List<WmsRawReturn> selectGetRawReturnByTaskCode(WmsRawReturn queryRawReturn); List<WmsRawReturn> selectGetRawReturnByTaskCode(WmsRawReturn queryRawReturn);
/**
* 退,join material
*
* @param rawReturnId 退
* @return 退
*/
public WmsRawReturn selectWmsRawReturnJoinMaterialByRawReturnId(Long rawReturnId);
} }

@ -162,5 +162,12 @@ public interface IWmsRawOutstockService
* @return * @return
*/ */
public int returnOutstock(WmsReturnOutstockVo wmsReturnOutstockVo); public int returnOutstock(WmsReturnOutstockVo wmsReturnOutstockVo);
/**
* join materialwarehouse
* @param wmsRawOutstock
* @return
*/
public List<WmsRawOutstock> selectWmsRawOutstockJoinMaterialList(WmsRawOutstock wmsRawOutstock);
} }

@ -136,4 +136,12 @@ public interface IWmsRawReturnService
* @return 退 * @return 退
*/ */
List<WmsRawReturn> selectWmsAuditList(WmsRawReturn wmsRawReturn); List<WmsRawReturn> selectWmsAuditList(WmsRawReturn wmsRawReturn);
/**
* 退join material
*
* @param rawReturnId 退
* @return 退
*/
public WmsRawReturn selectWmsRawReturnJoinMaterialByRawReturnId(Long rawReturnId);
} }

@ -186,7 +186,7 @@ public class WmsMoveServiceImpl implements IWmsMoveService {
selectWmsBaseWarehouseByWarehouseId(oriLocation.getWarehouseId()); selectWmsBaseWarehouseByWarehouseId(oriLocation.getWarehouseId());
String warehouseType = baseWareHouse.getWarehouseType(); String warehouseType = baseWareHouse.getWarehouseType();
Date currentDate = new Date(); Date currentDate = new Date();
String userName = SecurityUtils.getUsername(); String userName = SecurityUtils.getLoginUser().getNickname();
String warehouseInstockType = baseWareHouse.getWarehouseInstockType(); String warehouseInstockType = baseWareHouse.getWarehouseInstockType();
String moveWay = "", operationType = ""; String moveWay = "", operationType = "";
BigDecimal planAmount = null; BigDecimal planAmount = null;
@ -487,7 +487,7 @@ public class WmsMoveServiceImpl implements IWmsMoveService {
R<MesBaseBarcodeInfo> baseBarcodeInfoR = remoteMesService.getBarcode(materialBarcode, SecurityConstants.INNER); R<MesBaseBarcodeInfo> baseBarcodeInfoR = remoteMesService.getBarcode(materialBarcode, SecurityConstants.INNER);
MesBaseBarcodeInfo baseBarcodeInfo = baseBarcodeInfoR.getData(); MesBaseBarcodeInfo baseBarcodeInfo = baseBarcodeInfoR.getData();
if (baseBarcodeInfo == null) { if (baseBarcodeInfo == null) {
throw new ServiceException("物料码有误"); throw new ServiceException("物料码有误");
} }
String batchFlag = baseBarcodeInfo.getBatchFlag(); String batchFlag = baseBarcodeInfo.getBatchFlag();
@ -502,7 +502,7 @@ public class WmsMoveServiceImpl implements IWmsMoveService {
throw new ServiceException("库位编码有误"); throw new ServiceException("库位编码有误");
} }
String userName = SecurityUtils.getUsername(); String userName = SecurityUtils.getLoginUser().getNickname();
Date currentDate = new Date(); Date currentDate = new Date();
@ -515,6 +515,10 @@ public class WmsMoveServiceImpl implements IWmsMoveService {
throw new ServiceException("没有此移库信息"); throw new ServiceException("没有此移库信息");
} }
if(!wmsMove.getOperationType().equals(WmsConstants.WMS_OPERATION_TYPE_MANUAL)){
throw new ServiceException("只能针对仓库类型为普通仓库的进行移库");
}
String executeStatus = wmsMove.getExecuteStatus(); String executeStatus = wmsMove.getExecuteStatus();
if (executeStatus.equals(WmsConstants.WMS_MOVE_EXECUTE_STATUS_OUTSTOCK_FINISH)) { if (executeStatus.equals(WmsConstants.WMS_MOVE_EXECUTE_STATUS_OUTSTOCK_FINISH)) {
@ -777,10 +781,9 @@ public class WmsMoveServiceImpl implements IWmsMoveService {
throw new ServiceException("库位编码有误"); throw new ServiceException("库位编码有误");
} }
String userName = SecurityUtils.getUsername(); String userName = SecurityUtils.getLoginUser().getNickname();
Date currentDate = new Date(); Date currentDate = new Date();
WmsMove wmsMove = wmsMoveMapper.selectWmsMoveByTaskCode(taskCode); WmsMove wmsMove = wmsMoveMapper.selectWmsMoveByTaskCode(taskCode);
if (wmsMove == null) { if (wmsMove == null) {
throw new ServiceException("没有此移库信息"); throw new ServiceException("没有此移库信息");
@ -790,6 +793,10 @@ public class WmsMoveServiceImpl implements IWmsMoveService {
throw new ServiceException("没有此移库信息"); throw new ServiceException("没有此移库信息");
} }
if(!wmsMove.getOperationType().equals(WmsConstants.WMS_OPERATION_TYPE_MANUAL)){
throw new ServiceException("只能针对仓库类型为普通仓库的进行移库");
}
String executeStatus = wmsMove.getExecuteStatus(); String executeStatus = wmsMove.getExecuteStatus();
if (executeStatus.equals(WmsConstants.WMS_MOVE_EXECUTE_STATUS_INSTOCK_FINISH)) { if (executeStatus.equals(WmsConstants.WMS_MOVE_EXECUTE_STATUS_INSTOCK_FINISH)) {
throw new ServiceException("此条码已移库入库完成,不能再入库"); throw new ServiceException("此条码已移库入库完成,不能再入库");

@ -1435,4 +1435,15 @@ public class WmsRawOutstockServiceImpl implements IWmsRawOutstockService {
return wmsRawOutstockMapper.insertWmsRawOutstock(wmsRawOutstock); return wmsRawOutstockMapper.insertWmsRawOutstock(wmsRawOutstock);
} }
/**
* join materialwarehouse
* @param wmsRawOutstock
* @return
*/
@Override
public List<WmsRawOutstock> selectWmsRawOutstockJoinMaterialList(WmsRawOutstock wmsRawOutstock){
return wmsRawOutstockMapper.selectWmsRawOutstockJoinMaterialList(wmsRawOutstock);
}
} }

@ -254,10 +254,11 @@ public class WmsRawReturnServiceImpl implements IWmsRawReturnService {
throw new ServiceException("请输入审核意见"); throw new ServiceException("请输入审核意见");
} }
WmsRawReturn wmsRawReturn = wmsRawReturnMapper.selectOnlyWmsRawReturnByRawReturnId(wmsRawReturnAuditVo.getRawReturnId()); WmsRawReturn wmsRawReturn = new WmsRawReturn();
wmsRawReturn.setRawReturnId(wmsRawReturnAuditVo.getRawReturnId());
wmsRawReturn.setAuditStatus(auditStatus); wmsRawReturn.setAuditStatus(auditStatus);
wmsRawReturn.setAuditReason(auditReason); wmsRawReturn.setAuditReason(auditReason);
wmsRawReturn.setAuditBy(SecurityUtils.getUsername()); wmsRawReturn.setAuditBy(SecurityUtils.getLoginUser().getNickname());
wmsRawReturn.setAuditDate(new Date()); wmsRawReturn.setAuditDate(new Date());
return wmsRawReturnMapper.updateWmsRawReturn(wmsRawReturn); return wmsRawReturnMapper.updateWmsRawReturn(wmsRawReturn);
} }
@ -683,4 +684,20 @@ public class WmsRawReturnServiceImpl implements IWmsRawReturnService {
return wmsRawReturnAuditReturnVo; return wmsRawReturnAuditReturnVo;
} }
/**
* 退join material
*
* @param rawReturnId 退
* @return 退
*/
@Override
public WmsRawReturn selectWmsRawReturnJoinMaterialByRawReturnId(Long rawReturnId) {
WmsRawReturn wmsRawReturn = wmsRawReturnMapper.selectOnlyWmsRawReturnByRawReturnId(rawReturnId);
WmsRawReturnDetail queryRawReturnDetail = new WmsRawReturnDetail();
queryRawReturnDetail.setRawReturnId(rawReturnId);
List<WmsRawReturnDetail> wmsRawReturnDetailList = wmsRawReturnDetailMapper.selectWmsRawReturnDetailJoinMaterialList(queryRawReturnDetail);
wmsRawReturn.setWmsRawReturnDetailList(wmsRawReturnDetailList);
return wmsRawReturn;
}
} }

@ -226,6 +226,10 @@ public class WmsTransferServiceImpl implements IWmsTransferService {
throw new ServiceException("库位不存在"); throw new ServiceException("库位不存在");
} }
if(!oriLocation.getLocationStatus().equals(WmsConstants.WMS_BASE_LOCATION_STATUS_NORMAL)){
throw new ServiceException("库位状态为" + WmsConstants.LOCATION_STATUS_PROMPT_MAP.get(oriLocation.getLocationStatus())+",不能出库");
}
WmsBaseWarehouse baseWarehouse = wmsBaseWarehouseMapper.selectWmsBaseWarehouseByWarehouseId(oriLocation.getWarehouseId()); WmsBaseWarehouse baseWarehouse = wmsBaseWarehouseMapper.selectWmsBaseWarehouseByWarehouseId(oriLocation.getWarehouseId());
if(!baseWarehouse.getWarehouseInstockType().equals(WmsConstants.WMS_WAREHOUSE_INSTOCK_TYPE_SEMI)){ if(!baseWarehouse.getWarehouseInstockType().equals(WmsConstants.WMS_WAREHOUSE_INSTOCK_TYPE_SEMI)){
throw new ServiceException("请从半成品库出库"); throw new ServiceException("请从半成品库出库");
@ -313,6 +317,10 @@ public class WmsTransferServiceImpl implements IWmsTransferService {
throw new ServiceException("库位不存在"); throw new ServiceException("库位不存在");
} }
if(!targetLocation.getLocationStatus().equals(WmsConstants.WMS_BASE_LOCATION_STATUS_NORMAL)){
throw new ServiceException("库位状态为" + WmsConstants.LOCATION_STATUS_PROMPT_MAP.get(targetLocation.getLocationStatus())+",不能入库");
}
WmsBaseWarehouse baseWarehouse = wmsBaseWarehouseMapper.selectWmsBaseWarehouseByWarehouseId(targetLocation.getWarehouseId()); WmsBaseWarehouse baseWarehouse = wmsBaseWarehouseMapper.selectWmsBaseWarehouseByWarehouseId(targetLocation.getWarehouseId());
if(!baseWarehouse.getWarehouseInstockType().equals(WmsConstants.WMS_WAREHOUSE_INSTOCK_TYPE_PRODUCT)){ if(!baseWarehouse.getWarehouseInstockType().equals(WmsConstants.WMS_WAREHOUSE_INSTOCK_TYPE_PRODUCT)){
throw new ServiceException("请入成品库"); throw new ServiceException("请入成品库");

@ -45,6 +45,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="specificationParameter" column="specification_parameter" /> <result property="specificationParameter" column="specification_parameter" />
<result property="unitCode" column="unit_code" /> <result property="unitCode" column="unit_code" />
<result property="price" column="price" /> <result property="price" column="price" />
<result property="materialClassfication" column="material_classfication" />
</resultMap> </resultMap>
<resultMap id="WmsProductOutstockWmsProductOutstockDetailResult" type="WmsProductOutstock" extends="WmsProductOutstockResult"> <resultMap id="WmsProductOutstockWmsProductOutstockDetailResult" type="WmsProductOutstock" extends="WmsProductOutstockResult">
@ -254,7 +256,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectWmsProductOutstockJoinList" parameterType="WmsProductOutstock" resultMap="WmsProductOutstockResult"> <select id="selectWmsProductOutstockJoinList" parameterType="WmsProductOutstock" resultMap="WmsProductOutstockResult">
select wpo.product_outstock_id, wpo.task_code, wpo.warehouse_id, wpo.location_code, wpo.product_type,wpo.operation_type, wpo.outstock_type, select wpo.product_outstock_id, wpo.task_code, wpo.warehouse_id, wpo.location_code, wpo.product_type,wpo.operation_type, wpo.outstock_type,
wpo.plan_code, wpo.plan_detail_code,wpo.saleorder_code, wpo.product_id,wpo.apply_qty,wpo.outstock_qty,wpo.apply_reason, wpo.audit_status,wpo.execute_status,wpo.apply_by, wpo.apply_date,wpo.audit_by, wpo.audit_date,wpo.erp_status,wpo.erp_amount,wpo.begin_time,wpo.end_time, wpo.plan_code, wpo.plan_detail_code,wpo.saleorder_code, wpo.product_id,wpo.apply_qty,wpo.outstock_qty,wpo.apply_reason, wpo.audit_status,wpo.execute_status,wpo.apply_by, wpo.apply_date,wpo.audit_by, wpo.audit_date,wpo.erp_status,wpo.erp_amount,wpo.begin_time,wpo.end_time,
wbw.warehouse_name,mbmi.material_code,mbmi.material_name,mbmi.material_spec wbw.warehouse_name,mbmi.material_code,mbmi.material_name,mbmi.material_spec,mbmi.material_classfication
from wms_product_outstock wpo left join wms_base_warehouse wbw on wpo.warehouse_id =wbw.warehouse_id from wms_product_outstock wpo left join wms_base_warehouse wbw on wpo.warehouse_id =wbw.warehouse_id
left join mes_base_material_info mbmi on wpo.product_id = mbmi.material_id left join mes_base_material_info mbmi on wpo.product_id = mbmi.material_id
<where> <where>
@ -282,6 +284,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialName != null and materialName != ''"> and mbmi.material_name like concat('%', #{materialName}, '%')</if> <if test="materialName != null and materialName != ''"> and mbmi.material_name like concat('%', #{materialName}, '%')</if>
<if test="materialSpec != null and materialSpec != ''">and replace(mbmi.material_spec,' ','') like concat('%', #{materialSpec}, <if test="materialSpec != null and materialSpec != ''">and replace(mbmi.material_spec,' ','') like concat('%', #{materialSpec},
'%')</if> '%')</if>
<if test="operationTypeStr != null and operationTypeStr != ''"> and wpo.operation_type in (${operationTypeStr})</if>
</where> </where>
order by wpo.apply_date desc order by wpo.apply_date desc
</select> </select>

@ -42,6 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="warehouseName" column="warehouse_name" /> <result property="warehouseName" column="warehouse_name" />
<result property="materialCode" column="material_code" /> <result property="materialCode" column="material_code" />
<result property="materialName" column="material_name" /> <result property="materialName" column="material_name" />
<result property="materialSpec" column="material_spec" />
<result property="planAmount" column="plan_amount" /> <result property="planAmount" column="plan_amount" />
<result property="instockBatch" column="instock_batch" /> <result property="instockBatch" column="instock_batch" />
<result property="rawOutstockDetailId" column="raw_outstock_detail_id" /> <result property="rawOutstockDetailId" column="raw_outstock_detail_id" />
@ -300,7 +301,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select wro.raw_outstock_id as raw_outstock_detail_id, wro.task_code,wro.location_code,wro.material_batch as instock_batch,wro.outstock_amount as plan_amount,wro.real_outstock_amount as outstock_amount, select wro.raw_outstock_id as raw_outstock_detail_id, wro.task_code,wro.location_code,wro.material_batch as instock_batch,wro.outstock_amount as plan_amount,wro.real_outstock_amount as outstock_amount,
wro.apply_by,wro.apply_date,wro.apply_reason,wro.audit_by,wro.audit_date,wro.audit_reason,wro.plan_code,wro.plan_detail_code,wro.audit_status,wro.task_type, wro.apply_by,wro.apply_date,wro.apply_reason,wro.audit_by,wro.audit_date,wro.audit_reason,wro.plan_code,wro.plan_detail_code,wro.audit_status,wro.task_type,
wro.execute_status,wro.erp_status,wro.erp_amount, wro.execute_status,wro.erp_status,wro.erp_amount,
mbmi.material_code,mbmi.material_name, mbmi.material_code,mbmi.material_name,mbmi.material_spec,
mbr.warehouse_name mbr.warehouse_name
from wms_raw_outstock wro left join mes_base_material_info mbmi on wro.material_id = mbmi.material_id from wms_raw_outstock wro left join mes_base_material_info mbmi on wro.material_id = mbmi.material_id
left join wms_base_warehouse mbr on wro.warehouse_id = mbr.warehouse_id left join wms_base_warehouse mbr on wro.warehouse_id = mbr.warehouse_id
@ -310,6 +311,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="applyBy != null and applyBy != ''"> and wro.apply_by like concat('%', #{applyBy}, '%')</if> <if test="applyBy != null and applyBy != ''"> and wro.apply_by like concat('%', #{applyBy}, '%')</if>
<if test="executeStatusStr != null and executeStatusStr != ''"> and execute_status in (${executeStatusStr})</if> <if test="executeStatusStr != null and executeStatusStr != ''"> and execute_status in (${executeStatusStr})</if>
<if test="operationType != null and operationType != ''"> and operation_type = #{operationType}</if> <if test="operationType != null and operationType != ''"> and operation_type = #{operationType}</if>
<if test="planDetailCode != null and planDetailCode != ''"> and plan_detail_code = #{planDetailCode}</if>
</where> </where>
order by wro.raw_outstock_id desc order by wro.raw_outstock_id desc
</select> </select>

@ -16,6 +16,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="returnAmount" column="return_amount" /> <result property="returnAmount" column="return_amount" />
<result property="executeStatus" column="execute_status" /> <result property="executeStatus" column="execute_status" />
<result property="erpStatus" column="erp_status" /> <result property="erpStatus" column="erp_status" />
<result property="erpAmount" column="erp_amount" />
<result property="returnPerson" column="return_person" /> <result property="returnPerson" column="return_person" />
<result property="returnTime" column="return_time" /> <result property="returnTime" column="return_time" />
<result property="returnWay" column="return_way" /> <result property="returnWay" column="return_way" />
@ -26,6 +27,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateDate" column="update_date" /> <result property="updateDate" column="update_date" />
<result property="stackAmount" column="stack_amount" /> <result property="stackAmount" column="stack_amount" />
<result property="materialCode" column="material_code" />
<result property="materialName" column="material_name" />
<result property="materialSpec" column="material_spec" />
</resultMap> </resultMap>
<sql id="selectWmsRawReturnDetailVo"> <sql id="selectWmsRawReturnDetailVo">
@ -165,4 +169,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectWmsRawReturnDetailJoinMaterialVo">
select wrrd.raw_return_detail_id, wrrd.raw_return_id, wrrd.location_code,
wrrd.material_barcode, wrrd.material_id, wrrd.instock_batch,
wrrd.plan_amount, wrrd.return_amount,
wrrd.execute_status, wrrd.erp_status,wrrd.erp_amount, wrrd.return_person, wrrd.return_time,
wrrd.return_way, wrrd.machine_name, wrrd.quality_status,
wrrd.create_by, wrrd.create_date,mbmi.material_code,mbmi.material_name,mbmi.material_spec from wms_raw_return_detail wrrd
left join mes_base_material_info mbmi on wrrd.material_id= mbmi.material_id
</sql>
<select id="selectWmsRawReturnDetailJoinMaterialList" parameterType="WmsRawReturnDetail" resultMap="WmsRawReturnDetailResult">
<include refid="selectWmsRawReturnDetailJoinMaterialVo"/>
<where>
<if test="rawReturnId != null "> and wrrd.raw_return_id = #{rawReturnId}</if>
<if test="locationCode != null and locationCode != ''"> and location_code = #{locationCode}</if>
<if test="materialBarcode != null and materialBarcode != ''"> and material_barcode = #{materialBarcode}</if>
<if test="materialId != null "> and material_id = #{materialId}</if>
<if test="instockBatch != null and instockBatch != ''"> and instock_batch = #{instockBatch}</if>
<if test="materialProductionDate != null "> and material_production_Date = #{materialProductionDate}</if>
<if test="planAmount != null "> and plan_amount = #{planAmount}</if>
<if test="returnAmount != null "> and return_amount = #{returnAmount}</if>
<if test="executeStatus != null and executeStatus != ''"> and execute_status = #{executeStatus}</if>
<if test="erpStatus != null and erpStatus != ''"> and erp_status = #{erpStatus}</if>
<if test="returnPerson != null and returnPerson != ''"> and return_person = #{returnPerson}</if>
<if test="returnTime != null "> and return_time = #{returnTime}</if>
<if test="returnWay != null and returnWay != ''"> and return_way = #{returnWay}</if>
<if test="machineName != null and machineName != ''"> and machine_name like concat('%', #{machineName}, '%')</if>
<if test="qualityStatus != null and qualityStatus != ''"> and quality_status = #{qualityStatus}</if>
<if test="createDate != null "> and create_date = #{createDate}</if>
<if test="updateDate != null "> and update_date = #{updateDate}</if>
<if test="stackAmount != null "> and stack_amount = #{stackAmount}</if>
</where>
</select>
</mapper> </mapper>

@ -67,6 +67,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="sub_update_by" /> <result property="updateBy" column="sub_update_by" />
<result property="updateDate" column="sub_update_date" /> <result property="updateDate" column="sub_update_date" />
<result property="stackAmount" column="sub_stack_amount" /> <result property="stackAmount" column="sub_stack_amount" />
<result property="materialCode" column="sub_material_code" />
<result property="materialName" column="sub_material_name" />
<result property="materialSpec" column="sub_material_spec" />
</resultMap> </resultMap>
<sql id="selectWmsRawReturnVo"> <sql id="selectWmsRawReturnVo">
@ -246,8 +249,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
wrr.material_id,wrr.plan_amount,wrr.return_amount,wrr.product_id,wrr.material_barcode, wrr.material_id,wrr.plan_amount,wrr.return_amount,wrr.product_id,wrr.material_barcode,
wrr.operation_type, wrr.task_type, wrr.apply_reason, wrr.audit_reason, wrr.audit_status, wrr.operation_type, wrr.task_type, wrr.apply_reason, wrr.audit_reason, wrr.audit_status,
wrr.execute_status, wrr.apply_by, wrr.apply_date, wrr.audit_by, wrr.audit_date,wrr.begin_time, wrr.end_time, wrr.execute_status, wrr.apply_by, wrr.apply_date, wrr.audit_by, wrr.audit_date,wrr.begin_time, wrr.end_time,
wbw.warehouse_name wbw.warehouse_name,mbmi.material_code,mbmi.material_name,mbmi.material_spec
from wms_raw_return wrr left join wms_base_warehouse wbw on wrr.warehouse_id = wbw.warehouse_id from wms_raw_return wrr left join wms_base_warehouse wbw on wrr.warehouse_id = wbw.warehouse_id
left join mes_base_material_info mbmi on wrr.material_id=mbmi.material_id
<where> <where>
<if test="taskCode != null and taskCode != ''"> and wrr.task_code like concat('%', #{taskCode}, '%')</if> <if test="taskCode != null and taskCode != ''"> and wrr.task_code like concat('%', #{taskCode}, '%')</if>
@ -265,6 +269,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="applyBy != null and applyBy != ''"> and wrr.apply_by like concat('%', #{applyBy}, '%')</if> <if test="applyBy != null and applyBy != ''"> and wrr.apply_by like concat('%', #{applyBy}, '%')</if>
<if test="auditStatus != null and auditStatus != ''"> and wrr.audit_status = #{auditStatus}</if> <if test="auditStatus != null and auditStatus != ''"> and wrr.audit_status = #{auditStatus}</if>
</where> </where>
order by wrr.apply_date desc
</select> </select>
@ -273,8 +278,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
wrr.material_id,wrr.plan_amount,wrr.return_amount,wrr.product_id,wrr.material_barcode,wrr.batch_code, wrr.material_id,wrr.plan_amount,wrr.return_amount,wrr.product_id,wrr.material_barcode,wrr.batch_code,
wrr.operation_type, wrr.task_type, wrr.apply_reason, wrr.audit_reason, wrr.audit_status, wrr.operation_type, wrr.task_type, wrr.apply_reason, wrr.audit_reason, wrr.audit_status,
wrr.execute_status, wrr.apply_by, wrr.apply_date, wrr.audit_by, wrr.audit_date,wrr.begin_time, wrr.end_time, wrr.execute_status, wrr.apply_by, wrr.apply_date, wrr.audit_by, wrr.audit_date,wrr.begin_time, wrr.end_time,
wbw.warehouse_name wbw.warehouse_name,mbmi.material_code,mbmi.material_name,mbmi.material_spec
from wms_raw_return wrr left join wms_base_warehouse wbw on wrr.warehouse_id = wbw.warehouse_id from wms_raw_return wrr left join wms_base_warehouse wbw on wrr.warehouse_id = wbw.warehouse_id
left join mes_base_material_info mbmi on wrr.material_id=mbmi.material_id
where wrr.raw_return_id = #{rawReturnId} where wrr.raw_return_id = #{rawReturnId}
</select> </select>

@ -394,3 +394,23 @@ export function productPlanDetailContinue(data) {
data: data data: data
}) })
} }
// 获取绑定销售订单的采购订单信息
export function selectBindPurchaseOrders(query) {
return request({
url: '/mes/api/selectBindPurchaseOrders',
method: 'get',
params: query
})
}
// 获取申请的物料信息
export function getRawOutstocks(query) {
return request({
url: '/wms/api/getRawOutstocks',
method: 'get',
params: query
})
}

@ -0,0 +1,54 @@
import request from '@/utils/request'
// 查询生产告警信息列表
export function listAlarmInfo(query) {
return request({
url: '/mes/alarmInfo/list',
method: 'get',
params: query
})
}
// 查询生产告警信息详细
export function getAlarmInfo(alarmInfoId) {
return request({
url: '/mes/alarmInfo/' + alarmInfoId,
method: 'get'
})
}
// 新增生产告警信息
export function addAlarmInfo(data) {
return request({
url: '/mes/alarmInfo',
method: 'post',
data: data
})
}
// 修改生产告警信息
export function updateAlarmInfo(data) {
return request({
url: '/mes/alarmInfo',
method: 'put',
data: data
})
}
// 删除生产告警信息
export function delAlarmInfo(alarmInfoId) {
return request({
url: '/mes/alarmInfo/' + alarmInfoId,
method: 'delete'
})
}
// 查询生产告警信息列表
export function listStockAlarmDetail(query) {
return request({
url: '/mes/alarmInfo/listStockAlarmDetail',
method: 'get',
params: query
})
}

@ -226,6 +226,8 @@ export default {
if (this.form.warehouseFloor === 5) { if (this.form.warehouseFloor === 5) {
this.materialVisible = false; this.materialVisible = false;
}else{
this.materialVisible = true;
} }
} }
if (this.defineData.maxPlanAmount) { if (this.defineData.maxPlanAmount) {
@ -285,7 +287,8 @@ export default {
}, },
handleDeleteMaterial(row) { handleDeleteMaterial(row) {
let index = this.wmsRawReturnList.indexOf(row);
this.wmsRawReturnList.splice(index,1);
}, },

@ -141,9 +141,51 @@
</div> </div>
<div class="chartBox chartBox2"> <div class="chartBox chartBox2">
<div class="title">库存统计</div> <div class="title">物料到货信息</div>
<div class="chart"> <div class="chart">
<Chart ref="chart2"></Chart> <div class="whiteTable">
<el-table
:cell-style="{textAlign:'center'}"
:data="purchaseOrderData"
:header-cell-style="{textAlign:'center'}"
:max-height="19.13 * vw"
style="width: 100%"
>
<el-table-column
label="序号"
type="index"
width="50"
>
</el-table-column>
<el-table-column
label="物料编码"
prop="materialCode"
>
</el-table-column>
<el-table-column
label="物料名称"
prop="materialName"
>
</el-table-column>
<el-table-column
label="物料规格"
prop="materialSpec"
>
</el-table-column>
<el-table-column
label="到货数量"
prop="completeAmount"
width="100"
>
</el-table-column>
<el-table-column
label="订单数量"
prop="orderAmount"
width="100"
>
</el-table-column>
</el-table>
</div>
</div> </div>
</div> </div>
@ -300,9 +342,60 @@
</div> </div>
<div class="chartBox chartBox4"> <div class="chartBox chartBox4">
<div class="title">每周产量</div> <div class="title">申请物料信息</div>
<div class="chart"> <div class="chart">
<Chart ref="chart4"></Chart> <div class="whiteTable">
<el-table
:cell-style="{textAlign:'center'}"
:data="rawOutstockData"
:header-cell-style="{textAlign:'center'}"
:max-height="19.13 * vw"
style="width: 100%"
>
<el-table-column
label="序号"
type="index"
width="50"
>
</el-table-column>
<el-table-column
label="物料编码"
prop="materialCode"
>
</el-table-column>
<el-table-column
label="物料名称"
prop="materialName"
>
</el-table-column>
<el-table-column
label="物料规格"
prop="materialSpec"
>
</el-table-column>
<el-table-column
label="申请数量"
prop="planAmount"
width="100"
>
</el-table-column>
<el-table-column
label="已领数量"
prop="outstockAmount"
width="100"
>
</el-table-column>
<el-table-column
label="状态"
prop="auditStatus"
width="100"
>
<template slot-scope="scope">
<dict-tag :options="dict.type.wms_audit_status" :value="scope.row.auditStatus"/>
</template>
</el-table-column>
</el-table>
</div>
</div> </div>
</div> </div>
@ -532,8 +625,8 @@ import {
applyRawBack, applyRawBack,
assignTask, scanMaterial2Confirm, assignTask, scanMaterial2Confirm,
getNewestOutstockCabinet, updateBarcodePlan, completeCollectMaterials, completeReturnMaterials, continueRawInstock, getNewestOutstockCabinet, updateBarcodePlan, completeCollectMaterials, completeReturnMaterials, continueRawInstock,
productPlanDetailPause,productPlanDetailContinue productPlanDetailPause,productPlanDetailContinue,
selectBindPurchaseOrders,getRawOutstocks
} from "@/api/board"; } from "@/api/board";
import applyRawOutstock from '@//views/board/common/applyRawOutstock.vue'; import applyRawOutstock from '@//views/board/common/applyRawOutstock.vue';
import applyRawReturn from '@//views/board/common/applyRawReturn.vue'; import applyRawReturn from '@//views/board/common/applyRawReturn.vue';
@ -571,7 +664,7 @@ export default {
WorkshopNotice, WorkshopNotice,
ViewFile ViewFile
}, },
dicts: ['wms_raw_return_task_type', 'mes_safe_flag'], dicts: ['wms_raw_return_task_type', 'mes_safe_flag','wms_audit_status'],
provide() { provide() {
return { return {
closeDialog: this.closeDialog, closeDialog: this.closeDialog,
@ -757,6 +850,9 @@ export default {
INTERNAL: "2",// INTERNAL: "2",//
}, },
rawOutstockData:[],
purchaseOrderData:[]
} }
}, },
async mounted() { async mounted() {
@ -1013,6 +1109,9 @@ export default {
this.form.cabinetChannel = val.cabinetChannel; this.form.cabinetChannel = val.cabinetChannel;
this.form.planDetailStatus = setState(data.data.planDetailStatus) this.form.planDetailStatus = setState(data.data.planDetailStatus)
this.getInfo(val) this.getInfo(val)
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
}, },
closePopover() { closePopover() {
document.body.click() document.body.click()
@ -1057,7 +1156,9 @@ export default {
this.form.planDetailStatus = setState(data.planDetailStatus) this.form.planDetailStatus = setState(data.planDetailStatus)
} }
this.getInfo(val) this.getInfo(val);
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
}, },
stationChange(val) { stationChange(val) {
this.nowStation = val this.nowStation = val
@ -1879,6 +1980,30 @@ export default {
}, },
selectBindPurchaseOrders(){
this.purchaseOrderData = [];
if(this.form.saleOrderId && this.form.saleOrderId!=''){
selectBindPurchaseOrders({saleOrderId:this.form.saleOrderId}).then(response => {
this.purchaseOrderData = response.rows;
// this.detailTotal = response.total;
// this.loading = false;
});
}
},
selectRawOutstocks(){
this.rawOutstockData = [];
if(this.form.planDetailCode && this.form.planDetailCode!=''){
getRawOutstocks({planDetailCode:this.form.planDetailCode}).then(response => {
this.rawOutstockData = response.rows;
// this.detailTotal = response.total;
// this.loading = false;
});
}
}
} }
} }

@ -107,12 +107,12 @@
</div> </div>
<div class="chartBox chartBox2"> <div class="chartBox chartBox2">
<div class="title">物料安装情况(已完成)</div> <div class="title">物料到货信息</div>
<div class="chart"> <div class="chart">
<div class="whiteTable"> <div class="whiteTable">
<el-table <el-table
:cell-style="{textAlign:'center'}" :cell-style="{textAlign:'center'}"
:data="tableData2" :data="purchaseOrderData"
:header-cell-style="{textAlign:'center'}" :header-cell-style="{textAlign:'center'}"
:max-height="19.13 * vw" :max-height="19.13 * vw"
style="width: 100%" style="width: 100%"
@ -134,8 +134,19 @@
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="完成数量" label="物料规格"
prop="checkAmount" prop="materialSpec"
>
</el-table-column>
<el-table-column
label="到货数量"
prop="completeAmount"
width="100"
>
</el-table-column>
<el-table-column
label="订单数量"
prop="orderAmount"
width="100" width="100"
> >
</el-table-column> </el-table-column>
@ -281,12 +292,12 @@
</div> </div>
<div class="chartBox chartBox4"> <div class="chartBox chartBox4">
<div class="title">物料安装情况(未完成)</div> <div class="title">申请物料信息</div>
<div class="chart"> <div class="chart">
<div class="whiteTable"> <div class="whiteTable">
<el-table <el-table
:cell-style="{textAlign:'center'}" :cell-style="{textAlign:'center'}"
:data="tableData3" :data="rawOutstockData"
:header-cell-style="{textAlign:'center'}" :header-cell-style="{textAlign:'center'}"
:max-height="19.13 * vw" :max-height="19.13 * vw"
style="width: 100%" style="width: 100%"
@ -308,11 +319,31 @@
> >
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="差异值" label="物料规格"
prop="needAmount" prop="materialSpec"
>
</el-table-column>
<el-table-column
label="申请数量"
prop="planAmount"
width="100" width="100"
> >
</el-table-column> </el-table-column>
<el-table-column
label="已领数量"
prop="outstockAmount"
width="100"
>
</el-table-column>
<el-table-column
label="状态"
prop="auditStatus"
width="100"
>
<template slot-scope="scope">
<dict-tag :options="dict.type.wms_audit_status" :value="scope.row.auditStatus"/>
</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
@ -470,7 +501,7 @@ import {
firstFloorProduceOutstock, firstFloorProduceOutstock,
scanMaterial2Confirm, scanMaterial2Confirm,
selectMaterialInstallationCircumstance, selectMaterialInstallationCircumstance,
productPlanDetailPause,productPlanDetailContinue productPlanDetailPause, productPlanDetailContinue, selectBindPurchaseOrders, getRawOutstocks
} from '@/api/board' } from '@/api/board'
import {getToken} from "@/utils/auth"; import {getToken} from "@/utils/auth";
import applyRawOutstock from "@/views/board/common/applyRawOutstock.vue"; import applyRawOutstock from "@/views/board/common/applyRawOutstock.vue";
@ -482,7 +513,7 @@ import {getDispatchSOPAttachList} from "@/api/mes/productplan";
const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100 const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100
export default { export default {
name: 'Board1', name: 'Board1',
dicts: ['mes_plan_detail_status', 'wms_raw_return_task_type', "mes_safe_flag"], dicts: ['mes_plan_detail_status', 'wms_raw_return_task_type', "mes_safe_flag",'wms_audit_status'],
provide(){ provide(){
return{ return{
closeDialog : this.closeDialog, closeDialog : this.closeDialog,
@ -597,6 +628,8 @@ export default {
thisTitle: "查看SOP附件", thisTitle: "查看SOP附件",
// //
fileListData: [], fileListData: [],
rawOutstockData:[],
purchaseOrderData:[]
} }
}, },
mounted() { mounted() {
@ -741,6 +774,9 @@ export default {
this.$modal.msgSuccess("开始成功"); this.$modal.msgSuccess("开始成功");
e.realBeginTime = getNowDateTime(); e.realBeginTime = getNowDateTime();
e.planDetailStatus = this.PLAN_DETAIL_STATUS.STARTED; e.planDetailStatus = this.PLAN_DETAIL_STATUS.STARTED;
this.planDetailCode = e.planDetailCode;
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
}) })
}) })
.catch(() => { .catch(() => {
@ -803,6 +839,8 @@ export default {
this.tableData1 = res.rows this.tableData1 = res.rows
this.totalNum3 = Math.ceil(res.total / 5) this.totalNum3 = Math.ceil(res.total / 5)
this.$refs.table.setCurrentRow(res.rows[0]); this.$refs.table.setCurrentRow(res.rows[0]);
this.planDetailCode = res.rows[0].planDetailCode
}) })
}) })
@ -810,9 +848,13 @@ export default {
this.tableData1 = res.rows this.tableData1 = res.rows
this.$refs.table.setCurrentRow(res.rows[0]); this.$refs.table.setCurrentRow(res.rows[0]);
this.totalNum3 = Math.ceil(res.total / 5) this.totalNum3 = Math.ceil(res.total / 5)
this.planDetailCode = res.rows[0].planDetailCode
} }
}) });
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
}, },
@ -1164,6 +1206,30 @@ export default {
}); });
}, },
selectBindPurchaseOrders(){
this.purchaseOrderData = [];
if(this.saleOrderId && this.saleOrderId!=''){
selectBindPurchaseOrders({saleOrderId:this.saleOrderId}).then(response => {
this.purchaseOrderData = response.rows;
// this.detailTotal = response.total;
// this.loading = false;
});
}
},
selectRawOutstocks() {
this.rawOutstockData = [];
if (this.planDetailCode && this.planDetailCode!=''){
getRawOutstocks({planDetailCode: this.planDetailCode}).then(response => {
this.rawOutstockData = response.rows;
// this.detailTotal = response.total;
// this.loading = false;
});
}
}
} }
} }
</script> </script>

@ -96,9 +96,51 @@
</div> </div>
<div class="chartBox chartBox2"> <div class="chartBox chartBox2">
<div class="title">库存统计</div> <div class="title">物料到货信息</div>
<div class="chart"> <div class="chart">
<Chart ref="chart2"></Chart> <div class="whiteTable">
<el-table
:cell-style="{textAlign:'center'}"
:data="purchaseOrderData"
:header-cell-style="{textAlign:'center'}"
:max-height="19.13 * vw"
style="width: 100%"
>
<el-table-column
label="序号"
type="index"
width="50"
>
</el-table-column>
<el-table-column
label="物料编码"
prop="materialCode"
>
</el-table-column>
<el-table-column
label="物料名称"
prop="materialName"
>
</el-table-column>
<el-table-column
label="物料规格"
prop="materialSpec"
>
</el-table-column>
<el-table-column
label="到货数量"
prop="completeAmount"
width="100"
>
</el-table-column>
<el-table-column
label="订单数量"
prop="orderAmount"
width="100"
>
</el-table-column>
</el-table>
</div>
</div> </div>
</div> </div>
@ -238,9 +280,60 @@
</div> </div>
<div class="chartBox chartBox4"> <div class="chartBox chartBox4">
<div class="title">每周产量</div> <div class="title">申请物料信息</div>
<div class="chart"> <div class="chart">
<Chart ref="chart4"></Chart> <div class="whiteTable">
<el-table
:cell-style="{textAlign:'center'}"
:data="rawOutstockData"
:header-cell-style="{textAlign:'center'}"
:max-height="19.13 * vw"
style="width: 100%"
>
<el-table-column
label="序号"
type="index"
width="50"
>
</el-table-column>
<el-table-column
label="物料编码"
prop="materialCode"
>
</el-table-column>
<el-table-column
label="物料名称"
prop="materialName"
>
</el-table-column>
<el-table-column
label="物料规格"
prop="materialSpec"
>
</el-table-column>
<el-table-column
label="申请数量"
prop="planAmount"
width="100"
>
</el-table-column>
<el-table-column
label="已领数量"
prop="outstockAmount"
width="100"
>
</el-table-column>
<el-table-column
label="状态"
prop="auditStatus"
width="100"
>
<template slot-scope="scope">
<dict-tag :options="dict.type.wms_audit_status" :value="scope.row.auditStatus"/>
</template>
</el-table-column>
</el-table>
</div>
</div> </div>
</div> </div>
@ -386,7 +479,7 @@ import {
check4thFloorProduceOutstock, check4thFloorProduceOutstock,
fourthFloorProduceOutstock, fourthFloorProduceOutstock,
scanMaterial2Confirm, scanMaterial2Confirm,
productPlanDetailPause,productPlanDetailContinue productPlanDetailPause, productPlanDetailContinue, selectBindPurchaseOrders, getRawOutstocks
} from "@/api/board"; } from "@/api/board";
import {monitorSerialData} from "@/utils/serial"; import {monitorSerialData} from "@/utils/serial";
import applyRawOutstock from '@//views/board/common/applyRawOutstock.vue'; import applyRawOutstock from '@//views/board/common/applyRawOutstock.vue';
@ -400,7 +493,7 @@ import {getDispatchSOPAttachList} from "@/api/mes/productplan";
const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100 const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100
export default { export default {
name: 'Board1', name: 'Board1',
dicts: ['mes_plan_detail_status', 'wms_raw_return_task_type', 'mes_safe_flag'], dicts: ['mes_plan_detail_status', 'wms_raw_return_task_type', 'mes_safe_flag','wms_audit_status'],
provide(){ provide(){
return{ return{
closeDialog : this.closeDialog, closeDialog : this.closeDialog,
@ -512,6 +605,8 @@ export default {
thisTitle: "查看SOP附件", thisTitle: "查看SOP附件",
// //
fileListData: [], fileListData: [],
rawOutstockData:[],
purchaseOrderData:[]
} }
}, },
created() { created() {
@ -838,6 +933,9 @@ export default {
e.realBeginTime = getNowDateTime(); e.realBeginTime = getNowDateTime();
e.planDetailStatus = this.PLAN_DETAIL_STATUS.STARTED; e.planDetailStatus = this.PLAN_DETAIL_STATUS.STARTED;
this.planDetailCode = e.planDetailCode;
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
// this.getDetail(queryRow); // this.getDetail(queryRow);
// getProductPlans({pageNum: this.nowNum1, pageSize: 5}).then(e => { // getProductPlans({pageNum: this.nowNum1, pageSize: 5}).then(e => {
// this.tableData = e.rows // this.tableData = e.rows
@ -905,6 +1003,7 @@ export default {
this.tableData1 = res.rows this.tableData1 = res.rows
this.totalNum3 = Math.ceil(res.total / 5) this.totalNum3 = Math.ceil(res.total / 5)
this.$refs.table.setCurrentRow(res.rows[0]); this.$refs.table.setCurrentRow(res.rows[0]);
this.planDetailCode = res.rows[0].planDetailCode
}) })
}) })
@ -912,9 +1011,13 @@ export default {
this.tableData1 = res.rows this.tableData1 = res.rows
this.$refs.table.setCurrentRow(res.rows[0]); this.$refs.table.setCurrentRow(res.rows[0]);
this.totalNum3 = Math.ceil(res.total / 5) this.totalNum3 = Math.ceil(res.total / 5)
this.planDetailCode = res.rows[0].planDetailCode
} }
}) });
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
}, },
// //
getMaterials(val) { getMaterials(val) {
@ -1256,6 +1359,30 @@ export default {
}); });
}, },
selectBindPurchaseOrders(){
this.purchaseOrderData = [];
if(this.saleOrderId && this.saleOrderId!=''){
selectBindPurchaseOrders({saleOrderId:this.saleOrderId}).then(response => {
this.purchaseOrderData = response.rows;
// this.detailTotal = response.total;
// this.loading = false;
});
}
},
selectRawOutstocks(){
this.rawOutstockData = [];
if (this.planDetailCode && this.planDetailCode!='') {
getRawOutstocks({planDetailCode: this.planDetailCode}).then(response => {
this.rawOutstockData = response.rows;
// this.detailTotal = response.total;
// this.loading = false;
});
}
}
} }
} }
</script> </script>

@ -70,9 +70,51 @@
</div> </div>
<div class="chartBox chartBox2"> <div class="chartBox chartBox2">
<div class="title">库存统计</div> <div class="title">物料到货信息</div>
<div class="chart"> <div class="chart">
<Chart ref="chart2"></Chart> <div class="whiteTable">
<el-table
:cell-style="{textAlign:'center'}"
:data="purchaseOrderData"
:header-cell-style="{textAlign:'center'}"
:max-height="19.13 * vw"
style="width: 100%"
>
<el-table-column
label="序号"
type="index"
width="50"
>
</el-table-column>
<el-table-column
label="物料编码"
prop="materialCode"
>
</el-table-column>
<el-table-column
label="物料名称"
prop="materialName"
>
</el-table-column>
<el-table-column
label="物料规格"
prop="materialSpec"
>
</el-table-column>
<el-table-column
label="到货数量"
prop="completeAmount"
width="100"
>
</el-table-column>
<el-table-column
label="订单数量"
prop="orderAmount"
width="100"
>
</el-table-column>
</el-table>
</div>
</div> </div>
</div> </div>
@ -196,9 +238,60 @@
</div> </div>
<div class="chartBox chartBox4"> <div class="chartBox chartBox4">
<div class="title">每周产量</div> <div class="title">申请物料信息</div>
<div class="chart"> <div class="chart">
<Chart ref="chart4"></Chart> <div class="whiteTable">
<el-table
:cell-style="{textAlign:'center'}"
:data="rawOutstockData"
:header-cell-style="{textAlign:'center'}"
:max-height="19.13 * vw"
style="width: 100%"
>
<el-table-column
label="序号"
type="index"
width="50"
>
</el-table-column>
<el-table-column
label="物料编码"
prop="materialCode"
>
</el-table-column>
<el-table-column
label="物料名称"
prop="materialName"
>
</el-table-column>
<el-table-column
label="物料规格"
prop="materialSpec"
>
</el-table-column>
<el-table-column
label="申请数量"
prop="planAmount"
width="100"
>
</el-table-column>
<el-table-column
label="已领数量"
prop="outstockAmount"
width="100"
>
</el-table-column>
<el-table-column
label="状态"
prop="auditStatus"
width="100"
>
<template slot-scope="scope">
<dict-tag :options="dict.type.wms_audit_status" :value="scope.row.auditStatus"/>
</template>
</el-table-column>
</el-table>
</div>
</div> </div>
</div> </div>
@ -267,7 +360,7 @@ import {
directRawOutstock, directRawOutstock,
directRawReturn, directRawReturn,
get4thFloorRegularBarcode, get4thFloorRegularBarcode,
productPlanDetailPause,productPlanDetailContinue productPlanDetailPause, productPlanDetailContinue, selectBindPurchaseOrders, getRawOutstocks
} from "@/api/board"; } from "@/api/board";
import {monitorSerialData} from "@/utils/serial" import {monitorSerialData} from "@/utils/serial"
@ -294,6 +387,7 @@ const setState = (e) => {
const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100 const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100
export default { export default {
name: 'Board1', name: 'Board1',
dicts: ['wms_audit_status'],
mixins: [monitorSerialData, noticeData], mixins: [monitorSerialData, noticeData],
components: { components: {
Chart, Chart,
@ -371,6 +465,8 @@ export default {
thisTitle: "查看SOP附件", thisTitle: "查看SOP附件",
// //
fileListData: [], fileListData: [],
rawOutstockData:[],
purchaseOrderData:[]
} }
}, },
async mounted() { async mounted() {
@ -398,7 +494,8 @@ export default {
if (val.data) { if (val.data) {
this.form.planDetailStatus = setState(val.data.planDetailStatus) this.form.planDetailStatus = setState(val.data.planDetailStatus)
} }
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
}) })
}) })
this.$refs.chart2.setData({ this.$refs.chart2.setData({
@ -604,6 +701,9 @@ export default {
this.form.materialName = e.materialName this.form.materialName = e.materialName
this.form.saleOrderId = e.saleOrderId this.form.saleOrderId = e.saleOrderId
this.form.planDetailStatus = setState(val.data.planDetailStatus) this.form.planDetailStatus = setState(val.data.planDetailStatus)
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
} }
}) })
@ -965,7 +1065,9 @@ export default {
planId: val.planId + '-' + i planId: val.planId + '-' + i
} }
}) || [] }) || []
}) });
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
}, },
// //
accomplishPlan() { accomplishPlan() {
@ -1158,7 +1260,7 @@ export default {
} }
}); });
}, },
directRawOutstock() { directRawOutstock() {
@ -1279,6 +1381,32 @@ export default {
}); });
}, },
selectBindPurchaseOrders(){
this.purchaseOrderData = [];
if(this.form.saleOrderId && this.form.saleOrderId!=''){
selectBindPurchaseOrders({saleOrderId:this.form.saleOrderId}).then(response => {
this.purchaseOrderData = response.rows;
// this.detailTotal = response.total;
// this.loading = false;
});
}
},
selectRawOutstocks(){
this.rawOutstockData = [];
if(this.form.planDetailCode && this.form.planDetailCode!='') {
getRawOutstocks({planDetailCode: this.form.planDetailCode}).then(response => {
this.rawOutstockData = response.rows;
// this.detailTotal = response.total;
// this.loading = false;
});
}
}
}, },
} }

@ -24,13 +24,17 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div style="text-align: center"> <div style="text-align: center">
<el-button v-if="form.planDetailStatus === '已开始'" type="primary" :loading="submitLoading" @click="finish()"></el-button> <el-button v-if="form.planDetailStatus === ''" type="primary" :loading="submitLoading"
@click="finish()">完成
<el-button v-if="form.planDetailStatus === '' && form.planDetailCode" type="info" :loading="submitLoading"
@click="submitProductPlanDetailPause">暂停
</el-button> </el-button>
<el-button v-if="form.planDetailStatus === '' && form.planDetailCode" type="info" :loading="submitLoading" <el-button v-if="form.planDetailStatus === '' && form.planDetailCode" type="info"
:loading="submitLoading"
@click="submitProductPlanDetailPause">暂停
</el-button>
<el-button v-if="form.planDetailStatus === '' && form.planDetailCode" type="info"
:loading="submitLoading"
@click="submitProductPlanDetailContinue">继续 @click="submitProductPlanDetailContinue">继续
</el-button> </el-button>
@ -53,9 +57,51 @@
</div> </div>
<div class="chartBox chartBox2"> <div class="chartBox chartBox2">
<div class="title">库存统计</div> <div class="title">物料到货信息</div>
<div class="chart"> <div class="chart">
<Chart ref="chart2"></Chart> <div class="whiteTable">
<el-table
:cell-style="{textAlign:'center'}"
:data="purchaseOrderData"
:header-cell-style="{textAlign:'center'}"
:max-height="19.13 * vw"
style="width: 100%"
>
<el-table-column
label="序号"
type="index"
width="50"
>
</el-table-column>
<el-table-column
label="物料编码"
prop="materialCode"
>
</el-table-column>
<el-table-column
label="物料名称"
prop="materialName"
>
</el-table-column>
<el-table-column
label="物料规格"
prop="materialSpec"
>
</el-table-column>
<el-table-column
label="到货数量"
prop="completeAmount"
width="100"
>
</el-table-column>
<el-table-column
label="订单数量"
prop="orderAmount"
width="100"
>
</el-table-column>
</el-table>
</div>
</div> </div>
</div> </div>
@ -159,9 +205,60 @@
</div> </div>
<div class="chartBox chartBox4"> <div class="chartBox chartBox4">
<div class="title">每周产量</div> <div class="title">申请物料信息</div>
<div class="chart"> <div class="chart">
<Chart ref="chart4"></Chart> <div class="whiteTable">
<el-table
:cell-style="{textAlign:'center'}"
:data="rawOutstockData"
:header-cell-style="{textAlign:'center'}"
:max-height="19.13 * vw"
style="width: 100%"
>
<el-table-column
label="序号"
type="index"
width="50"
>
</el-table-column>
<el-table-column
label="物料编码"
prop="materialCode"
>
</el-table-column>
<el-table-column
label="物料名称"
prop="materialName"
>
</el-table-column>
<el-table-column
label="物料规格"
prop="materialSpec"
>
</el-table-column>
<el-table-column
label="申请数量"
prop="planAmount"
width="100"
>
</el-table-column>
<el-table-column
label="已领数量"
prop="outstockAmount"
width="100"
>
</el-table-column>
<el-table-column
label="状态"
prop="auditStatus"
width="100"
>
<template slot-scope="scope">
<dict-tag :options="dict.type.wms_audit_status" :value="scope.row.auditStatus"/>
</template>
</el-table-column>
</el-table>
</div>
</div> </div>
</div> </div>
@ -249,7 +346,7 @@ import {
getNewestProductPlanDetail, getNewestProductPlanDetail,
getProductPlans, getProductPlans,
startNextProductPlanDetail, startNextProductPlanDetail,
productPlanDetailPause,productPlanDetailContinue productPlanDetailPause, productPlanDetailContinue, selectBindPurchaseOrders, getRawOutstocks
} from '@/api/board' } from '@/api/board'
import WorkshopNotice from "@/components/workshopNotice/index.vue"; import WorkshopNotice from "@/components/workshopNotice/index.vue";
import {noticeData} from "@/utils/notice" import {noticeData} from "@/utils/notice"
@ -273,6 +370,7 @@ const setState = (e) => {
const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100 const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100
export default { export default {
name: 'Board1', name: 'Board1',
dicts: ['wms_audit_status'],
components: { components: {
Chart, Chart,
WorkshopNotice, WorkshopNotice,
@ -288,7 +386,7 @@ export default {
nowNum1: 1, nowNum1: 1,
totalNum1: 0, totalNum1: 0,
form: {}, form: {},
submitLoading:false, submitLoading: false,
tableData: [], tableData: [],
vw: (document.documentElement.clientWidth || document.body.clientWidth) / 100, vw: (document.documentElement.clientWidth || document.body.clientWidth) / 100,
// //
@ -297,6 +395,8 @@ export default {
thisTitle: "查看SOP附件", thisTitle: "查看SOP附件",
// //
fileListData: [], fileListData: [],
rawOutstockData: [],
purchaseOrderData: []
} }
}, },
mounted() { mounted() {
@ -308,168 +408,168 @@ export default {
// duration: 0 // duration: 0
// }); // });
// }, 60 * 1000) // }, 60 * 1000)
this.$refs.chart2.setData({ // this.$refs.chart2.setData({
tooltip: { // tooltip: {
trigger: 'axis', // trigger: 'axis',
axisPointer: { // axisPointer: {
// // //
type: 'shadow' // 线'line' | 'shadow' // type: 'shadow' // 线'line' | 'shadow'
} // }
}, // },
grid: { // grid: {
left: '0', // left: '0',
right: '4%', // right: '4%',
bottom: '0', // bottom: '0',
top: 20, // top: 20,
containLabel: true // containLabel: true
}, // },
xAxis: { // xAxis: {
type: 'category', // type: 'category',
data: [1, 2, 3, 4, 5, 6], // data: [1, 2, 3, 4, 5, 6],
axisLine: { // axisLine: {
lineStyle: { // lineStyle: {
color: 'white' // color: 'white'
} // }
}, // },
axisLabel: { // axisLabel: {
// interval: 0, // // interval: 0,
// rotate: 40, // // rotate: 40,
textStyle: { // textStyle: {
fontFamily: 'Microsoft YaHei' // fontFamily: 'Microsoft YaHei'
} // }
} // }
}, // },
//
yAxis: { // yAxis: {
type: 'value', // type: 'value',
axisLine: { // axisLine: {
show: false, // show: false,
lineStyle: { // lineStyle: {
color: 'white' // color: 'white'
} // }
}, // },
splitLine: { // splitLine: {
show: false // show: false
}, // },
axisLabel: {} // axisLabel: {}
}, // },
series: [ // series: [
{ // {
name: '数量', // name: '',
label: { // label: {
normal: { // normal: {
show: true, // show: true,
position: 'top', // position: 'top',
textStyle: { // textStyle: {
color: '#a8aab0', // color: '#a8aab0',
fontStyle: 'normal', // fontStyle: 'normal',
fontFamily: '微软雅黑', // fontFamily: '',
fontSize: 0.75 * vw // fontSize: 0.75 * vw
} // }
} // }
}, // },
type: 'bar', // type: 'bar',
barWidth: '30%', // barWidth: '30%',
barMaxWidth: 50, // barMaxWidth: 50,
itemStyle: { // itemStyle: {
normal: { // normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ // color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ // {
offset: 0, // offset: 0,
color: '#39ffff' // color: '#39ffff'
}, // },
{ // {
offset: 1, // offset: 1,
color: '#5affa6' // color: '#5affa6'
} // }
]) // ])
} // }
}, // },
data: [1, 2, 3, 4, 5, 6] // data: [1, 2, 3, 4, 5, 6]
} // }
] // ]
}) // })
this.$refs.chart4.setData({ // this.$refs.chart4.setData({
tooltip: { // tooltip: {
trigger: 'axis', // trigger: 'axis',
axisPointer: { // axisPointer: {
// // //
type: 'shadow' // 线'line' | 'shadow' // type: 'shadow' // 线'line' | 'shadow'
} // }
}, // },
grid: { // grid: {
left: '0', // left: '0',
right: '4%', // right: '4%',
bottom: '0', // bottom: '0',
top: 20, // top: 20,
containLabel: true // containLabel: true
}, // },
xAxis: { // xAxis: {
type: 'category', // type: 'category',
data: [1, 2, 3, 4, 5, 6], // data: [1, 2, 3, 4, 5, 6],
axisLine: { // axisLine: {
lineStyle: { // lineStyle: {
color: 'white' // color: 'white'
} // }
}, // },
axisLabel: { // axisLabel: {
// interval: 0, // // interval: 0,
// rotate: 40, // // rotate: 40,
textStyle: { // textStyle: {
fontFamily: 'Microsoft YaHei' // fontFamily: 'Microsoft YaHei'
} // }
} // }
}, // },
//
yAxis: { // yAxis: {
type: 'value', // type: 'value',
axisLine: { // axisLine: {
show: false, // show: false,
lineStyle: { // lineStyle: {
color: 'white' // color: 'white'
} // }
}, // },
splitLine: { // splitLine: {
show: false // show: false
}, // },
axisLabel: {} // axisLabel: {}
}, // },
series: [ // series: [
{ // {
name: '数量', // name: '',
label: { // label: {
normal: { // normal: {
show: true, // show: true,
position: 'top', // position: 'top',
textStyle: { // textStyle: {
color: '#a8aab0', // color: '#a8aab0',
fontStyle: 'normal', // fontStyle: 'normal',
fontFamily: '微软雅黑', // fontFamily: '',
fontSize: 0.75 * vw // fontSize: 0.75 * vw
} // }
} // }
}, // },
type: 'bar', // type: 'bar',
barWidth: '30%', // barWidth: '30%',
barMaxWidth: 50, // barMaxWidth: 50,
itemStyle: { // itemStyle: {
normal: { // normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ // color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ // {
offset: 0, // offset: 0,
color: '#39ffff' // color: '#39ffff'
}, // },
{ // {
offset: 1, // offset: 1,
color: '#5affa6' // color: '#5affa6'
} // }
]) // ])
} // }
}, // },
data: [1, 2, 3, 4, 5, 6] // data: [1, 2, 3, 4, 5, 6]
} // }
] // ]
}) // })
getProductPlans({pageNum: this.nowNum1, pageSize: 5}).then(e => { getProductPlans({pageNum: this.nowNum1, pageSize: 5}).then(e => {
this.tableData = e.rows this.tableData = e.rows
this.totalNum1 = Math.ceil(e.total / 5) this.totalNum1 = Math.ceil(e.total / 5)
@ -518,6 +618,8 @@ export default {
this.form.materialName = val.materialName this.form.materialName = val.materialName
this.form.planDetailStatus = setState(data.data.planDetailStatus) this.form.planDetailStatus = setState(data.data.planDetailStatus)
this.getInfo(val) this.getInfo(val)
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
}, },
async tableClick(val) { async tableClick(val) {
if (!val) return if (!val) return
@ -526,8 +628,11 @@ export default {
this.form.materialId = val.materialId this.form.materialId = val.materialId
this.form.materialCode = val.materialCode this.form.materialCode = val.materialCode
this.form.materialName = val.materialName this.form.materialName = val.materialName
this.form.saleOrderId = val.saleOrderId
this.form.planDetailStatus = setState(data?.planDetailStatus) this.form.planDetailStatus = setState(data?.planDetailStatus)
this.getInfo(val) this.getInfo(val)
this.selectBindPurchaseOrders();
this.selectRawOutstocks();
}, },
getInfo(e) { getInfo(e) {
this.$refs.chart1_1.setData({ this.$refs.chart1_1.setData({
@ -879,7 +984,7 @@ export default {
}, },
/** SOP预览*/ /** SOP预览*/
handleViewSOP(e){ handleViewSOP(e) {
this.fileListData = []; this.fileListData = [];
getDispatchSOPAttachList(e.dispatchCode, e.processId).then(res => { getDispatchSOPAttachList(e.dispatchCode, e.processId).then(res => {
let attachList = res.data; let attachList = res.data;
@ -891,7 +996,7 @@ export default {
thisFileList.push(previewFile); thisFileList.push(previewFile);
}) })
console.log("thisFileList", thisFileList) console.log("thisFileList", thisFileList)
if (thisFileList.length > 0){ if (thisFileList.length > 0) {
this.fileListData = thisFileList; this.fileListData = thisFileList;
this.showFileDialog = true; this.showFileDialog = true;
} else { } else {
@ -904,7 +1009,7 @@ export default {
/** 提交暂停按钮 */ /** 提交暂停按钮 */
submitProductPlanDetailPause() { submitProductPlanDetailPause() {
this.submitLoading = true; this.submitLoading = true;
let pauseForm = {planDetailId:this.form.planDetailId}; let pauseForm = {planDetailId: this.form.planDetailId};
this.$modal.confirm('确认要暂停么?').then(function () { this.$modal.confirm('确认要暂停么?').then(function () {
return productPlanDetailPause(pauseForm); return productPlanDetailPause(pauseForm);
}).then(() => { }).then(() => {
@ -920,7 +1025,7 @@ export default {
/** 提交继续按钮 */ /** 提交继续按钮 */
submitProductPlanDetailContinue() { submitProductPlanDetailContinue() {
this.submitLoading = true; this.submitLoading = true;
let continueForm = {planDetailId:this.form.planDetailId}; let continueForm = {planDetailId: this.form.planDetailId};
this.$modal.confirm('确认要继续么?').then(function () { this.$modal.confirm('确认要继续么?').then(function () {
return productPlanDetailContinue(continueForm); return productPlanDetailContinue(continueForm);
}).then(() => { }).then(() => {
@ -931,6 +1036,31 @@ export default {
this.submitLoading = false; this.submitLoading = false;
}); });
}, },
selectBindPurchaseOrders() {
this.purchaseOrderData = [];
if (this.form.saleOrderId && this.form.saleOrderId != '') {
selectBindPurchaseOrders({saleOrderId: this.form.saleOrderId}).then(response => {
this.purchaseOrderData = response.rows;
// this.detailTotal = response.total;
// this.loading = false;
});
}
},
selectRawOutstocks() {
this.rawOutstockData = [];
if (this.form.planDetailCode && this.form.planDetailCode !== '') {
getRawOutstocks({planDetailCode: this.form.planDetailCode}).then(response => {
this.rawOutstockData = response.rows;
// this.detailTotal = response.total;
// this.loading = false;
});
}
}
} }
} }
</script> </script>

@ -0,0 +1,272 @@
<template>
<div class="app-container">
<!-- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">-->
<!-- <el-form-item label="创建时间" prop="createDate">-->
<!-- <el-date-picker clearable-->
<!-- v-model="queryParams.createDate"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择创建时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="最后更新时间" prop="updateDate">-->
<!-- <el-date-picker clearable-->
<!-- v-model="queryParams.updateDate"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择最后更新时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item>-->
<!-- <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>-->
<!-- <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- <el-row :gutter="10" class="mb8">-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- plain-->
<!-- icon="el-icon-plus"-->
<!-- size="mini"-->
<!-- @click="handleAdd"-->
<!-- v-hasPermi="['mes:alarmInfo:add']"-->
<!-- >新增</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- icon="el-icon-edit"-->
<!-- size="mini"-->
<!-- :disabled="single"-->
<!-- @click="handleUpdate"-->
<!-- v-hasPermi="['mes:alarmInfo:edit']"-->
<!-- >修改</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="danger"-->
<!-- plain-->
<!-- icon="el-icon-delete"-->
<!-- size="mini"-->
<!-- :disabled="multiple"-->
<!-- @click="handleDelete"-->
<!-- v-hasPermi="['mes:alarmInfo:remove']"-->
<!-- >删除</el-button>-->
<!-- </el-col>-->
<!-- <el-col :span="1.5">-->
<!-- <el-button-->
<!-- type="warning"-->
<!-- plain-->
<!-- icon="el-icon-download"-->
<!-- size="mini"-->
<!-- @click="handleExport"-->
<!-- v-hasPermi="['mes:alarmInfo:export']"-->
<!-- >导出</el-button>-->
<!-- </el-col>-->
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
<!-- </el-row>-->
<el-table v-loading="loading" :data="alarmInfoList" @selection-change="handleSelectionChange">
<el-table-column label="报警类型" align="center" prop="alarmInfoType" >
<template slot-scope="scope">
<dict-tag :options="dict.type.mes_alarm_info_type" :value="scope.row.alarmInfoType"/>
</template>
</el-table-column>
<!-- <el-table-column label="处理状态(0未处理 1已处理)" align="center" prop="handleStatus" />-->
<el-table-column label="报警时间" align="center" prop="createDate" width="180">
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleDetail(scope.row)"
v-hasPermi="['mes:alarmInfo:query']"
>报警明细</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改生产告警信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="报警时间" prop="createDate">
{{form.createDate}}
</el-form-item>
<el-divider content-position="center">库存告警明细信息</el-divider>
<el-table :data="mesStockAlarmDetailList" ref="mesStockAlarmDetail">
<!-- <el-table-column label="序号" align="center" type="index" width="50"/>-->
<el-table-column label="物料编码" prop="materialCode" width="150">
</el-table-column>
<el-table-column label="物料名称" prop="materialName" width="150">
</el-table-column>
<el-table-column label="物料规格" prop="materialSpec" width="150">
</el-table-column>
<el-table-column label="安全库存数量" prop="safeStockAmount" width="150">
</el-table-column>
<el-table-column label="库存数量" prop="stockAmount" width="150">
</el-table-column>
</el-table>
<pagination
v-show="detailTotal>0"
:total="detailTotal"
:page.sync="detailQueryParams.pageNum"
:limit.sync="detailQueryParams.pageSize"
@pagination="getDetailList"
/>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listAlarmInfo, listStockAlarmDetail } from "@/api/mes/alarmInfo";
export default {
name: "AlarmInfo",
dicts: ['mes_alarm_info_type'],
data() {
return {
//
loading: true,
//
ids: [],
//
checkedMesStockAlarmDetail: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
alarmInfoList: [],
//
mesStockAlarmDetailList: [],
//
title: "",
//
open: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
alarmInfoType: null,
handleStatus: null,
createDate: null,
updateDate: null
},
detailTotal:0,
detailQueryParams: {
pageNum: 1,
pageSize: 10,
alarmInfoType: null,
handleStatus: null,
createDate: null,
updateDate: null
},
//
form: {},
//
rules: {
alarmInfoType: [
{ required: true, message: "报警类型(1库存报警)不能为空", trigger: "change" }
],
handleStatus: [
{ required: true, message: "处理状态(0未处理 1已处理)不能为空", trigger: "change" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询生产告警信息列表 */
getList() {
this.loading = true;
listAlarmInfo(this.queryParams).then(response => {
this.alarmInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.reset();
},
//
reset() {
this.form = {
alarmInfoId: null,
alarmInfoType: null,
handleStatus: null,
createBy: null,
createDate: null,
updateBy: null,
updateDate: null
};
this.mesStockAlarmDetailList = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.alarmInfoId)
this.single = selection.length!==1
this.multiple = !selection.length
},
handleDetail(row){
this.mesStockAlarmDetailList = [];
this.detailTotal = 0;
this.form.createDate = row.createDate;
this.open = true;
this.title = "库存告警明细";
this.detailQueryParams.alarmInfoId = row.alarmInfoId;
this.getDetailList();
},
/** 查询生产告警信息列表 */
getDetailList() {
// this.loading = true;]
listStockAlarmDetail(this.detailQueryParams).then(response => {
this.mesStockAlarmDetailList = response.rows;
this.detailTotal = response.total;
// this.loading = false;
});
},
}
};
</script>

@ -180,10 +180,17 @@
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-info"
@click="handleSaleOrderRelates(scope.row)"
v-if="scope.row.materialClassfication==='2'"
>物料明细</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-info"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['wms:productoutstock:edit']" v-hasPermi="['wms:productoutstock:edit']"
>明细</el-button> >出库明细</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -303,16 +310,32 @@
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
<!-- 关联销售订单信息对话框 -->
<el-dialog title="关联信息" :visible.sync="relateDialogVisible" append-to-body>
<sale-order-relates ref="saleOrderRelatesRef" :defineData="saleOrderRelatesData"
v-if="relateDialogVisible"></sale-order-relates>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { listProductoutstock, getProductoutstock, delProductoutstock, addProductoutstock, updateProductoutstock } from "@/api/wms/productoutstock"; import { listProductoutstock, getProductoutstock, delProductoutstock, addProductoutstock, updateProductoutstock } from "@/api/wms/productoutstock";
import { getProductWarehouses } from "@/api/wms/productInstock"; import { getProductWarehouses } from "@/api/wms/productInstock";
import saleOrderRelates from "@/views/board/common/saleOrderRelates.vue";
export default { export default {
name: "Productoutstock", name: "Productoutstock",
components: {
'sale-order-relates': saleOrderRelates,
},
dicts: ["wms_erp_status","wms_warehouse_instock_type","wms_operation_type","wms_execute_status","wms_audit_status","wms_product_outstock_task_type"], dicts: ["wms_erp_status","wms_warehouse_instock_type","wms_operation_type","wms_execute_status","wms_audit_status","wms_product_outstock_task_type"],
provide() {
return {
closeDialog: this.closeDialog,
}
},
data() { data() {
return { return {
// //
@ -374,7 +397,10 @@ export default {
}, },
// //
form: {}, form: {},
productWarehouseList:[] productWarehouseList:[],
relateDialogVisible:false,
saleOrderRelatesData: {},
}; };
}, },
created() { created() {
@ -552,6 +578,17 @@ export default {
this.productWarehouseList = response.data; this.productWarehouseList = response.data;
}); });
}, },
/** 查询关联物料信息列表 */
handleSaleOrderRelates(row){
this.saleOrderRelatesData = {
virtualMaterialId: row.productId,
}
this.relateDialogVisible = true
},
closeDialog() {
this.relateDialogVisible = false;
},
} }
}; };
</script> </script>

@ -243,7 +243,7 @@ export default {
const taskCode = row.taskCode const taskCode = row.taskCode
const warehouseName = row.warehouseName; const warehouseName = row.warehouseName;
const params = {pageNum: this.queryParams.pageNum}; const params = {pageNum: this.queryParams.pageNum};
this.$tab.openPage("退库详情[" + taskCode + "]", '/wms/raw-return/detail/' + rawReturnId + '/1/' + warehouseName, params); this.$tab.openPage("退库详情[" + taskCode + "]", '/wms/raw-return/audit/' + rawReturnId+'/1/'+warehouseName, params);
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */

@ -139,6 +139,107 @@
</el-col> </el-col>
</el-row> </el-row>
<el-divider content-position="center">原材料退库记录明细</el-divider>
<el-table :data="wmsRawReturnDetailList" ref="wmsRawReturnDetail">
<el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="库位编码" prop="locationCode" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.locationCode" placeholder="请输入库位编码" />
</template>
</el-table-column>
<el-table-column label="物料条码" prop="materialBarcode" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.materialBarcode" placeholder="请输入物料条码" />
</template>
</el-table-column>
<el-table-column label="物料ID" prop="materialId" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.materialId" placeholder="请输入物料ID" />
</template>
</el-table-column>
<el-table-column label="批次;扫描条码时,从打印条码记录表中获取" prop="instockBatch" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.instockBatch" placeholder="请输入批次;扫描条码时,从打印条码记录表中获取" />
</template>
</el-table-column>
<el-table-column label="生产日期;扫描条码时,从打印条码记录表中获取" prop="materialProductionDate" width="240">
<template slot-scope="scope">
<el-date-picker clearable v-model="scope.row.materialProductionDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择生产日期;扫描条码时,从打印条码记录表中获取" />
</template>
</el-table-column>
<el-table-column label="计划数量" prop="planAmount" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.planAmount" placeholder="请输入计划数量" />
</template>
</el-table-column>
<el-table-column label="退库数量" prop="returnAmount" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.returnAmount" placeholder="请输入退库数量" />
</template>
</el-table-column>
<el-table-column label="执行状态(0待执行,1执行中,2执行完成)" prop="executeStatus" width="150">
<template slot-scope="scope">
<el-select v-model="scope.row.executeStatus" placeholder="请选择执行状态(0待执行,1执行中,2执行完成)">
<el-option label="请选择字典生成" value="" />
</el-select>
</template>
</el-table-column>
<el-table-column label="同步ERP状态(0:失败,1成功)" prop="erpStatus" width="150">
<template slot-scope="scope">
<el-select v-model="scope.row.erpStatus" placeholder="请选择同步ERP状态(0:失败,1成功)">
<el-option label="请选择字典生成" value="" />
</el-select>
</template>
</el-table-column>
<el-table-column label="同步给ERP的数量" prop="erpAmount" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.erpAmount" placeholder="请输入同步给ERP的数量" />
</template>
</el-table-column>
<el-table-column label="退库人" prop="returnPerson" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.returnPerson" placeholder="请输入退库人" />
</template>
</el-table-column>
<el-table-column label="退库时间" prop="returnTime" width="240">
<template slot-scope="scope">
<el-date-picker clearable v-model="scope.row.returnTime" type="date" value-format="yyyy-MM-dd" placeholder="请选择退库时间" />
</template>
</el-table-column>
<el-table-column label="退库方式" prop="returnWay" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.returnWay" placeholder="请输入退库方式" />
</template>
</el-table-column>
<el-table-column label="使用机台名称;退库扫描条码时,从打印条码记录表中获取" prop="machineName" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.machineName" placeholder="请输入使用机台名称;退库扫描条码时,从打印条码记录表中获取" />
</template>
</el-table-column>
<el-table-column label="质检状态(0:待质检,1:合格,2:NG)" prop="qualityStatus" width="150">
<template slot-scope="scope">
<el-select v-model="scope.row.qualityStatus" placeholder="请选择质检状态(0:待质检,1:合格,2:NG)">
<el-option label="请选择字典生成" value="" />
</el-select>
</template>
</el-table-column>
<el-table-column label="创建时间" prop="createDate" width="240">
<template slot-scope="scope">
<el-date-picker clearable v-model="scope.row.createDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择创建时间" />
</template>
</el-table-column>
<el-table-column label="最后更新时间" prop="updateDate" width="240">
<template slot-scope="scope">
<el-date-picker clearable v-model="scope.row.updateDate" type="date" value-format="yyyy-MM-dd" placeholder="请选择最后更新时间" />
</template>
</el-table-column>
<el-table-column label="每托数量" prop="stackAmount" width="150">
<template slot-scope="scope">
<el-input v-model="scope.row.stackAmount" placeholder="请输入每托数量" />
</template>
</el-table-column>
</el-table>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">

@ -79,7 +79,9 @@
<el-table-column label="仓库" align="center" prop="warehouseName" /> <el-table-column label="仓库" align="center" prop="warehouseName" />
<el-table-column label="计划编号" align="center" prop="planCode" width="100"/> <el-table-column label="计划编号" align="center" prop="planCode" width="100"/>
<el-table-column label="计划明细编号" align="center" prop="planDetailCode" width="100"/> <el-table-column label="计划明细编号" align="center" prop="planDetailCode" width="100"/>
<el-table-column label="物料条码" align="center" prop="materialBarcode" width="100"/> <el-table-column label="物料编码" align="center" prop="materialCode" width="100"/>
<el-table-column label="物料名称" align="center" prop="materialName" width="100"/>
<el-table-column label="物料规格" align="center" prop="materialSpec" width="100"/>
<el-table-column label="计划退库数量" align="center" prop="planAmount" width="100"/> <el-table-column label="计划退库数量" align="center" prop="planAmount" width="100"/>
<el-table-column label="任务类型" align="center" prop="taskType" > <el-table-column label="任务类型" align="center" prop="taskType" >
<template slot-scope="scope"> <template slot-scope="scope">
@ -88,9 +90,6 @@
</el-table-column> </el-table-column>
<el-table-column label="申请人" align="center" prop="applyBy" /> <el-table-column label="申请人" align="center" prop="applyBy" />
<el-table-column label="申请时间" align="center" prop="applyDate" width="180"> <el-table-column label="申请时间" align="center" prop="applyDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.applyDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column> </el-table-column>
<el-table-column label="审核状态" align="center" prop="auditStatus" > <el-table-column label="审核状态" align="center" prop="auditStatus" >
<template slot-scope="scope"> <template slot-scope="scope">

@ -47,8 +47,26 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="16" :offset="2"> <el-col :span="8" :offset="2">
<el-form-item label="物料编码" prop="materialCode">
<el-input v-model="form.materialCode" disabled/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :offset="2">
<el-form-item label="物料规格" prop="materialCode">
<el-input v-model="form.materialSpec" disabled/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="退库类型" prop="taskType"> <el-form-item label="退库类型" prop="taskType">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.wms_raw_return_task_type" :value="form.taskType"/> <dict-tag :options="dict.type.wms_raw_return_task_type" :value="form.taskType"/>
@ -57,6 +75,8 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="detailFlag"> <el-row v-if="detailFlag">
<el-col :span="8" :offset="2"> <el-col :span="8" :offset="2">
<el-form-item label="审核人" prop="auditBy"> <el-form-item label="审核人" prop="auditBy">
@ -77,13 +97,13 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="detailFlag"> <!-- <el-row v-if="detailFlag">-->
<el-col :span="16" :offset="2"> <!-- <el-col :span="16" :offset="2">-->
<el-form-item label="同步ERP数量" prop="erpAmount"> <!-- <el-form-item label="同步ERP数量" prop="erpAmount">-->
<el-input v-model="form.erpAmount" disabled/> <!-- <el-input v-model="form.erpAmount" disabled/>-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
</el-row> <!-- </el-row>-->
<el-row v-if="detailFlag"> <el-row v-if="detailFlag">
@ -103,9 +123,9 @@
</el-col> </el-col>
</el-row> </el-row>
<el-divider content-position="center">原材料退库明细信息</el-divider> <el-divider content-position="center" v-if="this.detailFlag">退</el-divider>
<el-table :data="wmsRawReturnDetailList" :row-class-name="rowWmsRawReturnDetailIndex" <el-table :data="wmsRawReturnDetailList" :row-class-name="rowWmsRawReturnDetailIndex"
ref="wmsRawReturnDetail"> ref="wmsRawReturnDetail" v-if="this.detailFlag">
<el-table-column label="序号" align="center" prop="index" width="50"/> <el-table-column label="序号" align="center" prop="index" width="50"/>
<el-table-column label="库位编码" prop="locationCode"/> <el-table-column label="库位编码" prop="locationCode"/>
<el-table-column label="物料编码" prop="materialCode"/> <el-table-column label="物料编码" prop="materialCode"/>
@ -136,7 +156,7 @@
</template> </template>
<script> <script>
import {auditRawReturn, getRawReturnByTaskCode} from "@/api/wms/rawreturn"; import {auditRawReturn, getRawReturnByTaskCode,getRawreturn} from "@/api/wms/rawreturn";
export default { export default {
name: "Rawreturn", name: "Rawreturn",
@ -180,24 +200,45 @@ export default {
this.form.taskCode = taskCode; this.form.taskCode = taskCode;
this.warehouseName = warehouseName; this.warehouseName = warehouseName;
this.rawReturnId = rawReturnId; this.rawReturnId = rawReturnId;
this.getRawReturn(); // if(this.detailFlag){
this.getRawReturnByReturnId();
// }else{
// this.getRawReturnByTaskCode();
// }
}, },
methods: { methods: {
/** 查询原材料退库记录列表 */ /** 查询原材料退库记录列表 */
getRawReturn() { getRawReturnByReturnId() {
this.loading = true;
getRawreturn(this.rawReturnId).then(response => {
this.form = response.data;
this.wmsRawReturnDetailList = response.data.wmsRawReturnDetailList;
this.form.warehouseName = this.warehouseName;
this.loading = false;
});
},
/** 查询原材料退库记录列表 */
getRawReturnByTaskCode() {
this.loading = true; this.loading = true;
getRawReturnByTaskCode(this.form.taskCode).then(response => { getRawReturnByTaskCode(this.form.taskCode).then(response => {
this.form = response.data.wmsRawReturn; this.form = response.data.wmsRawReturn;
this.wmsRawReturnDetailList = response.data.wmsRawReturnDetailList; this.wmsRawReturnDetailList = response.data.wmsRawReturnDetailList;
console.log(this.wmsRawReturnDetailList)
this.form.warehouseName = this.warehouseName; this.form.warehouseName = this.warehouseName;
this.loading = false; this.loading = false;
}); });
}, },
// //
cancel() { cancel() {
const obj = {path: "/wms/rawmanagement/rawreturn", query: {t: Date.now(), pageNum: this.$route.query.pageNum}}; if(this.detailFlag){
this.$tab.closeOpenPage(obj); const obj = {path: "/wms/info/rawreturn", query: {t: Date.now(), pageNum: this.$route.query.pageNum}};
this.$tab.closeOpenPage(obj);
}else{
const obj = {path: "/wms/rawmanagement/rawreturn", query: {t: Date.now(), pageNum: this.$route.query.pageNum}};
this.$tab.closeOpenPage(obj);
}
}, },
// //

Loading…
Cancel
Save