1.添加盘点单据相关实体类和接口

master
x_z 2 years ago
parent c1a5abea65
commit e57b30d9fc

@ -0,0 +1,88 @@
package com.glxp.api.controller.inv;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.inv.InvCountCodesEntity;
import com.glxp.api.req.inv.FilterInvCountCodesRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.service.inv.InvCountCodesService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
*
*/
@RestController
public class InvCountCodesController {
@Resource
private InvCountCodesService invCountCodesService;
/**
*
*
* @param codesRequest
* @return
*/
@GetMapping("/inv/count/codes/filter")
public BaseResponse filterList(FilterInvCountCodesRequest codesRequest) {
List<InvCountCodesEntity> list = invCountCodesService.filterList(codesRequest);
PageInfo<InvCountCodesEntity> pageInfo = new PageInfo<>(list);
PageSimpleResponse<InvCountCodesEntity> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(list);
return ResultVOUtils.success(pageSimpleResponse);
}
/**
*
*
* @param codesRequest
* @return
*/
@PostMapping("/inv/count/codes/deleteCode")
public BaseResponse deleteCode(@RequestBody FilterInvCountCodesRequest codesRequest) {
if (null == codesRequest || StrUtil.isBlank(codesRequest.getOrderIdFk()) || StrUtil.isBlank(codesRequest.getRelId()) || StrUtil.isBlank(codesRequest.getCode())) {
return ResultVOUtils.success(ResultEnum.PARAM_VERIFY_FALL);
}
return invCountCodesService.deleteCode(codesRequest);
}
/**
*
*
* @param invCountCodes
* @return
*/
@PostMapping("/inv/count/codes/addCode")
public BaseResponse addCode(@RequestBody InvCountCodesEntity invCountCodes) {
if (null == invCountCodes || StrUtil.isBlank(invCountCodes.getCode())) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
return invCountCodesService.addCode(invCountCodes);
}
/**
*
*
* @param orderIdFk
* @return
*/
@GetMapping("/inv/count/codes/getCountOrderCodesNum")
public BaseResponse getCountOrderCodesNum(String orderIdFk) {
if (StrUtil.isBlank(orderIdFk)) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
Long codesNum = invCountCodesService.getCountOrderCodesNum(orderIdFk);
return ResultVOUtils.success(codesNum);
}
}

@ -0,0 +1,194 @@
package com.glxp.api.controller.inv;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.AuthRuleAnnotation;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.inv.InvCountOrderEntity;
import com.glxp.api.entity.system.SystemPDFModuleEntity;
import com.glxp.api.entity.system.SystemPDFTemplateEntity;
import com.glxp.api.req.inout.InspectionPDFTemplateRequest;
import com.glxp.api.req.inv.AddInvCountOrderSaveRequest;
import com.glxp.api.req.inv.FilterInvCountOrderRequest;
import com.glxp.api.req.inv.InvCountOrderPrintRequest;
import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.req.system.FilterPdfModuleRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inv.InvCountOrderResponse;
import com.glxp.api.service.inv.InvCountOrderService;
import com.glxp.api.service.system.SystemPDFModuleService;
import com.glxp.api.service.system.SystemPDFTemplateService;
import com.glxp.api.util.JasperUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
*/
@RestController
public class InvCountOrderController {
@Resource
private InvCountOrderService invCountOrderService;
@Resource
private SystemPDFTemplateService systemPDFTemplateService;
@Resource
private SystemPDFModuleService systemPDFModuleService;
/**
*
*
* @param filterInvCountOrderRequest
* @return
*/
@AuthRuleAnnotation("")
@GetMapping("/inv/count/order/filter")
public BaseResponse filterList(FilterInvCountOrderRequest filterInvCountOrderRequest) {
List<InvCountOrderResponse> list = invCountOrderService.filterList(filterInvCountOrderRequest);
PageInfo<InvCountOrderResponse> pageInfo = new PageInfo<>(list);
PageSimpleResponse<InvCountOrderResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(pageInfo.getList());
return ResultVOUtils.success(pageSimpleResponse);
}
/**
*
*
* @param deleteRequest
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("/inv/count/order/delete")
public BaseResponse delete(@RequestBody DeleteRequest deleteRequest) {
invCountOrderService.deleteOrder(deleteRequest.getId());
return ResultVOUtils.success();
}
/**
*
*
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("/inv/count/order/saveCountOrder")
public BaseResponse saveCountOrder(@RequestBody InvCountOrderEntity invCountOrder, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
if (null == invCountOrder) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
return invCountOrderService.saveCountOrder(invCountOrder);
}
/**
*
*
* @param id
* @return
*/
@AuthRuleAnnotation("")
@GetMapping("/inv/count/order/submitAudit")
public BaseResponse submitAudit(String id) {
if (StrUtil.isBlank(id)) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
return invCountOrderService.submitAudit(id);
}
/**
*
*
* @param filterInvCountOrderRequest
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("/invCount/order/updateCountOrderStatus")
public BaseResponse updateCountOrderStatus(@RequestBody FilterInvCountOrderRequest filterInvCountOrderRequest) {
if (null == filterInvCountOrderRequest || StrUtil.isBlank(filterInvCountOrderRequest.getId()) || null == filterInvCountOrderRequest.getStatus()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
return invCountOrderService.updateCountOrderStatus(filterInvCountOrderRequest.getId(), filterInvCountOrderRequest.getStatus());
}
/**
*
*
* @param inspectionPDFTemplateRequest
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("/invCount/order/verifyTemplateFile")
public BaseResponse verifyTemplateFile(@RequestBody InspectionPDFTemplateRequest inspectionPDFTemplateRequest) {
if (null == inspectionPDFTemplateRequest) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空!");
}
//查询模板文件是否存在
FilterPdfModuleRequest systemPDFModuleRequest = new FilterPdfModuleRequest();
systemPDFModuleRequest.setId(inspectionPDFTemplateRequest.getModuleId());
SystemPDFModuleEntity systemPDFModule = systemPDFModuleService.findSystemPDFModule(systemPDFModuleRequest);
if (null == systemPDFModule) {
return ResultVOUtils.error(ResultEnum.DATA_NOT, "所属模块错误");
}
SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById(String.valueOf(systemPDFModule.getTemplateId()));
if (null == systemPDFTemplateEntity) {
return ResultVOUtils.error(ResultEnum.DATA_NOT, "模板错误");
}
return ResultVOUtils.success(systemPDFModule.getTemplateId());
}
/**
*
*
* @param invCountOrderPrintRequest
* @param request
* @param response
* @throws Exception
*/
@AuthRuleAnnotation("")
@PostMapping("/invCount/order/printOrder")
public void printOrder(@RequestBody InvCountOrderPrintRequest invCountOrderPrintRequest, HttpServletRequest request, HttpServletResponse response) throws Exception {
SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById(invCountOrderPrintRequest.getTemplateId());
//打印单号标签
Map<String, Object> data = new HashMap<>(1);
data.put("orderId", invCountOrderPrintRequest.getOrderId());
Map<String, List<Map<String, Object>>> printData = new HashMap<>(1);
printData.put("data", Arrays.asList(data));
JasperUtils.jasperReport(request, response, JSONUtil.toJsonStr(printData), systemPDFTemplateEntity.getPath(), "pdf");
}
//------------------------------------------------------手持终端接口---------------------------------------------------------------
/**
*
*
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("/invCount/order/saveCountOrderForPDA")
public BaseResponse saveCountOrderForPDA(@RequestBody @Valid AddInvCountOrderSaveRequest addInvCountOrderSaveRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
return invCountOrderService.saveCountOrderForPDA(addInvCountOrderSaveRequest);
}
}

@ -0,0 +1,75 @@
package com.glxp.api.controller.inv;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.inv.InvCountOrderDetailEntity;
import com.glxp.api.req.inv.FilterInvCountOrderDetailRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.inv.InvCountOrderDetailResponse;
import com.glxp.api.service.inv.InvCountOrderDetailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
*
*/
@Slf4j
@RestController
public class InvCountOrderDetailController {
@Resource
private InvCountOrderDetailService invCountOrderDetailService;
/**
*
*
* @return
*/
@GetMapping("/inv/count/order/detail/filter")
public BaseResponse filterList(FilterInvCountOrderDetailRequest detailRequest) {
List<InvCountOrderDetailResponse> list = invCountOrderDetailService.filterCountDetail(detailRequest);
PageInfo<InvCountOrderDetailResponse> pageInfo = new PageInfo<>(list);
PageSimpleResponse<InvCountOrderDetailResponse> pageSimpleResponse = new PageSimpleResponse<>();
pageSimpleResponse.setTotal(pageInfo.getTotal());
pageSimpleResponse.setList(pageInfo.getList());
return ResultVOUtils.success(pageSimpleResponse);
}
/**
*
*
* @param detailRequest
* @return
*/
@PostMapping("/inv/count/order/detail/deleteOrderDetail")
public BaseResponse deleteOrderDetail(@RequestBody FilterInvCountOrderDetailRequest detailRequest) {
if (null == detailRequest || null == detailRequest.getId()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
return invCountOrderDetailService.deleteOrderDetail(detailRequest);
}
/**
*
*
* @param invCountOrderDetail
* @return
*/
@PostMapping("/inv/count/order/detail/addCountOrderDetail")
public BaseResponse addCountOrderDetail(@RequestBody InvCountOrderDetailEntity invCountOrderDetail) {
if (null == invCountOrderDetail || StrUtil.isBlank(invCountOrderDetail.getOrderIdFk()) || StrUtil.isBlank(invCountOrderDetail.getRelId())) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
return invCountOrderDetailService.addCountOrderDetail(invCountOrderDetail);
}
}

@ -0,0 +1,79 @@
package com.glxp.api.dao.inv;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inv.InvCountCodesEntity;
import com.glxp.api.req.inv.FilterInvCountCodesRequest;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Dao
*/
public interface InvCountCodesDao extends BaseMapper<InvCountCodesEntity> {
/**
*
*
* @param orderId
*/
void deleteByOrderId(@Param("orderId") String orderId);
/**
*
*
* @param codesRequest
* @return
*/
List<InvCountCodesEntity> filterList(FilterInvCountCodesRequest codesRequest);
/**
* ID
*
* @param orderIdFk
* @return
*/
Long countByOrderIdFk(@Param("orderIdFk") String orderIdFk);
/**
*
*
* @param orderIdFk
* @return
*/
Long countByOrderId(@Param("orderIdFk") String orderIdFk);
/**
*
*
* @param code
* @param orderIdFk
* @return
*/
Long selectCountByCodeAndOrderId(@Param("code") String code, @Param("orderIdFk") String orderIdFk);
/**
*
*
* @param orderId
*/
void resetCountFiledValue(@Param("orderId") String orderId);
/**
* ID
*
* @param orderIdFk
* @param productId
* @return
*/
List<InvCountCodesEntity> selectByOrderIdAndProductId(@Param("orderIdFk") String orderIdFk, @Param("productId") String productId);
/**
*
*
* @param codesRequest
* @return
*/
List<String> selectCodes(FilterInvCountCodesRequest codesRequest);
}

@ -0,0 +1,63 @@
package com.glxp.api.dao.inv;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inv.InvCountOrderEntity;
import com.glxp.api.req.inv.FilterInvCountOrderRequest;
import com.glxp.api.res.inv.InvCountOrderResponse;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Dao
*/
public interface InvCountOrderDao extends BaseMapper<InvCountOrderEntity> {
/***
*
* @param filterInvCountOrderRequest
* @return
*/
List<InvCountOrderResponse> filterList(FilterInvCountOrderRequest filterInvCountOrderRequest);
/**
* id
*
* @param id
* @return
*/
String selectOrderIdById(@Param("id") String id);
/**
*
*
* @param deptCode
* @param invCode
* @param invSpaceCode
* @return
*/
Integer countBySpaceCode(@Param("deptCode") String deptCode, @Param("invCode") String invCode, @Param("invSpaceCode") String invSpaceCode);
/**
*
*
* @param invCountOrder
*/
void updateByOrderId(InvCountOrderEntity invCountOrder);
/**
*
*
* @param orderId
* @return
*/
InvCountOrderEntity selectByOrderId(@Param("orderId") String orderId);
/**
*
*
* @param orderId
*/
void deleteByOrderId(@Param("orderId") String orderId);
}

@ -0,0 +1,86 @@
package com.glxp.api.dao.inv;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inv.InvCountOrderDetailEntity;
import com.glxp.api.req.inv.FilterInvCountOrderDetailRequest;
import com.glxp.api.res.inv.InvCountOrderDetailResponse;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Dao
*/
public interface InvCountOrderDetailDao extends BaseMapper<InvCountOrderDetailEntity> {
/**
*
*
* @param orderId
*/
void deleteByOrderId(@Param("orderId") String orderId);
/**
*
*
* @param detailRequest
* @return
*/
List<InvCountOrderDetailEntity> filterList(FilterInvCountOrderDetailRequest detailRequest);
/**
* ID
*
* @param orderIdFk
* @return
*/
Long countByOrderIdFk(@Param("orderIdFk") String orderIdFk);
/**
*
*
* @param detailRequest
* @return
*/
List<InvCountOrderDetailResponse> filterCountDetail(FilterInvCountOrderDetailRequest detailRequest);
/**
* ID
*
* @param orderIdFk
* @param productId
*/
void deleteByOrderIdAndProductId(@Param("orderIdFk") String orderIdFk, @Param("productId") String productId);
/**
* DI
*
* @param orderIdFk
* @param nameCode
* @return
*/
InvCountOrderDetailEntity selectOrderDetail(@Param("orderIdFk") String orderIdFk, @Param("nameCode") String nameCode, @Param("batchNo") String batchNo, @Param("produceDate") String produceDate, @Param("expireDate") String expireDate);
/**
*
*
* @param orderId
* @return
*/
List<InvCountOrderDetailEntity> selectByOrderId(@Param("orderId") String orderId);
/**
*
*
* @param orderId
*/
void resetCountFiledValue(@Param("orderId") String orderId);
/**
*
*
* @param list
*/
int updateBatch(List<InvCountOrderDetailEntity> list);
}

@ -5,6 +5,7 @@ import com.glxp.api.entity.inv.InvProductEntity;
import com.glxp.api.req.inv.FilterInvProductRequest; import com.glxp.api.req.inv.FilterInvProductRequest;
import com.glxp.api.res.inv.InvProductResponse; import com.glxp.api.res.inv.InvProductResponse;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -34,4 +35,16 @@ public interface InvProductDao extends BaseMapperPlus<InvProductDao, InvProductE
* @return * @return
*/ */
List<InvProductResponse> getMAInvProducts(FilterInvProductRequest filterInvProductRequest); List<InvProductResponse> getMAInvProducts(FilterInvProductRequest filterInvProductRequest);
/**
* ID
*
* @param relId ID
* @param batchNo
* @param deptCode
* @param invCode
* @param invSpaceCode
* @return
*/
InvProductEntity selectProductInfo(@Param("relId") String relId, @Param("batchNo") String batchNo, @Param("deptCode") String deptCode, @Param("invCode") String invCode, @Param("invSpaceCode") String invSpaceCode);
} }

@ -0,0 +1,71 @@
package com.glxp.api.entity.inv;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
*
*/
@Data
@TableName(value = "inv_count_codes")
public class InvCountCodesEntity {
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
* ID
*/
@TableField(value = "orderIdFk")
private String orderIdFk;
/**
* ID
*/
@TableField(value = "relId")
private String relId;
/**
*
*/
@TableField(value = "code")
private String code;
/**
* 0 1
*/
@TableField(value = "`status`")
private Integer status;
/**
*
*/
@TableField(value = "batchNo")
private String batchNo;
/**
*
*/
@TableField(value = "`count`")
private Integer count;
public static final String COL_ID = "id";
public static final String COL_ORDERIDFK = "orderIdFk";
public static final String COL_RELID = "relId";
public static final String COL_CODE = "code";
public static final String COL_STATUS = "status";
public static final String COL_BATCHNO = "batchNo";
public static final String COL_COUNT = "count";
}

@ -0,0 +1,119 @@
package com.glxp.api.entity.inv;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
*
*/
@Data
@TableName(value = "inv_count_order_detail")
public class InvCountOrderDetailEntity {
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
*
*/
@TableField(value = "orderIdFk")
private String orderIdFk;
/**
* ID
*/
@TableField(value = "relId")
private String relId;
/**
* DI
*/
@TableField(value = "nameCode")
private String nameCode;
/**
*
*/
@TableField(value = "batchNo")
private String batchNo;
/**
*
*/
@TableField(value = "produceDate")
private String produceDate;
/**
*
*/
@TableField(value = "expireDate")
private String expireDate;
/**
*
*/
@TableField(value = "serialNo")
private String serialNo;
/**
*
*/
@TableField(value = "countNum")
private Integer countNum;
/**
*
*/
@TableField(value = "invNum")
private Integer invNum;
/**
*
*/
@TableField(value = "profitNum")
private Integer profitNum;
/**
*
*/
@TableField(value = "lossNum")
private Integer lossNum;
/**
* 0 1
*/
@TableField(value = "`status`")
private Integer status;
public static final String COL_ID = "id";
public static final String COL_ORDERIDFK = "orderIdFk";
public static final String COL_RELID = "relId";
public static final String COL_NAMECODE = "nameCode";
public static final String COL_BATCHNO = "batchNo";
public static final String COL_PRODUCEDATE = "produceDate";
public static final String COL_EXPIREDATE = "expireDate";
public static final String COL_SERIALNO = "serialNo";
public static final String COL_COUNTNUM = "countNum";
public static final String COL_INVNUM = "invNum";
public static final String COL_PROFITNUM = "profitNum";
public static final String COL_LOSSNUM = "lossNum";
public static final String COL_STATUS = "status";
}

@ -0,0 +1,137 @@
package com.glxp.api.entity.inv;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
*
*/
@Data
@TableName(value = "inv_count_order")
public class InvCountOrderEntity {
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
/**
*
*/
@TableField(value = "orderId")
private String orderId;
/**
*
*/
@TableField(value = "deptCode")
private String deptCode;
/**
*
*/
@TableField(value = "invCode")
private String invCode;
/**
*
*/
@TableField(value = "invSpaceCode")
private String invSpaceCode;
/**
* 使 ,
*/
@TableField(value = "inOrderIds")
private String inOrderIds;
/**
* 使 ,
*/
@TableField(value = "outOrderIds")
private String outOrderIds;
/**
* 0 1 2
*/
@TableField(value = "countType")
private Integer countType;
/**
* 0 1 2
*/
@TableField(value = "`status`")
private Integer status;
/**
* ID
*/
@TableField(value = "`createUser`")
private String createUser;
/**
*
*/
@TableField(value = "createTime")
private Date createTime;
/**
*
*/
@TableField(value = "updateTime")
private Date updateTime;
/**
* ID
*/
@TableField(value = "auditUser")
private String auditUser;
/**
*
*/
@TableField(value = "auditTime")
private Date auditTime;
/**
*
*/
@TableField(value = "remark")
private String remark;
public static final String COL_ID = "id";
public static final String COL_ORDERID = "orderId";
public static final String COL_DEPTCODE = "deptCode";
public static final String COL_INVCODE = "invCode";
public static final String COL_INVSPACECODE = "invSpaceCode";
public static final String COL_INORDERIDS = "inOrderIds";
public static final String COL_OUTORDERIDS = "outOrderIds";
public static final String COL_COUNTTYPE = "countType";
public static final String COL_STATUS = "status";
public static final String COL_CREATEUSER = "createUser";
public static final String COL_CREATETIME = "createTime";
public static final String COL_UPDATETIME = "updateTime";
public static final String COL_AUDITUSER = "auditUser";
public static final String COL_AUDITTIME = "auditTime";
public static final String COL_REMARK = "remark";
}

@ -0,0 +1,28 @@
package com.glxp.api.req.inv;
import com.glxp.api.entity.inv.InvCountCodesEntity;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
*
*/
@Data
public class AddInvCountOrderSaveRequest {
/**
*
*/
@NotBlank(message = "盘点单号为空")
private String orderId;
/**
*
*/
@NotEmpty(message = "盘点产品不能为空")
private List<InvCountCodesEntity> countCodeList;
}

@ -0,0 +1,37 @@
package com.glxp.api.req.inv;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
/**
*
*/
@Data
public class FilterInvCountCodesRequest extends ListPageRequest {
/**
*
*/
private String orderIdFk;
/**
* ID
*/
private String relId;
/**
*
*/
private String batchNo;
/**
*
*/
private String code;
/**
*
*/
private Integer status;
}

@ -0,0 +1,28 @@
package com.glxp.api.req.inv;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
/**
*
*/
@Data
public class FilterInvCountOrderDetailRequest extends ListPageRequest {
/**
* ID
*/
private Integer id;
/**
*
*/
private String orderIdFk;
/**
* 0 1 2
*/
private Integer status;
}

@ -0,0 +1,47 @@
package com.glxp.api.req.inv;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
/**
*
*/
@Data
public class FilterInvCountOrderRequest extends ListPageRequest {
/**
* id
*/
private String id;
/**
*
*/
private String orderId;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
/**
*
*/
private String invSpaceCode;
/**
* ID
*/
private String customerId;
/**
* 0 1 2
*/
private Integer status;
}

@ -0,0 +1,21 @@
package com.glxp.api.req.inv;
import lombok.Data;
/**
*
*/
@Data
public class InvCountOrderPrintRequest {
/**
*
*/
private String orderId;
/**
* ID
*/
private String templateId;
}

@ -0,0 +1,96 @@
package com.glxp.api.res.inv;
import lombok.Data;
/**
*
*/
@Data
public class InvCountOrderDetailResponse {
/**
* id
*/
private Integer id;
/**
*
*/
private String orderIdFk;
/**
* ID
*/
private String relId;
/**
* DI
*/
private String nameCode;
/**
*
*/
private String batchNo;
/**
*
*/
private String produceDate;
/**
*
*/
private String expireDate;
/**
*
*/
private String serialNo;
/**
*
*/
private Integer countNum;
/**
*
*/
private Integer invNum;
/**
*
*/
private Integer profitNum;
/**
*
*/
private Integer lossNum;
/**
* 0 1
*/
private Integer status;
/**
*
*/
private String productName;
/**
*
*/
private String ggxh;
/**
* /
*/
private String zczbhhzbapzbh;
/**
*
*/
private String ylqxzcrbarmc;
}

@ -0,0 +1,113 @@
package com.glxp.api.res.inv;
import lombok.Data;
import java.util.Date;
/**
*
*/
@Data
public class InvCountOrderResponse {
/**
* id
*/
private Integer id;
/**
*
*/
private String orderId;
/**
*
*/
private String deptCode;
/**
*
*/
private String invCode;
/**
*
*/
private String invSpaceCode;
/**
* 使 ,
*/
private String inOrderIds;
/**
* 使 ,
*/
private String outOrderIds;
/**
* 0 1 2
*/
private Integer countType;
/**
* 0 1 2
*/
private Integer status;
/**
* ID
*/
private String createUser;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
* ID
*/
private String auditUser;
/**
*
*/
private Date auditTime;
/**
*
*/
private String remark;
/**
*
*/
private String deptName;
/**
*
*/
private String invName;
/**
*
*/
private String invSpaceName;
/**
*
*/
private String createUserName;
/**
*
*/
private String auditUserName;
}

@ -0,0 +1,46 @@
package com.glxp.api.service.inv;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.entity.inv.InvCountCodesEntity;
import com.glxp.api.req.inv.FilterInvCountCodesRequest;
import java.util.List;
/**
* Service
*/
public interface InvCountCodesService {
/**
*
*
* @param codesRequest
* @return
*/
List<InvCountCodesEntity> filterList(FilterInvCountCodesRequest codesRequest);
/**
*
*
* @param codesRequest
* @return
*/
BaseResponse deleteCode(FilterInvCountCodesRequest codesRequest);
/**
*
*
* @param invCountCodes
* @return
*/
BaseResponse addCode(InvCountCodesEntity invCountCodes);
/**
*
*
* @param orderIdFk
* @return
*/
Long getCountOrderCodesNum(String orderIdFk);
}

@ -0,0 +1,40 @@
package com.glxp.api.service.inv;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.entity.inv.InvCountOrderDetailEntity;
import com.glxp.api.req.inv.FilterInvCountOrderDetailRequest;
import com.glxp.api.res.inv.InvCountOrderDetailResponse;
import java.util.List;
/**
* Service
*/
public interface InvCountOrderDetailService {
List<InvCountOrderDetailEntity> filterList(FilterInvCountOrderDetailRequest detailRequest);
/**
*
*
* @return
*/
List<InvCountOrderDetailResponse> filterCountDetail(FilterInvCountOrderDetailRequest detailRequest);
/**
*
*
* @param detailRequest
* @return
*/
BaseResponse deleteOrderDetail(FilterInvCountOrderDetailRequest detailRequest);
/**
*
*
* @param invCountOrderDetail
* @return
*/
BaseResponse addCountOrderDetail(InvCountOrderDetailEntity invCountOrderDetail);
}

@ -0,0 +1,63 @@
package com.glxp.api.service.inv;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.entity.inv.InvCountOrderEntity;
import com.glxp.api.req.inv.AddInvCountOrderSaveRequest;
import com.glxp.api.req.inv.FilterInvCountOrderRequest;
import com.glxp.api.res.inv.InvCountOrderResponse;
import java.util.List;
/**
* Service
*/
public interface InvCountOrderService {
/**
*
*
* @param filterInvCountOrderRequest
* @return
*/
List<InvCountOrderResponse> filterList(FilterInvCountOrderRequest filterInvCountOrderRequest);
/**
*
*
* @param id
*/
void deleteOrder(String id);
/**
*
*
* @param invCountOrder
*/
BaseResponse saveCountOrder(InvCountOrderEntity invCountOrder);
/**
*
*
* @param id
* @return
*/
BaseResponse submitAudit(String id);
/**
*
*
* @param id
* @param status
* @return
*/
BaseResponse updateCountOrderStatus(String id, Integer status);
/**
*
*
* @param addInvCountOrderSaveRequest
* @return
*/
BaseResponse saveCountOrderForPDA(AddInvCountOrderSaveRequest addInvCountOrderSaveRequest);
}

@ -0,0 +1,125 @@
package com.glxp.api.service.inv.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.dao.basic.UdiRelevanceDao;
import com.glxp.api.dao.inv.InvCountCodesDao;
import com.glxp.api.dao.inv.InvCountOrderDetailDao;
import com.glxp.api.entity.basic.UdiEntity;
import com.glxp.api.entity.inv.InvCountCodesEntity;
import com.glxp.api.entity.inv.InvCountOrderDetailEntity;
import com.glxp.api.req.inv.FilterInvCountCodesRequest;
import com.glxp.api.service.inv.InvCountCodesService;
import com.glxp.api.util.udi.FilterUdiUtils;
import com.glxp.api.util.udi.UdiCalCountUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class InvCountCodesServiceImpl implements InvCountCodesService {
@Resource
private InvCountCodesDao invCountCodesDao;
@Resource
private InvCountOrderDetailDao invCountOrderDetailDao;
@Resource
private UdiRelevanceDao udiRelevanceDao;
@Resource
private UdiCalCountUtil udiCalCountUtil;
@Override
public List<InvCountCodesEntity> filterList(FilterInvCountCodesRequest codesRequest) {
if (null == codesRequest) {
return Collections.emptyList();
}
if (null != codesRequest.getPage() && null != codesRequest.getLimit()) {
PageHelper.offsetPage((codesRequest.getPage() - 1) * codesRequest.getLimit(), codesRequest.getLimit());
}
return invCountCodesDao.filterList(codesRequest);
}
@Override
public BaseResponse deleteCode(FilterInvCountCodesRequest codesRequest) {
//查询盘点单据码详情
List<InvCountCodesEntity> list = invCountCodesDao.filterList(codesRequest);
if (CollUtil.isEmpty(list)) {
return ResultVOUtils.error(ResultEnum.DATA_NOT);
}
UdiEntity udi = FilterUdiUtils.getUdi(list.get(0).getCode());
InvCountOrderDetailEntity invCountOrderDetail = invCountOrderDetailDao.selectOrderDetail(list.get(0).getOrderIdFk(), udi.getUdi(), udi.getBatchNo(), udi.getProduceDate(), udi.getExpireDate());
InvCountCodesEntity countCodes = list.get(0);
if (countCodes.getCount() == 1) {
//条码数量等于1删除条码
invCountCodesDao.deleteById(list.get(0).getId());
} else {
//条码数量大于1将条码数量 -1
countCodes.setCount(countCodes.getCount() - 1);
invCountCodesDao.updateById(countCodes);
}
//将此单据详情的盘点数量 - 1
invCountOrderDetail.setCountNum(invCountOrderDetail.getCountNum() - udiCalCountUtil.getActCount(udi.getUdi()));
invCountOrderDetailDao.updateById(invCountOrderDetail);
return ResultVOUtils.success();
}
@Override
public BaseResponse addCode(InvCountCodesEntity invCountCodes) {
//解析条码
UdiEntity udi = FilterUdiUtils.getUdi(invCountCodes.getCode());
//查询单据详情,是否包含此产品
InvCountOrderDetailEntity invCountOrderDetail = invCountOrderDetailDao.selectOrderDetail(invCountCodes.getOrderIdFk(), udi.getUdi(), udi.getBatchNo(), udi.getProduceDate(), udi.getExpireDate());
if (null == invCountOrderDetail) {
return ResultVOUtils.error(ResultEnum.DATA_NOT, "当前仓库或货位不存在此产品");
}
//判断条码是否重复
FilterInvCountCodesRequest codesRequest = new FilterInvCountCodesRequest();
codesRequest.setOrderIdFk(invCountCodes.getOrderIdFk());
codesRequest.setCode(invCountCodes.getCode());
List<InvCountCodesEntity> codesList = invCountCodesDao.filterList(codesRequest);
if (CollUtil.isEmpty(codesList)) {
//新增条码
invCountCodes.setRelId(invCountOrderDetail.getRelId());
invCountCodes.setBatchNo(udi.getBatchNo());
invCountCodes.setCount(1);
invCountCodesDao.insert(invCountCodes);
} else {
if (StrUtil.isNotBlank(udi.getBatchNo()) && StrUtil.isNotBlank(udi.getSerialNo())) {
//条码为标准条码,批次号和序列号都存在,条码重复
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "条码重复!");
} else if ((StrUtil.isBlank(udi.getBatchNo()) && StrUtil.isBlank(udi.getSerialNo()) || (StrUtil.isNotBlank(udi.getBatchNo()) && StrUtil.isBlank(udi.getSerialNo())))) {
//批次号或序列号,其中一个字段为空,直接修改数量
InvCountCodesEntity countCodes = codesList.get(0);
countCodes.setCount(countCodes.getCount() + 1);
invCountCodesDao.updateById(countCodes);
} else {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "条码重复!");
}
}
//修改码明细
invCountOrderDetail.setCountNum(invCountOrderDetail.getCountNum() + udiCalCountUtil.getActCount(udi.getUdi()));
invCountOrderDetailDao.updateById(invCountOrderDetail);
return ResultVOUtils.success();
}
@Override
public Long getCountOrderCodesNum(String orderIdFk) {
return invCountCodesDao.countByOrderId(orderIdFk);
}
}

@ -0,0 +1,81 @@
package com.glxp.api.service.inv.impl;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.dao.inv.InvCountOrderDao;
import com.glxp.api.dao.inv.InvCountOrderDetailDao;
import com.glxp.api.dao.inv.InvProductDao;
import com.glxp.api.entity.inv.InvCountOrderDetailEntity;
import com.glxp.api.entity.inv.InvCountOrderEntity;
import com.glxp.api.entity.inv.InvProductEntity;
import com.glxp.api.req.inv.FilterInvCountOrderDetailRequest;
import com.glxp.api.res.inv.InvCountOrderDetailResponse;
import com.glxp.api.service.inv.InvCountOrderDetailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class InvCountOrderDetailServiceImpl implements InvCountOrderDetailService {
@Resource
private InvCountOrderDetailDao invCountOrderDetailDao;
@Resource
private InvCountOrderDao invCountOrderDao;
@Resource
private InvProductDao invProductDao;
@Override
public List<InvCountOrderDetailEntity> filterList(FilterInvCountOrderDetailRequest detailRequest) {
if (null == detailRequest) {
return Collections.emptyList();
}
if (null != detailRequest.getPage() && null != detailRequest.getLimit()) {
PageHelper.offsetPage((detailRequest.getPage() - 1) * detailRequest.getLimit(), detailRequest.getLimit());
}
return invCountOrderDetailDao.filterList(detailRequest);
}
@Override
public List<InvCountOrderDetailResponse> filterCountDetail(FilterInvCountOrderDetailRequest detailRequest) {
if (null == detailRequest) {
return Collections.emptyList();
}
if (null != detailRequest.getPage() && null != detailRequest.getLimit()) {
PageHelper.offsetPage((detailRequest.getPage() - 1) * detailRequest.getLimit(), detailRequest.getLimit());
}
return invCountOrderDetailDao.filterCountDetail(detailRequest);
}
@Override
public BaseResponse deleteOrderDetail(FilterInvCountOrderDetailRequest detailRequest) {
InvCountOrderDetailEntity invCountOrderDetail = invCountOrderDetailDao.selectById(detailRequest.getId());
if (null == invCountOrderDetail) {
return ResultVOUtils.error(ResultEnum.DATA_NOT);
}
//删除盘点单据详情
invCountOrderDetailDao.deleteById(detailRequest.getId());
//删除盘点单据详情的条码数据
invCountOrderDetailDao.deleteByOrderIdAndProductId(invCountOrderDetail.getOrderIdFk(), invCountOrderDetail.getRelId());
return ResultVOUtils.success();
}
@Override
public BaseResponse addCountOrderDetail(InvCountOrderDetailEntity invCountOrderDetail) {
//查询单据信息
InvCountOrderEntity invCountOrder = invCountOrderDao.selectByOrderId(invCountOrderDetail.getOrderIdFk());
InvProductEntity invProductEntity = invProductDao.selectProductInfo(invCountOrderDetail.getRelId(), invCountOrderDetail.getBatchNo(), invCountOrder.getDeptCode(), invCountOrder.getInvCode(), invCountOrder.getInvSpaceCode());
invCountOrderDetail.setInvNum(invProductEntity.getInCount() - invProductEntity.getOutCount());
invCountOrderDetail.setCountNum(0);
invCountOrderDetailDao.insert(invCountOrderDetail);
return ResultVOUtils.success();
}
}

@ -0,0 +1,233 @@
package com.glxp.api.service.inv.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.Constant;
import com.glxp.api.dao.basic.BasicBusTypeChangeDao;
import com.glxp.api.dao.basic.BasicBussinessTypeDao;
import com.glxp.api.dao.basic.BasicCorpDao;
import com.glxp.api.dao.inout.IoCodeDao;
import com.glxp.api.dao.inout.IoCodeTempDao;
import com.glxp.api.dao.inout.IoOrderDao;
import com.glxp.api.dao.inv.InvCountCodesDao;
import com.glxp.api.dao.inv.InvCountOrderDao;
import com.glxp.api.dao.inv.InvCountOrderDetailDao;
import com.glxp.api.dao.inv.InvProductDetailDao;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.inv.InvCountCodesEntity;
import com.glxp.api.entity.inv.InvCountOrderDetailEntity;
import com.glxp.api.entity.inv.InvCountOrderEntity;
import com.glxp.api.req.inv.AddInvCountOrderSaveRequest;
import com.glxp.api.req.inv.FilterInvCountOrderRequest;
import com.glxp.api.res.inv.InvCountOrderResponse;
import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.basic.CompanyProductsRelService;
import com.glxp.api.service.inv.InvCountCodesService;
import com.glxp.api.service.inv.InvCountOrderService;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.OrderNoTypeBean;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@Slf4j
@Service
@Transactional(rollbackFor = Exception.class)
public class InvCountOrderServiceImpl implements InvCountOrderService {
@Resource
private InvCountOrderDao invCountOrderDao;
@Resource
private InvCountOrderDetailDao invCountOrderDetailDao;
@Resource
private InvCountCodesDao invCountCodesDao;
@Resource
private GennerOrderUtils gennerOrderUtils;
@Resource
private CustomerService customerService;
@Resource
private InvProductDetailDao invProductDetailDao;
@Resource
private BasicBusTypeChangeDao busTypeChangeDao;
@Resource
private BasicBussinessTypeDao bussinessTypeDao;
@Resource
private BasicCorpDao corpDao;
@Resource
private IoOrderDao orderDao;
@Resource
private IoCodeTempDao codesTempDao;
@Resource
private InvCountCodesService invCountCodesService;
@Resource
private IoCodeDao codesDao;
@Resource
private CompanyProductsRelService companyProductsRelService;
@Override
public List<InvCountOrderResponse> filterList(FilterInvCountOrderRequest filterInvCountOrderRequest) {
if (null == filterInvCountOrderRequest) {
return Collections.emptyList();
}
if (null != filterInvCountOrderRequest.getPage() && null != filterInvCountOrderRequest.getLimit()) {
PageHelper.offsetPage((filterInvCountOrderRequest.getPage() - 1) * filterInvCountOrderRequest.getLimit(), filterInvCountOrderRequest.getLimit());
}
return invCountOrderDao.filterList(filterInvCountOrderRequest);
}
@Override
public void deleteOrder(String id) {
String orderId = invCountOrderDao.selectOrderIdById(id);
log.info("开始删除盘点单据,盘点单号: {}", orderId);
invCountOrderDao.deleteByOrderId(orderId);
if (invCountOrderDetailDao.countByOrderIdFk(orderId) > 0) {
invCountOrderDetailDao.deleteByOrderId(orderId);
}
if (invCountCodesDao.countByOrderIdFk(orderId) > 0) {
invCountCodesDao.deleteByOrderId(orderId);
}
log.info("盘点单据删除完成");
}
@Override
public BaseResponse saveCountOrder(InvCountOrderEntity invCountOrder) {
//TODO 确认一下盘点单据的部门是由前端选入还是后端获取
if (invCountOrder.getCountType() == 0 || invCountOrder.getCountType() == 2) {
//整库盘点
if (StrUtil.isBlank(invCountOrder.getInvCode())) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "请选择仓库信息!");
}
} else if (invCountOrder.getCountType() == 1) {
//货位盘点
if (StrUtil.isBlank(invCountOrder.getInvCode()) || StrUtil.isBlank(invCountOrder.getInvCode()) || StrUtil.isBlank(invCountOrder.getInvSpaceCode())) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "请选择仓库和货位信息!");
}
}
//封装相关数据
//未提交
invCountOrder.setStatus(0);
if (StrUtil.isBlank(invCountOrder.getOrderId())) {
//生成单据号
String orderId = gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.COUNT_ORDER, "yyyyMMdd"));
//盘点单号
invCountOrder.setOrderId(orderId);
AuthAdmin user = customerService.getUserBean();
invCountOrder.setCreateUser(user.getUserName());
invCountOrder.setCreateTime(new Date());
invCountOrder.setUpdateTime(new Date());
invCountOrderDao.insert(invCountOrder);
} else {
InvCountOrderEntity oldData = invCountOrderDao.selectByOrderId(invCountOrder.getOrderId());
BeanUtil.copyProperties(invCountOrder, oldData, "id", "createTime", "createUser");
oldData.setUpdateTime(new Date());
invCountOrderDao.updateByOrderId(oldData);
}
return ResultVOUtils.success(invCountOrder);
}
@Override
public BaseResponse submitAudit(String id) {
InvCountOrderEntity invCountOrder = invCountOrderDao.selectById(Integer.valueOf(id));
if (null == invCountOrder) {
return ResultVOUtils.error(ResultEnum.DATA_ERROR, "单据不存在");
}
if (invCountOrder.getStatus() != 0) {
return ResultVOUtils.error(ResultEnum.DATA_ERROR, "单据已提交,请勿重复提交");
}
//查询单据详情和码表是否存在,如果无单据详情和条码,不允许提交
Long detailCount = invCountOrderDetailDao.countByOrderIdFk(invCountOrder.getOrderId());
if (detailCount == 0) {
return ResultVOUtils.error(ResultEnum.DATA_ERROR, "请先选择盘点产品");
}
Long codesCount = invCountCodesDao.countByOrderIdFk(invCountOrder.getOrderId());
if (codesCount == 0) {
return ResultVOUtils.error(ResultEnum.DATA_ERROR, "请扫描需要盘点的产品");
}
//更新状态
invCountOrder.setStatus(1);
invCountOrder.setUpdateTime(new Date());
//查询单据详情,计算盘点盈亏状态
List<InvCountOrderDetailEntity> detailList = invCountOrderDetailDao.selectByOrderId(invCountOrder.getOrderId());
for (InvCountOrderDetailEntity invCountOrderDetail : detailList) {
int diff = invCountOrderDetail.getInvNum() - invCountOrderDetail.getCountNum();
if (diff > 0) {
invCountOrderDetail.setLossNum(Math.abs(diff));
//盘亏
invCountOrderDetail.setStatus(0);
} else if (diff < 0) {
invCountOrderDetail.setProfitNum(Math.abs(diff));
//盘盈
invCountOrderDetail.setStatus(1);
} else {
//平衡
invCountOrderDetail.setStatus(2);
}
}
//更新单据信息
invCountOrderDao.updateById(invCountOrder);
//更新单据详情
invCountOrderDetailDao.updateBatch(detailList);
return ResultVOUtils.success();
}
@Override
public BaseResponse updateCountOrderStatus(String id, Integer status) {
InvCountOrderEntity invCountOrder = invCountOrderDao.selectById(Integer.valueOf(id));
invCountOrder.setStatus(status);
invCountOrder.setAuditUser(customerService.getUserBean().getUserName());
invCountOrder.setAuditTime(new Date());
invCountOrder.setUpdateTime(new Date());
if (status == 0) {
//审核不通过
//查询盘点单据详情,清空盘盈/盘亏数值
invCountOrderDetailDao.resetCountFiledValue(invCountOrder.getOrderId());
} else {
//审核通过
//根据单据详情生成相关单据
log.info("单据审核通过,开始生成扫码单据");
ThreadUtil.execAsync(() -> {
countOrderTransfer(invCountOrder);
});
}
invCountOrderDao.updateById(invCountOrder);
return ResultVOUtils.success();
}
//TODO 盘点单据转单逻辑,待完善
private void countOrderTransfer(InvCountOrderEntity invCountOrder) {
}
@Override
public BaseResponse saveCountOrderForPDA(AddInvCountOrderSaveRequest addInvCountOrderSaveRequest) {
InvCountOrderEntity invCountOrder = invCountOrderDao.selectByOrderId(addInvCountOrderSaveRequest.getOrderId());
if (null == invCountOrder) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "此单据不存在");
}
if (invCountOrder.getStatus() != 0) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "此单据不可编辑");
}
//解析条码,修改单据详情,修改单据状态为待审核
invCountOrder.setStatus(1);
invCountOrder.setUpdateTime(new Date());
List<InvCountCodesEntity> countCodeList = addInvCountOrderSaveRequest.getCountCodeList();
for (InvCountCodesEntity invCountCodes : countCodeList) {
invCountCodesService.addCode(invCountCodes);
}
submitAudit(invCountOrder.getId().toString());
return ResultVOUtils.success();
}
}

@ -49,5 +49,11 @@ public class UdiCalCountUtil {
return 1; return 1;
} }
public int getActCount(String nameCode) {
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(nameCode);
int count = getActCount(udiRelevanceResponse);
return count;
}
} }

@ -0,0 +1,79 @@
<?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.glxp.api.dao.inv.InvCountCodesDao">
<delete id="deleteByOrderId">
delete
from inv_count_codes
where orderIdFk = #{orderId}
</delete>
<select id="filterList" resultType="com.glxp.api.entity.inv.InvCountCodesEntity">
select *
from inv_count_codes
<where>
<if test="orderIdFk != null and orderIdFk != ''">
AND orderIdFk = #{orderIdFk}
</if>
<if test="relId != null and relId != ''">
AND relId = #{relId}
</if>
<if test="code != null and code != ''">
AND code like concat('%', #{code}, '%')
</if>
<if test="status != null">
AND status = #{status}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
</where>
</select>
<select id="countByOrderIdFk" resultType="java.lang.Long">
select count(*)
from inv_count_codes
where orderIdFk = #{orderIdFk}
</select>
<select id="countByOrderId" resultType="java.lang.Long">
select sum(count)
from inv_count_codes
where orderIdFk = #{orderIdFk}
</select>
<select id="selectCountByCodeAndOrderId" resultType="java.lang.Long">
select count(*)
from inv_count_codes
where orderIdFk = #{orderIdFk}
and code = #{code}
</select>
<update id="resetCountFiledValue">
update inv_count_codes
set status = null
where orderIdFk = #{orderId}
</update>
<select id="selectByOrderIdAndProductId" resultType="com.glxp.api.entity.inv.InvCountCodesEntity">
select *
from inv_count_codes
where orderIdFk = #{orderIdFk}
and relId = #{productId}
</select>
<select id="selectCodes" resultType="java.lang.String">
select code
from inv_count_codes
<where>
<if test="orderIdFk != null and orderIdFk != ''">
AND orderIdFk = #{orderIdFk}
</if>
<if test="relId != null and relId != ''">
AND relId = #{relId
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
</where>
</select>
</mapper>

@ -0,0 +1,96 @@
<?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.glxp.api.dao.inv.InvCountOrderDao">
<select id="filterList" resultType="com.glxp.api.res.inv.InvCountOrderResponse">
select co.id,
co.orderId,
co.deptCode,
co.invCode,
co.invSpaceCode,
co.invSpaceCode,
co.createUser,
co.createTime,
co.updateTime,
co.auditUser,
co.auditTime,
co.status,
co.remark,
co.inOrderIds,
co.outOrderIds,
co.countType,
(select `name` from auth_dept where code = co.deptCode) deptName,
(select `name` from auth_warehouse where code = co.invCode) invName,
(select `name` from auth_space where code = co.invSpaceCode) invSpaceName
from inv_count_order co
<where>
<if test="invCode != null and invCode != ''">
AND co.invCode = #{invCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND co.invSpaceCode = #{invSpaceCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND co.invSpaceCode = #{invSpaceCode}
</if>
<if test="status != null">
AND co.status = #{status}
</if>
<if test="orderId != null and orderId != ''">
AND co.orderId like concat('%', #{orderId}, '%')
</if>
</where>
order by co.updateTime desc
</select>
<select id="selectOrderIdById" resultType="java.lang.String">
select orderId
from inv_count_order
where id = #{id}
</select>
<select id="countBySpaceCode" resultType="java.lang.Integer">
select count(*)
from inv_count_order
<where>
<if test="deptCode != null and deptCode != ''">
AND deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND invCode = #{invCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND invSpaceCode = #{invSpaceCode}
</if>
</where>
</select>
<update id="updateByOrderId">
update inv_count_order
set deptCode = #{deptCode,jdbcType=VARCHAR},
invCode = #{invCode,jdbcType=VARCHAR},
invSpaceCode = #{invSpaceCode,jdbcType=VARCHAR},
`createUser` = #{createUser,jdbcType=VARCHAR},
createTime = #{createTime,jdbcType=TIMESTAMP},
updateTime = #{updateTime,jdbcType=TIMESTAMP},
auditUser = #{auditUser,jdbcType=VARCHAR},
auditTime = #{auditTime,jdbcType=TIMESTAMP},
`status` = #{status,jdbcType=BOOLEAN},
remark = #{remark,jdbcType=VARCHAR},
inOrderIds = #{inOrderIds,jdbcType=VARCHAR},
outOrderIds = #{outOrderIds,jdbcType=VARCHAR},
countType = #{countType,jdbcType=INTEGER}
where orderId = #{orderId}
</update>
<select id="selectByOrderId" resultType="com.glxp.api.entity.inv.InvCountOrderEntity">
select *
from inv_count_order
where orderId = #{orderId}
</select>
<delete id="deleteByOrderId">
delete
from inv_count_order
where orderId = #{orderId}
</delete>
</mapper>

@ -0,0 +1,150 @@
<?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.glxp.api.dao.inv.InvCountOrderDetailDao">
<delete id="deleteByOrderId">
delete
from inv_count_order_detail
where orderIdFk = #{orderId}
</delete>
<select id="filterList" resultType="com.glxp.api.entity.inv.InvCountOrderDetailEntity">
select *
from inv_count_order_detail
<where>
<if test="orderIdFk != null and orderIdFk != ''">
AND orderIdFk = #{orderIdFk}
</if>
<if test="status != null">
AND status = #{status}
</if>
</where>
</select>
<select id="countByOrderIdFk" resultType="java.lang.Long">
select count(*)
from inv_count_order_detail
where orderIdFk = #{orderIdFk}
</select>
<select id="filterCountDetail" resultType="com.glxp.api.res.inv.InvCountOrderDetailResponse">
select od.*, bp.cpmctymc productName, bp.ggxh, bp.ylqxzcrbarmc, bp.zczbhhzbapzbh
from inv_count_order_detail od
left join basic_udirel bu on od.relId = bu.id
left join basic_products bp on bu.uuid = bp.uuid
where orderIdFk = #{orderIdFk}
group by od.id
</select>
<delete id="deleteByOrderIdAndProductId">
delete
from inv_count_codes
where orderIdFk = #{orderIdFk}
and productId = #{productId}
</delete>
<select id="selectOrderDetail" resultType="com.glxp.api.entity.inv.InvCountOrderDetailEntity">
select *
from inv_count_order_detail
<where>
<if test="nameCode != null and nameCode != ''">
AND nameCode = #{nameCode}
</if>
<if test="orderIdFk != null and orderIdFk != ''">
AND orderIdFk = #{orderIdFk}
</if>
<if test="batchNo != null and batchNo != ''">
AND batchNo = #{batchNo}
</if>
<if test="produceDate != null and produceDate != ''">
AND produceDate = #{produceDate}
</if>
<if test="expireDate != null and expireDate != ''">
AND expireDate = #{expireDate}
</if>
</where>
</select>
<select id="selectByOrderId" resultType="com.glxp.api.entity.inv.InvCountOrderDetailEntity">
select *
from inv_count_order_detail
where orderIdFk = #{orderId}
</select>
<select id="resetCountFiledValue">
update inv_count_order_detail
set profitNum = null,
lossNum = null,
status = null
where orderIdFk = #{orderId}
</select>
<update id="updateBatch" parameterType="java.util.List">
update inv_count_order_detail
<trim prefix="set" suffixOverrides=",">
<trim prefix="orderIdFk = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.orderIdFk,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="relId = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.relId,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="nameCode = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.nameCode,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="batchNo = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.batchNo,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="produceDate = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.produceDate,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="expireDate = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.expireDate,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="serialNo = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.serialNo,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="countNum = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.countNum,jdbcType=INTEGER}
</foreach>
</trim>
<trim prefix="invNum = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.invNum,jdbcType=INTEGER}
</foreach>
</trim>
<trim prefix="profitNum = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.profitNum,jdbcType=INTEGER}
</foreach>
</trim>
<trim prefix="lossNum = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.lossNum,jdbcType=INTEGER}
</foreach>
</trim>
<trim prefix="`status` = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.status,jdbcType=INTEGER}
</foreach>
</trim>
</trim>
where id in
<foreach close=")" collection="list" item="item" open="(" separator=", ">
#{item.id,jdbcType=INTEGER}
</foreach>
</update>
</mapper>

@ -170,4 +170,30 @@
</where> </where>
group by ip.id group by ip.id
</select> </select>
<select id="selectProductInfo" resultType="com.glxp.api.entity.inv.InvProductEntity">
select ip.*
from inv_product ip
left join inv_product_detail ipd on ip.relIdFk = ipd.relId
and ifnull(ip.batchNo, 'empty') = ifnull(ipd.batchNo, 'empty')
and ip.deptCode = ipd.deptCode
and ip.invCode = ipd.invCode
<where>
<if test="relId != null and relId != ''">
AND ip.relIdFk = #{relId}
</if>
<if test="batchNo != null and batchNo != ''">
AND ip.batchNo = #{batchNo}
</if>
<if test="deptCode != null and deptCode != ''">
AND ip.deptCode = #{deptCode}
</if>
<if test="invCode != null and invCode != ''">
AND ip.invCode = #{invCode}
</if>
<if test="invSpaceCode != null and invSpaceCode != ''">
AND ipd.invSpaceCode = #{invSpaceCode}
</if>
</where>
</select>
</mapper> </mapper>

Loading…
Cancel
Save